IB/hfi1: Eliminate allocation while atomic
authorDon Hiatt <don.hiatt@intel.com>
Mon, 9 Oct 2017 19:38:19 +0000 (12:38 -0700)
committerDoug Ledford <dledford@redhat.com>
Wed, 18 Oct 2017 14:12:59 +0000 (10:12 -0400)
commitf8195f3b14a046ae33d9c369ffb59b4192f29e08
treea7b66fa55b421c40d43c7eed99564d4f726090be
parentd0a2f454713a42447ee4007582c0e43c47bcf230
IB/hfi1: Eliminate allocation while atomic

The PIO trailing buffer was being dynamically allocated
but the kcalloc return value was not being checked. Further,
the GFP_KERNEL was being used even though the send engine
might be called with interrupts disabled.

Since the maximum size of the trailing buffer is only 12
bytes (CRC = 4, LT = 1, Pad = 0 to 7 bytes) just statically
allocate the buffer, remove the alloc entirely and share it
with the SDMA engine by making it global.

Reported-by: Leon Romanovsky <leon@kernel.org>
Fixes: 566d53a82644 ("IB/hfi1: Enhance PIO/SDMA send for 16B")
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Don Hiatt <don.hiatt@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/common.h
drivers/infiniband/hw/hfi1/verbs.c