[PATCH] ath10k: fix unregister deadlock when fw probe fails
Kalle Valo
kvalo at qca.qualcomm.com
Mon Jul 14 06:25:11 PDT 2014
Michal Kazior <michal.kazior at tieto.com> 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 at tieto.com>
Thanks, applied.
--
Kalle Valo
More information about the ath10k
mailing list