[media] uvcvideo: Fix open/close race condition
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 26 Apr 2013 01:28:51 +0000 (22:28 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 8 Jun 2013 22:51:16 +0000 (19:51 -0300)
commit17706f5653a90ff277b5b36c2eb60ff872df5e7a
tree110fbcca442fc9801187db3b73de32897fe9b9a0
parentc2a273b24f2c82184cc0f04ba3a61da51c84724b
[media] uvcvideo: Fix open/close race condition

Maintaining the users count using an atomic variable makes sure that
access to the counter won't be racy, but doesn't serialize access to the
operations protected by the counter. This creates a race condition that
could result in the status URB being submitted multiple times.
Use a mutex to protect the users count and serialize access to the
status start and stop operations.

Reported-by: Shawn Nematbakhsh <shawnn@chromium.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/uvc/uvc_driver.c
drivers/media/usb/uvc/uvc_status.c
drivers/media/usb/uvc/uvc_v4l2.c
drivers/media/usb/uvc/uvcvideo.h