Michal Kazior <michal.kazior@xxxxxxxxx> writes: > If firmware probing worker failed it called > device_release_driver() which synchronously called > remove() pci callback. The callback in turn waited > for the worker that called it to finish resulting > in a deadlock. > > Waiting for a completion instead of a worker, like > some other drivers do, doesn't seem like the best > idea either: > > Syscall Worker > > probe_fw() > rmmod > dev_lock() > pci->remove() > wait_for_completion() > complete_all() > device_release_driver() > dev_lock() > [sleep] > free(ar) > dev_unlock() > [resume] > > There's no guarantee that Worker upon resuming can > still access any data/code of the module. > > Leaving device bound to a driver is not as harmful > as deadlocking so remove the call to > device_release_driver() while a proper solution is > figured out. > > Signed-off-by: Michal Kazior <michal.kazior@xxxxxxxxx> Thanks, applied. -- Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html