In the Linux kernel, the following vulnerability has been resolved:
lib: cpu_rmap: Avoid use after free on rmap->obj array entries
When calling irq_set_affinity_notifier() with NULL at the notify argument, it will cause freeing of the glue pointer in the corresponding array entry but will leave the pointer in the array. A subsequent call to free_irq_cpu_rmap() will try to free this entry again leading to possible use after free.
Fix that by setting NULL to the array entry and checking that we have non-zero at the array entry when iterating over the array in free_irq_cpu_rmap().
The current code does not suffer from this since there are no cases where irq_set_affinity_notifier(irq, NULL) (note the NULL passed for the notify arg) is called, followed by a call to free_irq_cpu_rmap() so we don't hit and issue. Subsequent patches in this series excersize this flow, hence the required fix.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 3.8.1 | 4.14.316 |
| linux / linux_kernel | 4.15 | 4.19.284 |
| linux / linux_kernel | 4.20 | 5.4.244 |
| linux / linux_kernel | 5.5 | 5.10.181 |
| linux / linux_kernel | 5.11 | 5.15.113 |
| linux / linux_kernel | 5.16 | 6.1.30 |
| linux / linux_kernel | 6.2 | 6.3.4 |
| linux / linux_kernel | 3.8 | 3.8.x |
| linux / linux_kernel | 3.8-rc4 | 3.8-rc4.x |
| linux / linux_kernel | 3.8-rc5 | 3.8-rc5.x |
| linux / linux_kernel | 3.8-rc6 | 3.8-rc6.x |
| linux / linux_kernel | 3.8-rc7 | 3.8-rc7.x |