OrangePi_CM5/net/sunrpc/xprtrdma
Kinglong Mee 8dbae5affb xprtrdma: treat all calls not a bcall when bc_serv is NULL
[ Upstream commit 11270e7ca268e8d61b5d9e5c3a54bd1550642c9c ]

When a rdma server returns a fault format reply, nfs v3 client may
treats it as a bcall when bc service is not exist.

The debug message at rpcrdma_bc_receive_call are,

[56579.837169] RPC:       rpcrdma_bc_receive_call: callback XID
00000001, length=20
[56579.837174] RPC:       rpcrdma_bc_receive_call: 00 00 00 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 04

After that, rpcrdma_bc_receive_call will meets NULL pointer as,

[  226.057890] BUG: unable to handle kernel NULL pointer dereference at
00000000000000c8
...
[  226.058704] RIP: 0010:_raw_spin_lock+0xc/0x20
...
[  226.059732] Call Trace:
[  226.059878]  rpcrdma_bc_receive_call+0x138/0x327 [rpcrdma]
[  226.060011]  __ib_process_cq+0x89/0x170 [ib_core]
[  226.060092]  ib_cq_poll_work+0x26/0x80 [ib_core]
[  226.060257]  process_one_work+0x1a7/0x360
[  226.060367]  ? create_worker+0x1a0/0x1a0
[  226.060440]  worker_thread+0x30/0x390
[  226.060500]  ? create_worker+0x1a0/0x1a0
[  226.060574]  kthread+0x116/0x130
[  226.060661]  ? kthread_flush_work_fn+0x10/0x10
[  226.060724]  ret_from_fork+0x35/0x40
...

Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-14 18:32:39 +02:00
..
Makefile xprtrdma: Remove support for FMR memory registration 2019-01-02 12:05:17 -05:00
backchannel.c xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt 2020-03-27 10:47:25 -04:00
frwr_ops.c xprtrdma: rpcrdma_mr_pop() already does list_del_init() 2021-05-19 10:13:04 +02:00
module.c SUNRPC: xprt_load_transport() needs to support the netid "rdma6" 2020-12-30 11:53:30 +01:00
rpc_rdma.c xprtrdma: treat all calls not a bcall when bc_serv is NULL 2022-06-14 18:32:39 +02:00
svc_rdma.c sysctl: pass kernel pointers to ->proc_handler 2020-04-27 02:07:40 -04:00
svc_rdma_backchannel.c svcrdma: disable timeouts on rdma backchannel 2021-03-25 09:04:08 +01:00
svc_rdma_recvfrom.c svcrdma: Remove transport reference counting 2020-07-28 10:18:14 -04:00
svc_rdma_rw.c net: sunrpc: delete repeated words 2020-09-25 18:01:26 -04:00
svc_rdma_sendto.c svcrdma: fix bounce buffers for unaligned offsets and multiple pages 2020-10-16 15:15:04 -04:00
svc_rdma_transport.c svcrdma: Hold private mutex while invoking rdma_accept() 2021-03-04 11:38:08 +01:00
transport.c SUNRPC/xprt: async tasks mustn't block waiting for memory 2022-04-13 21:01:02 +02:00
verbs.c xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create 2022-02-23 12:01:06 +01:00
xprt_rdma.h SUNRPC: More fixes for backlog congestion 2021-06-03 09:00:51 +02:00