Message ID | 20220215210511.28303-3-bvanassche@acm.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | Fix a deadlock in the ib_srp driver | expand |
On Tue, Feb 15, 2022 at 01:05:11PM -0800, Bart Van Assche wrote: > Remove the flush_workqueue(system_long_wq) call since flushing > system_long_wq is deadlock-prone and since that call is redundant. > > Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> > Fixes: ef6c49d87c34 ("IB/srp: Eliminate state SRP_TARGET_DEAD") > Reported-by: syzbot+831661966588c802aae9@syzkaller.appspotmail.com > Signed-off-by: Bart Van Assche <bvanassche@acm.org> > --- > drivers/infiniband/ulp/srp/ib_srp.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c index e174e853f8a4..285b766e4e70 100644 --- a/drivers/infiniband/ulp/srp/ib_srp.c +++ b/drivers/infiniband/ulp/srp/ib_srp.c @@ -4047,9 +4047,11 @@ static void srp_remove_one(struct ib_device *device, void *client_data) spin_unlock(&host->target_lock); /* - * Wait for tl_err and target port removal tasks. + * srp_queue_remove_work() queues a call to + * srp_remove_target(). The latter function cancels + * target->tl_err_work so waiting for the remove works to + * finish is sufficient. */ - flush_workqueue(system_long_wq); flush_workqueue(srp_remove_wq); kfree(host);
Remove the flush_workqueue(system_long_wq) call since flushing system_long_wq is deadlock-prone and since that call is redundant. Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Fixes: ef6c49d87c34 ("IB/srp: Eliminate state SRP_TARGET_DEAD") Reported-by: syzbot+831661966588c802aae9@syzkaller.appspotmail.com Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/infiniband/ulp/srp/ib_srp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)