summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuah Khan <shuah@kernel.org>2019-04-01 20:43:18 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-04-22 11:24:33 -0400
commit10cb050459852fd954a5b38c019d2313f3bfb3e2 (patch)
tree563e87f0fee252ea6744cb2e2525e78bd60a35f8
parent898bc40bfcc26abb6e06e960d6d4754c36c58b50 (diff)
media: Clear devnode->media_dev holding media_devnode_lock
Fix media_devnode_unregister() to clear devnode->media_dev while holding media_devnode_lock. media_devnode_register()'s cdev_add_error handling does this correctly. Signed-off-by: Shuah Khan <shuah@kernel.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
-rw-r--r--drivers/media/media-devnode.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/media/media-devnode.c b/drivers/media/media-devnode.c
index 61dc05fcc55c..d5aa30eeff4a 100644
--- a/drivers/media/media-devnode.c
+++ b/drivers/media/media-devnode.c
@@ -291,8 +291,9 @@ void media_devnode_unregister(struct media_devnode *devnode)
mutex_lock(&media_devnode_lock);
/* Delete the cdev on this minor as well */
cdev_device_del(&devnode->cdev, &devnode->dev);
- mutex_unlock(&media_devnode_lock);
devnode->media_dev = NULL;
+ mutex_unlock(&media_devnode_lock);
+
put_device(&devnode->dev);
}