漏洞信息
# net/smc: 修正 smc_cdc_tx_handler() 中的空sndbuf_desc
## 漏洞概述
Linux内核中的net/smc模块存在一个漏洞,问题发生在smc_cdc_tx_handler()函数中,可能导致sndbuf_desc为空指针的错误。
## 影响版本
未明确给出受影响的版本信息。
## 细节
在对SMC-R进行压力测试时,当卸载mlx5_ib驱动程序期间执行wrk/nginx测试时,发现有可能在终止所有链路组时触发系统崩溃。这个问题是由smc_smcr_terminate_all()和smc_buf_create()函数之间的竞争条件引起的。
程序执行流程如下:
- `smc_smcr_terminate_all`触发`smc_conn_kill`,后者调用`smc_close_abort`,进而调用`smc_cdc_get_slot_and_msg_send`。
- `smc_wr_tx_process_cqe`处理过程中调用`smc_cdc_tx_handler`读取`conn->sndbuf_desc->len`。
- 在cqe处理期间,如果没有正确检查`sndbuf_desc`是否为空,会导致null指针访问,从而使系统崩溃。
## 影响
竞态条件可能导致空指针引用,进而导致系统崩溃或不稳定。修复方案是通过在发送任何cdc消息前检查`conn->sndbuf_desc`,确保在CQE处理期间不会遇到空指针。
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
net/smc: fix NULL sndbuf_desc in smc_cdc_tx_handler()
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
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.
CVSS信息
N/A
漏洞类别
N/A
漏洞标题
Linux kernel 安全漏洞
漏洞描述信息
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于smc驱动在发送CDC消息时未检查sndbuf_desc,可能导致空指针取消引用。
CVSS信息
N/A
漏洞类别
其他