2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-19 18:53:52 +08:00
linux-next/drivers/infiniband/sw/rdmavt
Parav Pandit d9703650f4 IB/{rxe,core,rdmavt}: Fix kernel crash for reg MR
This patch fixes below kernel crash on memory registration for rxe
and other transport drivers which has dma_ops extension.

IB/core invokes ib_map_sg_attrs() in generic manner with dma attributes
which is used by mlx5 and mthca adapters.  However in doing so it
ignored honoring dma_ops extension of software based transports for
sg map/unmap operation.  This results in calling dma_map_sg_attrs of
hardware virtual device resulting in crash for null reference.

We extend the core to support sg_map/unmap_attrs and transport drivers
to implement those dma_ops callback functions.

Verified usign perftest applications.

BUG: unable to handle kernel NULL pointer dereference at           (null)
IP: [<ffffffff81032a75>] check_addr+0x35/0x60
...
Call Trace:
 [<ffffffff81032b39>] ? nommu_map_sg+0x99/0xd0
 [<ffffffffa02b31c6>] ib_umem_get+0x3d6/0x470 [ib_core]
 [<ffffffffa01cc329>] rxe_mem_init_user+0x49/0x270 [rdma_rxe]
 [<ffffffffa01c793a>] ? rxe_add_index+0xca/0x100 [rdma_rxe]
 [<ffffffffa01c995f>] rxe_reg_user_mr+0x9f/0x130 [rdma_rxe]
 [<ffffffffa00419fe>] ib_uverbs_reg_mr+0x14e/0x2c0 [ib_uverbs]
 [<ffffffffa003d3ab>] ib_uverbs_write+0x15b/0x3b0 [ib_uverbs]
 [<ffffffff811e92a6>] ? mem_cgroup_commit_charge+0x76/0xe0
 [<ffffffff811af0a9>] ? page_add_new_anon_rmap+0x89/0xc0
 [<ffffffff8117e6c9>] ? lru_cache_add_active_or_unevictable+0x39/0xc0
 [<ffffffff811f0da8>] __vfs_write+0x28/0x120
 [<ffffffff811f1239>] ? rw_verify_area+0x49/0xb0
 [<ffffffff811f1492>] vfs_write+0xb2/0x1b0
 [<ffffffff811f27d6>] SyS_write+0x46/0xa0
 [<ffffffff814f7d32>] entry_SYSCALL_64_fastpath+0x1a/0xa4

Signed-off-by: Parav Pandit <pandit.parav@gmail.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-10-06 13:50:04 -04:00
..
ah.c IB/rdmavt: Clean up comments and add more documentation 2016-03-10 20:38:08 -05:00
ah.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
cq.c IB/rdmavt: Add missing spin_lock_init call for rdi->n_cqs_lock 2016-08-02 16:00:58 -04:00
cq.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
dma.c IB/{rxe,core,rdmavt}: Fix kernel crash for reg MR 2016-10-06 13:50:04 -04:00
dma.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
Kconfig IB/rdmavt: Disable by default 2016-08-03 21:03:31 -04:00
mad.c IB/rdmavt: Clean up comments and add more documentation 2016-03-10 20:38:08 -05:00
mad.h IB/rdmavt: Clean up distinction between port number and index 2016-03-10 20:37:31 -05:00
Makefile IB/rdmavt: Add support for tracing events 2016-03-10 20:37:24 -05:00
mcast.c IB/rdmavt: Clean up comments and add more documentation 2016-03-10 20:38:08 -05:00
mcast.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
mmap.c IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00
mmap.h IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00
mr.c IB/rdmavt: Don't vfree a kzalloc'ed memory region 2016-09-16 14:14:23 -04:00
mr.h IB/rdmavt: Add support for ib_map_mr_sg 2016-08-02 16:00:58 -04:00
pd.c IB/rdmavt: Clean up comments and add more documentation 2016-03-10 20:38:08 -05:00
pd.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
qp.c IB/rdmavt: Trivial function comment corrected. 2016-10-03 10:55:27 -04:00
qp.h IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
srq.c IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00
srq.h IB/rdmavt: Add srq functionality to rdmavt 2016-03-10 20:37:30 -05:00
trace.c IB/rdmavt: Fix copyright date 2016-03-10 20:37:27 -05:00
trace.h IB/rdmavt: Add trace and error print statements in post_one_wr 2016-03-10 20:38:08 -05:00
vt.c IB/rdmavt: Add support for ib_map_mr_sg 2016-08-02 16:00:58 -04:00
vt.h IB/rdmavt: Remove unnecessary exported functions 2016-03-10 20:38:10 -05:00