diff options
author | Don Hiatt <don.hiatt@intel.com> | 2017-10-09 21:38:19 +0200 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-10-18 16:12:59 +0200 |
commit | f8195f3b14a046ae33d9c369ffb59b4192f29e08 (patch) | |
tree | a7b66fa55b421c40d43c7eed99564d4f726090be /drivers/infiniband/hw/hfi1/common.h | |
parent | IB/hfi1: Mask out A bit from psn trace (diff) | |
download | linux-f8195f3b14a046ae33d9c369ffb59b4192f29e08.tar.xz linux-f8195f3b14a046ae33d9c369ffb59b4192f29e08.zip |
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>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/common.h')
-rw-r--r-- | drivers/infiniband/hw/hfi1/common.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/common.h b/drivers/infiniband/hw/hfi1/common.h index 3e27794ec750..7108d4d92259 100644 --- a/drivers/infiniband/hw/hfi1/common.h +++ b/drivers/infiniband/hw/hfi1/common.h @@ -328,6 +328,7 @@ struct diag_pkt { #define SC15_PACKET 0xF #define SIZE_OF_CRC 1 #define SIZE_OF_LT 1 +#define MAX_16B_PADDING 12 /* CRC = 4, LT = 1, Pad = 0 to 7 bytes */ #define LIM_MGMT_P_KEY 0x7FFF #define FULL_MGMT_P_KEY 0xFFFF |