]> git.baikalelectronics.ru Git - kernel.git/commit
V4L/DVB (9300): pvrusb2: Fix deadlock problem
authorMike Isely <isely@pobox.com>
Sun, 19 Oct 2008 19:26:05 +0000 (16:26 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 21 Oct 2008 16:20:51 +0000 (14:20 -0200)
commit26bb0a38de680a60babe085ee0c220c4ca15576d
treed2df3398f34b21420b27cc8a2885f7a2888cf53a
parentd3cfc458261235e4cd87a0accfab7620a16464c0
V4L/DVB (9300): pvrusb2: Fix deadlock problem

Fix deadlock problem in 2.6.27 caused by new USB core behavior in
response to a USB device reset request.  With older kernels, the USB
device reset was "in line"; the reset simply took place and the driver
retained its association with the hardware.  However now this reset
triggers a disconnect, and worse still the disconnect callback happens
in the context of the caller who asked for the device reset.  This
results in an attempt by the pvrusb2 driver to recursively take a
mutex it already has, which deadlocks the driver's worker thread.
(Even if the disconnect callback were to happen on a different thread
we'd still have problems however - because while the driver should
survive and correctly disconnect / reconnect, it will then trigger
another device reset during the repeated initialization, which will
then cause another disconect, etc, forever.)  The fix here is simply
to not attempt the device reset (it was of marginal value anyway).

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/pvrusb2/pvrusb2-hdw.c