Description
In the Linux kernel, the following vulnerability has been resolved: batman-adv: tp_meter: directly shut down timer on cleanup batadv_tp_sender_cleanup() was calling timer_delete_sync() followed by timer_delete() to guard against the timer handler re-arming itself between the two calls. This double-deletion hack relied on the sending status being set to 0 to suppress re-arming. Replace both calls with a single timer_shutdown_sync(). This function both waits for any running timer callback to complete (like timer_delete_sync()) and permanently disarms the timer so it cannot be re-armed afterwards, making re-arming prevention unconditional and self-documenting. The re-arming property is also required because otherwise: 1. context 0 (batadv_tp_recv_ack()) checks in batadv_tp_reset_sender_timer() if sending is still 1 -> it is 2. context 1 changes in batadv_tp_sender_shutdown() sending to 0 and in this process forces the kthread to stop timer in batadv_tp_sender_cleanup() 3. context 0 continues in batadv_tp_reset_sender_timer() and rearms the timer -> but the reference for it is already gone
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < 00bf4bb9947b1190a8be8d9b6a1bcbfa3707785caffected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < 74a76634055462833446684fd526d73c290ea43aaffected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < 5bc2d50fb66b46f86543d5153a188eb1486d0b6eaffected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < f86b20ec8d17d77bddc02c5c86cfa2389d84ecffaffected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < 770bf0a35f0620b526fd4193889d1e77084e4c43affected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < 933880a8bc9b4042223a79255c0b1021cdc36991affected33a3bb4a3345bb511f9c69c913da95d4693e2a4e to < d5487249a81ea658717614009c8f46acc5b7101aaffected
Linux Linux
Default version status: affected
4.8affected0 to < 4.8unaffected5.15.210 to ≤ 5.15.*unaffected6.1.176 to ≤ 6.1.*unaffected6.6.143 to ≤ 6.6.*unaffected6.12.93 to ≤ 6.12.*unaffected6.18.34 to ≤ 6.18.*unaffected7.0.11 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/00bf4bb9947b1190a8be8d9b6a1bcbfa3707785c ↗
- https://git.kernel.org/stable/c/74a76634055462833446684fd526d73c290ea43a ↗
- https://git.kernel.org/stable/c/5bc2d50fb66b46f86543d5153a188eb1486d0b6e ↗
- https://git.kernel.org/stable/c/f86b20ec8d17d77bddc02c5c86cfa2389d84ecff ↗
- https://git.kernel.org/stable/c/770bf0a35f0620b526fd4193889d1e77084e4c43 ↗
- https://git.kernel.org/stable/c/933880a8bc9b4042223a79255c0b1021cdc36991 ↗
- https://git.kernel.org/stable/c/d5487249a81ea658717614009c8f46acc5b7101a ↗