Description
In the Linux kernel, the following vulnerability has been resolved: batman-adv: fix tp_meter counter underflow during shutdown batadv_tp_sender_shutdown() unconditionally decrements the "sending" atomic counter. If multiple paths (e.g. timeout, user cancel, and normal finish) call this function, the counter can underflow to -1. Since the sender logic treats any non-zero value as "still sending", a negative value causes the sender kthread to loop indefinitely. This leads to a use-after-free when the interface is removed while the zombie thread is still active. Fix this by using atomic_xchg() to ensure the counter only transitions from 1 to 0 once. [sven: added missing change in batadv_tp_send]
CVSS breakdown
CVSS 3.1
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
Affected products
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – e75e2ab463b5b34df6b98f94d740aff327ce9f6b
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – abae88fa254f2981d39ac003a7b302528a22af64
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – c66d20a3ff095e3f000551d208ec2606616db15c
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – c1bac194733aabd731aafa6a01350c229e187dba
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – 01cefc5923889e29dbb5f281c3d457714ceb9c00
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – 90ae3eae06b7b8ab9f6250b9497c860915b4c17b
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – aeae11c5dad9cd0d50723890bdd866f8e6db2e7d
- Linux / Linux33a3bb4a3345bb511f9c69c913da95d4693e2a4e – 94f3b133168d1c49895e7cc6afbcf1cc0b354602
- Linux / Linux4.8 – 4.8
- Linux / Linux0 – 4.8
- Linux / Linux5.10.258 – 5.10.*
- Linux / Linux5.15.209 – 5.15.*
- Linux / Linux6.1.175 – 6.1.*
- Linux / Linux6.6.142 – 6.6.*
- Linux / Linux6.12.92 – 6.12.*
- Linux / Linux6.18.34 – 6.18.*
- Linux / Linux7.0.11 – 7.0.*
- Linux / Linux7.1 – *
References
- MISChttps://git.kernel.org/stable/c/e75e2ab463b5b34df6b98f94d740aff327ce9f6b
- MISChttps://git.kernel.org/stable/c/abae88fa254f2981d39ac003a7b302528a22af64
- MISChttps://git.kernel.org/stable/c/c66d20a3ff095e3f000551d208ec2606616db15c
- MISChttps://git.kernel.org/stable/c/c1bac194733aabd731aafa6a01350c229e187dba
- MISChttps://git.kernel.org/stable/c/01cefc5923889e29dbb5f281c3d457714ceb9c00
- MISChttps://git.kernel.org/stable/c/90ae3eae06b7b8ab9f6250b9497c860915b4c17b
- MISChttps://git.kernel.org/stable/c/aeae11c5dad9cd0d50723890bdd866f8e6db2e7d
- MISChttps://git.kernel.org/stable/c/94f3b133168d1c49895e7cc6afbcf1cc0b354602