mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 19:56:16 +07:00
[media] uvcvideo: Fix race of open and suspend in error case
Ming Lei reported: IMO, there is a minor fault in the error handling path of uvc_status_start() inside uvc_v4l2_open(), and the 'users' count should have been decreased before usb_autopm_put_interface(). In theory, a [URB resubmission] warning can be triggered when the device is opened just between usb_autopm_put_interface() and atomic_dec(&stream->dev->users). The fix is trivial. Reported-by: Ming Lei <tom.leiming@gmail.com> Signed-off-by: Oliver Neukum <oneukum@suse.de> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
8c0d44e250
commit
a82a45f653
@ -501,8 +501,8 @@ static int uvc_v4l2_open(struct file *file)
|
||||
if (atomic_inc_return(&stream->dev->users) == 1) {
|
||||
ret = uvc_status_start(stream->dev);
|
||||
if (ret < 0) {
|
||||
usb_autopm_put_interface(stream->dev->intf);
|
||||
atomic_dec(&stream->dev->users);
|
||||
usb_autopm_put_interface(stream->dev->intf);
|
||||
kfree(handle);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user