can: j1939: fix Use-after-Free, hold skb ref while in use
authorOleksij Rempel <o.rempel@pengutronix.de>
Fri, 21 May 2021 11:57:20 +0000 (13:57 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 16 Jun 2021 10:52:18 +0000 (12:52 +0200)
commit2030043e616cab40f510299f09b636285e0a3678
treefd668a0e0799cb62026702c9278ed3a9e0e41537
parenta4f0377db1254373513b992ff31a351a7111f0fd
can: j1939: fix Use-after-Free, hold skb ref while in use

This patch fixes a Use-after-Free found by the syzbot.

The problem is that a skb is taken from the per-session skb queue,
without incrementing the ref count. This leads to a Use-after-Free if
the skb is taken concurrently from the session queue due to a CTS.

Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Link: https://lore.kernel.org/r/20210521115720.7533-1-o.rempel@pengutronix.de
Cc: Hillf Danton <hdanton@sina.com>
Cc: linux-stable <stable@vger.kernel.org>
Reported-by: syzbot+220c1a29987a9a490903@syzkaller.appspotmail.com
Reported-by: syzbot+45199c1b73b4013525cf@syzkaller.appspotmail.com
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/j1939/transport.c