]> git.baikalelectronics.ru Git - kernel.git/commit
media: gspca: Kill all URBs before releasing any of them
authorEzequiel Garcia <ezequiel@collabora.com>
Wed, 23 May 2018 20:13:48 +0000 (16:13 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 28 May 2018 20:05:03 +0000 (16:05 -0400)
commit393c01d91b2bcebddef1453563181fa294155137
tree8c1fe015adc7dd0a813ffe2eb9c2a344ceabb9e1
parent9e981c8e60aab986966bd6ef347284c88638d6b6
media: gspca: Kill all URBs before releasing any of them

Some subdrivers access the gspca_dev->urb array in the completion handler.
To prevent use-after-free (actually, NULL dereferences) we need to
synchronously kill all the URBs before we release them.

In particular, this is currently the case for drivers such
as sn9c20x and sonixj, which access the gspca_dev->urb[0]
in the context of completion handler for *any* of the URBs.

This commit changes the destroy_urb implementation, so it kills
all URBs first, and then proceed to set the URBs to NULL in the
array and release them.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/usb/gspca/gspca.c