Description
In the Linux kernel, the following vulnerability has been resolved: hwmon: (gpio-fan) Fix use-after-free in alarm work fan_alarm_irq_handler() queues fan_data->alarm_work, but nothing cancels it. fan_alarm_notify() dereferences fan_data and its hwmon device. On unbind, devres frees the interrupt, which only waits for the handler itself, and then releases the hwmon device and fan_data, so a pending fan_alarm_notify() can run after those frees. Replace INIT_WORK() with devm_work_autocancel(), registered before devm_request_irq(). The devres cleanup then frees the interrupt first, so no new work can be queued, and cancels the work while fan_data and the hwmon device are still alive. This issue was found by an in-house static analysis tool.
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
d6fe1360f42e86262153927986dea6502daff703 to < 7f96803f612134f585ab3b39e6d5b2d4b9c0606faffectedd6fe1360f42e86262153927986dea6502daff703 to < 594c62eea7c82f526054496e9fa9b895122a8016affectedd6fe1360f42e86262153927986dea6502daff703 to < 6e67d9bdac810edacef78cbaeedd34445aa8ceb7affectedd6fe1360f42e86262153927986dea6502daff703 to < e9fc7d53b2eb34c0a607d1659f49b46911aaf16caffectedd6fe1360f42e86262153927986dea6502daff703 to < 9b12bd724db9db318e3a68be17693583dc29a066affectedd6fe1360f42e86262153927986dea6502daff703 to < 30755d3a5782cd704c8921cac8ee66dffe4383eaaffectedd6fe1360f42e86262153927986dea6502daff703 to < c6ab7f855891877a16d2e2ddf0cd0305fd098a85affectedd6fe1360f42e86262153927986dea6502daff703 to < a2471ed17b0e6ff7bfb6b2ea8e6e5b04c309d293affected
Linux Linux
Default version status: affected
2.6.37affected0 to < 2.6.37unaffected5.10.273 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/7f96803f612134f585ab3b39e6d5b2d4b9c0606f ↗
- https://git.kernel.org/stable/c/594c62eea7c82f526054496e9fa9b895122a8016 ↗
- https://git.kernel.org/stable/c/6e67d9bdac810edacef78cbaeedd34445aa8ceb7 ↗
- https://git.kernel.org/stable/c/e9fc7d53b2eb34c0a607d1659f49b46911aaf16c ↗
- https://git.kernel.org/stable/c/9b12bd724db9db318e3a68be17693583dc29a066 ↗
- https://git.kernel.org/stable/c/30755d3a5782cd704c8921cac8ee66dffe4383ea ↗
- https://git.kernel.org/stable/c/c6ab7f855891877a16d2e2ddf0cd0305fd098a85 ↗
- https://git.kernel.org/stable/c/a2471ed17b0e6ff7bfb6b2ea8e6e5b04c309d293 ↗