OpenCloudOS-Kernel/drivers/infiniband/hw
Michael J. Ruhl f683c80ca6 IB/hfi1: Resolve kernel panics by reference counting receive contexts
Base receive contexts can be used by sub contexts.  Because of this,
resources for the context cannot be completely freed until all sub
contexts are done using the base context.

Introduce a reference count so that the base receive context can be
freed only when all sub contexts are done with it.

Use the provided function call for setting default send context
integrity rather than the manual method.

The cleanup path does not set all variables back to NULL after freeing
resources.  Since the clean up code can get called more than once,
(e.g. during context close and on the error path), it is necessary to
make sure that all the variables are NULLed.

Possible crash are:

BUG: unable to handle kernel paging request at 0000000001908900
IP: read_csr+0x24/0x30 [hfi1]
RIP: 0010:read_csr+0x24/0x30 [hfi1]
Call Trace:
 sc_disable+0x40/0x110 [hfi1]
 hfi1_file_close+0x16f/0x360 [hfi1]
 __fput+0xe7/0x210
 ____fput+0xe/0x10

or

kernel BUG at mm/slub.c:3877!
RIP: 0010:kfree+0x14f/0x170
Call Trace:
 hfi1_free_ctxtdata+0x19a/0x2b0 [hfi1]
 ? hfi1_user_exp_rcv_grp_free+0x73/0x80 [hfi1]
 hfi1_file_close+0x20f/0x360 [hfi1]
 __fput+0xe7/0x210
 ____fput+0xe/0x10

Fixes: Commit 62239fc6e5 ("IB/hfi1: Clean up on context initialization failure")
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2017-06-27 16:58:13 -04:00
..
bnxt_re RDMA/bnxt_re: Remove FMR support 2017-06-14 13:02:00 -04:00
cxgb3 IB/core: Rename struct ib_ah_attr to rdma_ah_attr 2017-05-01 14:32:43 -04:00
cxgb4 Merge branch 'k.o/for-4.12-rc' into k.o/for-4.13-mlx-shared 2017-06-27 16:55:59 -04:00
hfi1 IB/hfi1: Resolve kernel panics by reference counting receive contexts 2017-06-27 16:58:13 -04:00
hns scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
i40iw RDMA/i40iw: fix duplicated code for different branches 2017-06-01 17:00:29 -04:00
mlx4 IB/mlx4: Bump driver version 2017-06-07 15:33:01 -04:00
mlx5 Merge branch 'k.o/for-4.12-rc' into k.o/for-4.13-mlx-shared 2017-06-27 16:55:59 -04:00
mthca IB/core: Define 'ib' and 'roce' rdma_ah_attr types 2017-05-01 14:32:43 -04:00
nes RDMA/nes: ACK MPA Reply frame 2017-06-01 17:01:24 -04:00
ocrdma IB/ocrdma: fix out of bounds access to local buffer 2017-05-01 15:04:23 -04:00
qedr Merge branch 'k.o/for-4.12-rc' into k.o/for-4.13-mlx-shared 2017-06-27 16:55:59 -04:00
qib IB/qib: Replace deprecated pci functions with new API 2017-06-27 16:58:13 -04:00
usnic IB/core: Rename struct ib_ah_attr to rdma_ah_attr 2017-05-01 14:32:43 -04:00
vmw_pvrdma IB/core: Define 'ib' and 'roce' rdma_ah_attr types 2017-05-01 14:32:43 -04:00
Makefile RDMA/bnxt_re: Add bnxt_re driver build support 2017-02-14 09:51:28 -05:00