IB/hfi1: Fix deadlock with txreq allocation slow path
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Sat, 18 Jun 2016 02:17:49 +0000 (19:17 -0700)
committerDoug Ledford <dledford@redhat.com>
Thu, 23 Jun 2016 14:16:15 +0000 (10:16 -0400)
commit2aee309d3e01447c55fdf89cef05a0e2be372655
treeadafeb7a28dc479b08799923931f8490be15be8d
parent34d351f8ddf6dee24d739c4b00a4404e48089a04
IB/hfi1: Fix deadlock with txreq allocation slow path

A failure in the get_txreq() inline will result in a
slow path retry using __get_txreq().

__get_txreq() attempts to procure the qp s_lock, which
is already held in all callers.

Fix by deleting the s_lock maintenance in __get_txreq()
and add sparse syntax hooks to future proof the code.

Cc: Stable <stable@vger.kernel.org> # 4.6+
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/verbs_txreq.c
drivers/infiniband/hw/hfi1/verbs_txreq.h