diff options
| author | Li RongQing <lirongqing@baidu.com> | 2026-08-26 15:32:16 +0800 |
|---|---|---|
| committer | Leon Romanovsky <leon@kernel.org> | 2026-09-02 12:14:27 -0400 |
| commit | 3476c28c9addfa253f505e6bd87f1f5598b961d0 (patch) | |
| tree | a39aa9cbbce020ecf011760c77e69b16bb66ac9c /scripts/Makefile.thinlto | |
| parent | 08d4d9802d58bf032099091e6acf719f3298f28e (diff) | |
| download | linux-stable-3476c28c9addfa253f505e6bd87f1f5598b961d0.tar.gz linux-stable-3476c28c9addfa253f505e6bd87f1f5598b961d0.zip | |
RDMA/mad: Fix receive buffer leak when PKey enforcement fails
ib_mad_complete_recv() initializes mad_recv_wc->rmpp_list and then runs
ib_mad_enforce_security() before linking recv_buf onto that list. On
failure it calls ib_free_recv_mad(), which only walks rmpp_list and frees
the ib_mad_private of every buffer found there. As the list is still
empty at that point, nothing is freed at all.
The caller cannot clean up either: ib_mad_recv_done() sets recv to NULL
right after ib_mad_complete_recv() returns, assuming the MAD layer took
ownership of the buffer. Every MAD that fails the PKey check therefore
leaks one ib_mad_private (about 300 bytes per IB port MAD, ~2K for OPA),
and a remote node can trigger this repeatedly by sending MADs with a
wrong PKey.
Link recv_buf onto rmpp_list right after the list is initialized, so the
error path has something to free.
Fixes: 47a2b338fe63 ("IB/core: Enforce security on management datagrams")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
Link: https://patch.msgid.link/20260826073216.2367-1-lirongqing@baidu.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
