media: mc: mark the media devnode as registered from the, start
Subsystems (3)
This is an automatic generated email to let you know that the following patch were queued:
Subject: media: mc: mark the media devnode as registered from the, start Author: Hans Verkuil <[email protected]> Date: Fri Feb 23 09:46:19 2024 +0100
First the media device node was created, and if successful it was marked as 'registered'. This leaves a small race condition where an application can open the device node and get an error back because the 'registered' flag was not yet set.
Change the order: first set the 'registered' flag, then actually register the media device node. If that fails, then clear the flag.
Signed-off-by Hans Verkuil <[email protected]>
Acked-by Sakari Ailus <[email protected]>
Reviewed-by Laurent Pinchart <[email protected]>
Fixes cf4b9211b568 ("[media] media: Media device node support")
Signed-off-by Sakari Ailus <[email protected]>
drivers/media/mc/mc-devnode.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
---
drivers/media/mc/mc-devnode.c +2 -3
@@ -245,15 +245,14 @@ int __must_check media_devnode_register(struct media_device *mdev,kobject_set_name (&devnode->cdev.kobj,"media%d" , devnode->minor);/* Part 3: Add the media and char device */ +set_bit (MEDIA_FLAG_REGISTERED , &devnode->flags); ret =cdev_device_add (&devnode->cdev, &devnode->dev);if (ret <0 ) { +clear_bit (MEDIA_FLAG_REGISTERED , &devnode->flags);pr_err ("%s: cdev_device_add failed\n" , __func__); goto cdev_add_error; } -/* Part 4: Activate this minor. The char device can now be used. */ -set_bit (MEDIA_FLAG_REGISTERED , &devnode->flags); -return 0 ; cdev_add_error: