Re: [PATCH net v4 2/3] net/smc: bound the peer rkey counts in SMC-Rv2 LLC messages
Yehyeong Lee <[email protected]> Sat, 1 Aug 2026 18:10:47 +0900
| Newsgroups | org.kernel.vger.linux-hardening,dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-kernel,org.kernel.vger.linux-rdma,org.kernel.vger.linux-s390,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
[email protected] wrote: > Does this early return cause a permanent protocol failure for devices > with a single receive SGE? The buffer part is right, but smc_llc_save_add_link_rkeys() does not read that buffer. Without a shared v2 rxbuf its llc_msg argument is &qentry->msg.add_link, and smc_llc_enqueue() copies only sizeof(union smc_llc_msg) into the qentry -- 44 bytes, which is where the extension starts. Same for the delete side. I logged what smc_llc_fill_ext_v2() writes on the sender against what smc_rtoken_set() gets on the receiver, over rxe with max_recv_sge forced to 1. Unpatched, the sender wrote four distinct rkeys and the receiver called smc_rtoken_set() 427 times, not once with one of them. With 1/3 and 2/3 the path is not entered; with 3/3 as well it registers six values, all the sender's. So nothing is lost -- what mainline registers there is heap past a 72-byte kmalloc, which is the out-of-bounds 2/3 fixes. The changelog is wrong to say "nothing beyond the 44 inline bytes was received": it is received, it just never reaches the queue entry. I will fix the wording in a v5. Best regards, Yehyeong Lee