CVE-2021-4454: can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate
In the Linux kernel, the following vulnerability has been resolved:
can: j1939: fix errant WARNONONCE in j1939sessiondeactivate
The conclusion "j1939sessiondeactivate() should be called with a session ref-count of at least 2" is incorrect. In some concurrent scenarios, j1939sessiondeactivate can be called with the session ref-count less than 2. But there is not any problem because it will check the session active state before session putting in j1939sessiondeactivatelocked().
Here is the concurrent scenario of the problem reported by syzbot and my reproduction log.
cpu0 cpu1 j1939xtprxeoma j1939xtprxabortone j1939sessiongetbyaddr [kref == 2] j1939sessiongetbyaddr [kref == 3] j1939sessiondeactivate [kref == 2] j1939sessionput [kref == 1] j1939sessioncompleted j1939sessiondeactivate WARNONONCE(kref < 2)
===================================================== WARNING: CPU: 1 PID: 21 at net/can/j1939/transport.c:1088 j1939sessiondeactivate+0x5f/0x70 CPU: 1 PID: 21 Comm: ksoftirqd/1 Not tainted 5.14.0-rc7+ #32 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014 RIP: 0010:j1939sessiondeactivate+0x5f/0x70 Call Trace: j1939sessiondeactivateactivatenext+0x11/0x28 j1939xtprxeoma+0x12a/0x180 j1939tprecv+0x4a2/0x510 j1939canrecv+0x226/0x380 canrcvfilter+0xf8/0x220 canreceive+0x102/0x220 ? processbacklog+0xf0/0x2c0 canrcv+0x53/0xf0 netifreceiveskbonecore+0x67/0x90 ? processbacklog+0x97/0x2c0 netifreceiveskb+0x22/0x80
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2021-4454?
CVE-2021-4454 is categorized with a severity level that may vary based on the specific Linux kernel version in use.
How do I fix CVE-2021-4454?
To fix CVE-2021-4454, you should upgrade to a patched version of the Linux kernel that addresses this vulnerability.
Which versions of the Linux kernel are affected by CVE-2021-4454?
CVE-2021-4454 affects all versions of the Linux kernel up to and including 5.14.0-rc7.
What is the impact of CVE-2021-4454?
The impact of CVE-2021-4454 may lead to erroneous warnings and potential instability in the Linux kernel related to the j1939 protocol.
Is CVE-2021-4454 exploitable?
CVE-2021-4454 may be exploitable under certain concurrent scenarios, but the details of potential exploitability depend on the specific environment.