Hi, On Thu, Dec 01, 2016 at 02:02:43PM +0000, Amitkumar Karwar wrote: > > > I could not find async version of cancel_work(). > > > > cancel_work() *is* asynchronous. It does not synchronize with the last > > event, so you won't have the deadlock. (Remember: the synchronous > > version is cancel_work_sync().) > > My bad! What I meant is "I could not find async version of cancel_work_sync()" > cancel_work() isn't available in http://lxr.free-electrons.com/source/kernel/workqueue.c It's in 4.9-rc1 (and it's available at the above link, at least by now). See: commit f72b8792d180948b4b3898374998f5ac8c02e539 Author: Jens Axboe <axboe@xxxxxx> Date: Wed Aug 24 15:51:50 2016 -0600 workqueue: add cancel_work() But anyway: > Anyways, clear_bit() after remove() during card reset would address the problem. Yes, I think that's OK. Brian