media: radio: wl1273: fix interrupt masking on release

commit 1091eb8306 upstream.

If a process is interrupted while accessing the radio device and the
core lock is contended, release() could return early and fail to update
the interrupt mask.

Note that the return value of the v4l2 release file operation is
ignored.

Fixes: 87d1a50ce4 ("[media] V4L2: WL1273 FM Radio: TI WL1273 FM radio driver")
Cc: stable <stable@vger.kernel.org>     # 2.6.38
Cc: Matti Aaltonen <matti.j.aaltonen@nokia.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold
2019-10-10 10:13:32 -03:00
committed by Greg Kroah-Hartman
parent 9685a82a81
commit 8d95d0812b

View File

@ -1149,8 +1149,7 @@ static int wl1273_fm_fops_release(struct file *file)
if (radio->rds_users > 0) { if (radio->rds_users > 0) {
radio->rds_users--; radio->rds_users--;
if (radio->rds_users == 0) { if (radio->rds_users == 0) {
if (mutex_lock_interruptible(&core->lock)) mutex_lock(&core->lock);
return -EINTR;
radio->irq_flags &= ~WL1273_RDS_EVENT; radio->irq_flags &= ~WL1273_RDS_EVENT;