linux/net/rds
Ka-Cheong Poon a43cced9a3 rds: MP-RDS may use an invalid c_path
rds_sendmsg() calls rds_send_mprds_hash() to find a c_path to use to
send a message.  Suppose the RDS connection is not yet up.  In
rds_send_mprds_hash(), it does

	if (conn->c_npaths == 0)
		wait_event_interruptible(conn->c_hs_waitq,
					 (conn->c_npaths != 0));

If it is interrupted before the connection is set up,
rds_send_mprds_hash() will return a non-zero hash value.  Hence
rds_sendmsg() will use a non-zero c_path to send the message.  But if
the RDS connection ends up to be non-MP capable, the message will be
lost as only the zero c_path can be used.

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>
2018-04-11 10:24:01 -04:00
..
Kconfig
Makefile
af_rds.c rds: use list structure to track information for zerocopy completion notification 2018-03-07 18:05:57 -05:00
bind.c
cong.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
connection.c net: rds: drop VLA in rds_walk_conn_path_info() 2018-03-12 15:07:00 -04:00
ib.c net: rds: drop VLA in rds_for_each_conn_info() 2018-03-12 15:06:59 -04:00
ib.h
ib_cm.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
ib_fmr.c
ib_frmr.c
ib_mr.h
ib_rdma.c
ib_recv.c
ib_ring.c
ib_send.c
ib_stats.c
ib_sysctl.c
info.c
info.h
loop.c
loop.h
message.c rds: remove redundant variable 'sg_off' 2018-03-12 11:12:38 -04:00
page.c
rdma.c
rdma_transport.c
rdma_transport.h
rds.h net: rds: drop VLA in rds_for_each_conn_info() 2018-03-12 15:06:59 -04:00
rds_single_path.h
recv.c rds: use list structure to track information for zerocopy completion notification 2018-03-07 18:05:57 -05:00
send.c rds: MP-RDS may use an invalid c_path 2018-04-11 10:24:01 -04:00
stats.c
sysctl.c
tcp.c net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
tcp.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-23 13:51:56 -05:00
tcp_connect.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
tcp_listen.c rds: Incorrect reference counting in TCP socket creation 2018-03-02 09:40:27 -05:00
tcp_recv.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
tcp_send.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
tcp_stats.c
threads.c rds: tcp: use rds_destroy_pending() to synchronize netns/module teardown and rds connection/workq management 2018-02-08 15:23:52 -05:00
transport.c