Skip to content

Commit 22a825c

Browse files
D. Wythekuba-moo
authored andcommitted
net/smc: fix NULL sndbuf_desc in smc_cdc_tx_handler()
When performing a stress test on SMC-R by rmmod mlx5_ib driver during the wrk/nginx test, we found that there is a probability of triggering a panic while terminating all link groups. This issue dues to the race between smc_smcr_terminate_all() and smc_buf_create(). smc_smcr_terminate_all smc_buf_create /* init */ conn->sndbuf_desc = NULL; ... __smc_lgr_terminate smc_conn_kill smc_close_abort smc_cdc_get_slot_and_msg_send __softirqentry_text_start smc_wr_tx_process_cqe smc_cdc_tx_handler READ(conn->sndbuf_desc->len); /* panic dues to NULL sndbuf_desc */ conn->sndbuf_desc = xxx; This patch tries to fix the issue by always to check the sndbuf_desc before send any cdc msg, to make sure that no null pointer is seen during cqe processing. Fixes: 0b29ec6 ("net/smc: immediate termination for SMCR link groups") Signed-off-by: D. Wythe <[email protected]> Reviewed-by: Tony Lu <[email protected]> Reviewed-by: Wenjia Zhang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 131db49 commit 22a825c

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

net/smc/smc_cdc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ int smc_cdc_msg_send(struct smc_connection *conn,
114114
union smc_host_cursor cfed;
115115
int rc;
116116

117+
if (unlikely(!READ_ONCE(conn->sndbuf_desc)))
118+
return -ENOBUFS;
119+
117120
smc_cdc_add_pending_send(conn, pend);
118121

119122
conn->tx_cdc_seq++;

0 commit comments

Comments
 (0)