summaryrefslogtreecommitdiff
path: root/include/drm
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2012-01-24 18:54:21 +0100
committerSimone Willett <swillett@nvidia.com>2012-02-09 18:20:16 -0800
commit62471cd2ebd7adbb9c360bdb7e2970a59e0745f0 (patch)
tree6d8ae388432c4305665e858a5457ae493d379a54 /include/drm
parent296c9ca65997b53955ed418a2a43067310c36602 (diff)
drm: Fix authentication kernel crash
commit 598781d71119827b454fd75d46f84755bca6f0c6 upstream. If the master tries to authenticate a client using drm_authmagic and that client has already closed its drm file descriptor, either wilfully or because it was terminated, the call to drm_authmagic will dereference a stale pointer into kmalloc'ed memory and corrupt it. Typically this results in a hard system hang. This patch fixes that problem by removing any authentication tokens (struct drm_magic_entry) open for a file descriptor when that file descriptor is closed. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: Icbba107e666306a34a621955458091410da3956a Reviewed-on: http://git-master/r/79654 Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drmP.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 9b7c2bb4bb44..4397cb062b28 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1325,6 +1325,7 @@ extern int drm_getmagic(struct drm_device *dev, void *data,
struct drm_file *file_priv);
extern int drm_authmagic(struct drm_device *dev, void *data,
struct drm_file *file_priv);
+extern int drm_remove_magic(struct drm_master *master, drm_magic_t magic);
/* Cache management (drm_cache.c) */
void drm_clflush_pages(struct page *pages[], unsigned long num_pages);