Re: [PATCH net v4 1/3] net/smc: fix use-after-free of the LLC qentry in smc_llc_srv_add_link()
[email protected] Sat, 01 Aug 2026 07:05:49 +0000
| Newsgroups | org.kernel.vger.linux-s390 |
|---|---|
| Message-ID | <[email protected]> |
> smc_llc_srv_add_link() keeps add_llc pointing into the queue entry:
>
> add_llc = &qentry->msg.add_link; smc_llc.c:1482
> ...
> smc_llc_save_add_link_info(link_new, add_llc); smc_llc.c:1494
> smc_llc_flow_qentry_del(&lgr->llc_flow_lcl); smc_llc.c:1495
> ...
> u8 *llc_msg = smc_link_shared_v2_rxbuf(link) ?
> (u8 *)lgr->wr_rx_buf_v2 : (u8 *)add_llc; smc_llc.c:1504
> smc_llc_save_add_link_rkeys(link, link_new, llc_msg); smc_llc.c:1506
>
> smc_llc_flow_qentry_del() kfree()s the entry, so on a link without a shared
> v2 receive buffer the pointer handed to smc_llc_save_add_link_rkeys() is
> already freed. Before the Fixes: commit that branch always used
> lgr->wr_rx_buf_v2 and add_llc was not used after the free.
>
> Detach the entry instead of freeing it there, and free it explicitly on
> both exit paths. The reject path has to detach as well, otherwise it would
> be freed twice.
>
> Fixes: 27ef6a9981fe ("net/smc: support SMC-R V2 for rdma devices with max_recv_sge equals to 1")
> Cc: [email protected]
> Signed-off-by: Yehyeong Lee <[email protected]>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=1