]> git.baikalelectronics.ru Git - kernel.git/commit
IB/qib: Fix race between qib_error_qp() and receive packet processing
authorRalph Campbell <ralph.campbell@qlogic.com>
Mon, 2 Aug 2010 22:39:30 +0000 (22:39 +0000)
committerRoland Dreier <rolandd@cisco.com>
Tue, 3 Aug 2010 20:59:47 +0000 (13:59 -0700)
commitf464205a01d744f8bea0c36c56ba9bc8d3d76d1e
tree9ab443a2bbddf4296bf4b7cf0914edfed51d86c3
parent4e7a803fb3ddb04cbffd0e79a5b43c3d337fd560
IB/qib: Fix race between qib_error_qp() and receive packet processing

When transitioning a QP to the error state, in progress RWQEs need to
be marked complete.  This also involves releasing the reference count
to the memory regions referenced in the SGEs.  The locking in the
receive packet processing wasn't sufficient to prevent qib_error_qp()
from modifying the r_sge state at the same time, thus leading to
kernel panics.

Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/qib/qib_qp.c
drivers/infiniband/hw/qib/qib_rc.c
drivers/infiniband/hw/qib/qib_sdma.c
drivers/infiniband/hw/qib/qib_uc.c
drivers/infiniband/hw/qib/qib_ud.c
drivers/infiniband/hw/qib/qib_verbs.c