mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 08:26:59 +00:00
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: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
9390467c2d
commit
354cf00339
1 changed files with 2 additions and 1 deletions
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue