mirror of
https://github.com/torvalds/linux.git
synced 2024-11-08 21:21:47 +00:00
V4L/DVB (11784): cx88: Fix race condition between cx8800 startup and hald
A power management fix to properly put the xc5000 into low power mode revealed a race condition where hald could detect the creation of the device file and connect to the device while the initial device configuration is still in progress. Lock the core structure so that video_release cannot be called and put the tuner to sleep in the middle of the initial call to cx88_set_tvnorm() in cx8800_initdev() Thanks to Michael Krufky for discovering the issue and providing an environment to test in. Cc: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
b02064caeb
commit
06f837cadb
@ -926,8 +926,10 @@ static int video_release(struct file *file)
|
||||
file->private_data = NULL;
|
||||
kfree(fh);
|
||||
|
||||
mutex_lock(&dev->core->lock);
|
||||
if(atomic_dec_and_test(&dev->core->users))
|
||||
call_all(dev->core, tuner, s_standby);
|
||||
mutex_unlock(&dev->core->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user