Re: [PATCH net] can: j1939: transport: validate the DPO packet offset

From: Oleksij Rempel

Date: Wed Nov 11 2026 - 03:36:41 EST


On Thu, Nov 05, 2026 at 02:59:31PM +0800, Sun Yiqi wrote:
> j1939_xtp_rx_dpo_one() stores the packet offset from a received ETP DPO
> command without checking it against the session's total packet count.
> An offset greater than or equal to that count makes
> j1939_session_skb_get() return NULL. A subsequent EOMA can then cause
> j1939_session_completed() to pass the NULL skb to j1939_sk_recv(),
> resulting in a NULL pointer dereference.
>
> Reject an out-of-range offset before storing it and abort the session
> with J1939_XTP_ABORT_BAD_EDPO_OFFSET. Keeping the previous valid offset
> also prevents this lookup failure if an EOMA arrives while the session
> is waiting for the abort to complete.
>
> Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Sun Yiqi <sunyiqi2@xxxxxxxxxx>

Sorry, i'll need to drop this patch in favor of this one:
https://lore.kernel.org/all/1794300102.11111.1000002@xxxxxxx/

Chaosheng is working on this patch longer and attempt to address
sashiko review points.


--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |