Commit 14ab3da1 authored by YunJe Shin's avatar YunJe Shin Committed by Leon Romanovsky
Browse files

RDMA/siw: Fix potential NULL pointer dereference in header processing



If siw_get_hdr() returns -EINVAL before set_rx_fpdu_context(),
qp->rx_fpdu can be NULL. The error path in siw_tcp_rx_data()
dereferences qp->rx_fpdu->more_ddp_segs without checking, which
may lead to a NULL pointer deref. Only check more_ddp_segs when
rx_fpdu is present.

KASAN splat:
[  101.384271] KASAN: null-ptr-deref in range [0x00000000000000c0-0x00000000000000c7]
[  101.385869] RIP: 0010:siw_tcp_rx_data+0x13ad/0x1e50

Fixes: 8b6a361b ("rdma/siw: receive path")
Signed-off-by: default avatarYunJe Shin <ioerts@kookmin.ac.kr>
Link: https://patch.msgid.link/20260204092546.489842-1-ioerts@kookmin.ac.kr


Acked-by: default avatarBernard Metzler <bernard.metzler@linux.dev>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent 5551b02f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1435,7 +1435,8 @@ int siw_tcp_rx_data(read_descriptor_t *rd_desc, struct sk_buff *skb,
		}
		if (unlikely(rv != 0 && rv != -EAGAIN)) {
			if ((srx->state > SIW_GET_HDR ||
			     qp->rx_fpdu->more_ddp_segs) && run_completion)
			     (qp->rx_fpdu && qp->rx_fpdu->more_ddp_segs)) &&
			    run_completion)
				siw_rdmap_complete(qp, rv);

			siw_dbg_qp(qp, "rx error %d, rx state %d\n", rv,