summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorAohan Mei <henrymei@tencent.com>2026-09-11 15:34:32 +0800
committerJakub Kicinski <kuba@kernel.org>2026-09-14 18:47:52 -0700
commitf97d8c7bab7843631206a114986c9059da03efeb (patch)
tree02a00c6a4559309b82f69ac6b27a5f26b8cc7f51 /tools/perf/scripts/python
parent6c21ebc81338dd8abe021dec3d01acebd789ea2c (diff)
downloadlinux-f97d8c7bab7843631206a114986c9059da03efeb.tar.gz
linux-f97d8c7bab7843631206a114986c9059da03efeb.zip
rds: ib: use rds_conn_drop() on protocol version mismatch
rds_ib_cm_connect_complete() runs from the RDMA-CM event handler with conn->c_cm_lock held. When the peer negotiates a protocol version older than RDS_PROTOCOL_COMPAT_VERSION, the handler calls rds_conn_destroy(), which is only safe in the rmmod path: it synchronously tears the connection down and flush_work()es the shutdown work cp_down_w. That shutdown work (rds_conn_shutdown()) needs cp_cm_lock, which is the very lock the event handler still holds, so the flush never completes: the two workers wait on each other and the RDS connection workqueues stall for good. All other RDMA-CM failure paths (REJECTED, CONNECT_ERROR, DISCONNECTED) use rds_conn_drop(), which marks the connection RDS_CONN_ERROR and schedules the shutdown work asynchronously. Use it here as well. Fixes: f147dd9ecabf ("RDS/IB: Disallow connections less than RDS 3.1") Reported-by: TencentOS Corvus AI <corvus@tencent.com> Cc: stable@vger.kernel.org Reviewed-by: Allison Henderson <achender@kernel.org> Signed-off-by: Aohan Mei <henrymei@tencent.com> Link: https://patch.msgid.link/20260911073436.3542080-1-ljp1205831794@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions