Message ID | 166610327042.674422.6146908799669288976.stgit@awfm-02.cornelisnetworks.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [for-rc] IB/hfi1: Correctly move list in sc_disable() | expand |
On Tue, 18 Oct 2022 10:27:50 -0400, Dennis Dalessandro wrote: > From: Dean Luick <dean.luick@cornelisnetworks.com> > > Commit 13bac861952a ("IB/hfi1: Fix abba locking issue with > sc_disable()") incorrectly tries to move a list from one list > head to another. The result is a kernel crash. > > The crash is triggered when a link goes down and there are > waiters for a send to complete. The following signature is > seen: > > [...] Applied, thanks! [1/1] IB/hfi1: Correctly move list in sc_disable() https://git.kernel.org/rdma/rdma/c/ffad65329ba89c Best regards,
diff --git a/drivers/infiniband/hw/hfi1/pio.c b/drivers/infiniband/hw/hfi1/pio.c index 3d42bd2b36bd..51ae58c02b15 100644 --- a/drivers/infiniband/hw/hfi1/pio.c +++ b/drivers/infiniband/hw/hfi1/pio.c @@ -913,8 +913,7 @@ void sc_disable(struct send_context *sc) spin_unlock(&sc->release_lock); write_seqlock(&sc->waitlock); - if (!list_empty(&sc->piowait)) - list_move(&sc->piowait, &wake_list); + list_splice_init(&sc->piowait, &wake_list); write_sequnlock(&sc->waitlock); while (!list_empty(&wake_list)) { struct iowait *wait;