diff options
author | Marcin Slusarz <marcin.slusarz@gmail.com> | 2011-11-09 22:20:35 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-11-11 11:05:19 +0000 |
commit | b3e067c0b276197b59046d7095b01b99f98b2821 (patch) | |
tree | 90a260a3a560e0f06398db84ebe3feb27d569128 /drivers/gpu/drm/i915/i915_debugfs.c | |
parent | 3b9832f662d195755e7308f92368d44458268457 (diff) | |
download | op-kernel-dev-b3e067c0b276197b59046d7095b01b99f98b2821.zip op-kernel-dev-b3e067c0b276197b59046d7095b01b99f98b2821.tar.gz |
drm: serialize access to list of debugfs files
Nouveau, when configured with debugfs, creates debugfs files for every
channel, so structure holding list of files needs to be protected from
simultaneous changes by multiple threads.
Without this patch it's possible to hit kernel oops in
drm_debugfs_remove_files just by running a couple of xterms with
looped glxinfo.
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index d14b44e..4f40f1c 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -1506,7 +1506,10 @@ drm_add_fake_info_node(struct drm_minor *minor, node->minor = minor; node->dent = ent; node->info_ent = (void *) key; - list_add(&node->list, &minor->debugfs_nodes.list); + + mutex_lock(&minor->debugfs_lock); + list_add(&node->list, &minor->debugfs_list); + mutex_unlock(&minor->debugfs_lock); return 0; } |