• Mike Isely's avatar
    V4L/DVB (9300): pvrusb2: Fix deadlock problem · c82732a4
    Mike Isely authored
    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: default avatarMike Isely <isely@pobox.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    c82732a4
pvrusb2-hdw.c 126 KB