Skip to content

Commit 7db47e7

Browse files
ea1davisgregkh
authored andcommitted
media: mc: Clear minor number before put device
[ Upstream commit 8cfc8ce ] The device minor should not be cleared after the device is released. Fixes: 9e14868dc952 ("media: mc: Clear minor number reservation at unregistration time") Cc: [email protected] Reported-by: [email protected] Closes: https://syzkaller.appspot.com/bug?extid=031d0cfd7c362817963f Tested-by: [email protected] Signed-off-by: Edward Adam Davis <[email protected]> Signed-off-by: Sakari Ailus <[email protected]> Signed-off-by: Hans Verkuil <[email protected]> [ moved clear_bit from media_devnode_release callback to media_devnode_unregister before put_device ] Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 394ad21 commit 7db47e7

File tree

1 file changed

+1
-5
lines changed

1 file changed

+1
-5
lines changed

drivers/media/mc/mc-devnode.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ static void media_devnode_release(struct device *cd)
5050
{
5151
struct media_devnode *devnode = to_media_devnode(cd);
5252

53-
mutex_lock(&media_devnode_lock);
54-
/* Mark device node number as free */
55-
clear_bit(devnode->minor, media_devnode_nums);
56-
mutex_unlock(&media_devnode_lock);
57-
5853
/* Release media_devnode and perform other cleanups as needed. */
5954
if (devnode->release)
6055
devnode->release(devnode);
@@ -281,6 +276,7 @@ void media_devnode_unregister(struct media_devnode *devnode)
281276
/* Delete the cdev on this minor as well */
282277
cdev_device_del(&devnode->cdev, &devnode->dev);
283278
devnode->media_dev = NULL;
279+
clear_bit(devnode->minor, media_devnode_nums);
284280
mutex_unlock(&media_devnode_lock);
285281

286282
put_device(&devnode->dev);

0 commit comments

Comments
 (0)