Commit 354cf003 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

media: cec: mark devnode as registered before actually registering it

The cec device node can be used right after it was created, but that
leaves a race condition where the device was created, but devnode->registered
was still false. So an ioctl() would result in an error.

So set it to true before calling cdev_device_add() and to false again if
cdev_device_add returned an error.
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 9390467c
...@@ -128,13 +128,14 @@ static int __must_check cec_devnode_register(struct cec_devnode *devnode, ...@@ -128,13 +128,14 @@ static int __must_check cec_devnode_register(struct cec_devnode *devnode,
devnode->cdev.owner = owner; devnode->cdev.owner = owner;
kobject_set_name(&devnode->cdev.kobj, "cec%d", devnode->minor); kobject_set_name(&devnode->cdev.kobj, "cec%d", devnode->minor);
devnode->registered = true;
ret = cdev_device_add(&devnode->cdev, &devnode->dev); ret = cdev_device_add(&devnode->cdev, &devnode->dev);
if (ret) { if (ret) {
devnode->registered = false;
pr_err("%s: cdev_device_add failed\n", __func__); pr_err("%s: cdev_device_add failed\n", __func__);
goto clr_bit; goto clr_bit;
} }
devnode->registered = true;
return 0; return 0;
clr_bit: clr_bit:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment