au0828_init_tuner() called without dev lock held
Hi Hans and Mauro,
While I was making changes for media token work, I noticed there are several places au0828_init_tuner() gets called without holding dev lock.
vidioc_s_std(), vidioc_g_tuner(), vidioc_s_tuner(), vidioc_streamon() au0828_v4l2_resume()
Some of these might be intended since au0828_init_tuner() invokes s_std. All of these changes including the au0828_init_tuner() itself were added in ea86968fb91471493ccac7d8f2a65bc65db6803b
au0828_v4l2_resume() also does this and this one for sure needs fixing very likely. I am not sure about the others. Thoughts??
-- Shuah
Signature · 4 lines
Shuah Khan Sr. Linux Kernel Developer Samsung Research America (Silicon Valley) [email protected] | (970) 217-8978
Quoted 4 lines · Shuah Khan
Hi Hans and Mauro,
While I was making changes for media token work, I noticed there are several places
au0828_init_tuner()gets called without holding dev lock.
au0828 sets the lock pointer in struct video_device to the dev lock. That means that all v4l2 ioctl calls are serialized in v4l2_ioctl() in v4l2-dev.c. So these calls *do* hold the device lock.
Not au0828_v4l2_resume() though, that's not an ioctl op.
Regards,
Hans
Quoted 13 lines
vidioc_s_std(),vidioc_g_tuner(),vidioc_s_tuner(),vidioc_streamon()au0828_v4l2_resume()Some of these might be intended since
au0828_init_tuner()invokess_std. All of these changes including theau0828_init_tuner()itself were added inea86968fb91471493ccac7d8f2a65bc65db6803b
au0828_v4l2_resume()also does this and this one for sure needs fixing very likely. I am not sure about the others. Thoughts??-- Shuah
Quoted 12 lines · Hans Verkuil
Quoted 4 lines · Shuah Khan
Hi Hans and Mauro,
While I was making changes for media token work, I noticed there are several places
au0828_init_tuner()gets called without holding dev lock.au0828 sets the lock pointer in struct
video_deviceto the dev lock. That means that all v4l2 ioctl calls are serialized inv4l2_ioctl()inv4l2-dev.c. So these calls *do* hold the device lock.Not
au0828_v4l2_resume()though, that's not an ioctl op.
Good. I will go ahead and fix au0828_v4l2_resume() to do it right.
thanks,
-- Shuah
Signature · 4 lines
Shuah Khan Sr. Linux Kernel Developer Samsung Research America (Silicon Valley) [email protected] | (970) 217-8978