linux_dsm_epyc7002/net/rds
Ka-Cheong Poon 2fabef4f65 net/rds: Fix MR reference counting problem
In rds_free_mr(), it calls rds_destroy_mr(mr) directly.  But this
defeats the purpose of reference counting and makes MR free handling
impossible.  It means that holding a reference does not guarantee that
it is safe to access some fields.  For example, In
rds_cmsg_rdma_dest(), it increases the ref count, unlocks and then
calls mr->r_trans->sync_mr().  But if rds_free_mr() (and
rds_destroy_mr()) is called in between (there is no lock preventing
this to happen), r_trans_private is set to NULL, causing a panic.
Similar issue is in rds_rdma_unuse().

Reported-by: zerons <sironhide0null@gmail.com>
Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@oracle.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-04-09 10:22:00 -07:00
..
af_rds.c
bind.c net/rds: Check laddr_check before calling it 2019-09-27 12:10:55 +02:00
cong.c
connection.c
ib_cm.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-11-16 21:51:42 -08:00
ib_fmr.c
ib_frmr.c
ib_mr.h net/rds: Handle ODP mr registration/unregistration 2020-01-18 11:48:19 +02:00
ib_rdma.c net/rds: Use prefetch for On-Demand-Paging MR 2020-01-18 11:48:19 +02:00
ib_recv.c net/rds: Use DMA memory pool allocation for rds_header 2019-10-03 12:11:08 -07:00
ib_ring.c
ib_send.c net/rds: Handle ODP mr registration/unregistration 2020-01-18 11:48:19 +02:00
ib_stats.c
ib_sysctl.c
ib.c net/rds: Handle ODP mr registration/unregistration 2020-01-18 11:48:19 +02:00
ib.h net/rds: Handle ODP mr registration/unregistration 2020-01-18 11:48:19 +02:00
info.c
info.h
Kconfig net: Fix Kconfig indentation 2019-09-26 08:56:17 +02:00
loop.c
loop.h
Makefile
message.c net/rds: Replace struct rds_mr's r_refcount with struct kref 2020-04-09 10:22:00 -07:00
page.c
rdma_transport.c
rdma_transport.h
rdma.c net/rds: Fix MR reference counting problem 2020-04-09 10:22:00 -07:00
rds_single_path.h
rds.h net/rds: Fix MR reference counting problem 2020-04-09 10:22:00 -07:00
recv.c
send.c
stats.c
sysctl.c
tcp_connect.c
tcp_listen.c
tcp_recv.c
tcp_send.c
tcp_stats.c
tcp.c
tcp.h
threads.c
transport.c