Description
In the Linux kernel, the following vulnerability has been resolved: irqchip/renesas-rzg2l: Fix loss of interrupt rzg2l_clear_irq_int() and rzg2l_clear_tint_int() perform a read-modify-write on the ISCR/TSCR status registers to clear the bit for the interrupt just handled. Since these registers are write-0-to-clear per bit, this is racy: If another interrupt's status bit gets set between the read and the write, that bit is written back as 0 by the software-constructed value, clearing an interrupt that hasn't been serviced yet and losing it. This can be reproduced by triggering multiple interrupts at once, e.g.: gpioset -c gpiochip0 355=0 353=0 328=0 352=0 Fix this by writing back only the bit being cleared, with all other bits set to 1, instead of read-modify-writing the whole register. Since 1-bits are left unchanged by hardware, concurrently-set status bits for other interrupts are preserved.
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
3fed09559cd8be79568d368ce02bf7f2d56259b6 to < c043591f03a8111f7d306b8122c444a949486269affected3fed09559cd8be79568d368ce02bf7f2d56259b6 to < b5ba8b861b5d833394bd23df3f4b59883ef18c88affected3fed09559cd8be79568d368ce02bf7f2d56259b6 to < 3791e242ec2e5a5cd9e010a75ed1125d0e84d394affected3fed09559cd8be79568d368ce02bf7f2d56259b6 to < 38c6831fefde0ff89f8d2dcb924f957a89dec414affected3fed09559cd8be79568d368ce02bf7f2d56259b6 to < dbecbe23dc606c4af68b4591a41124186f5c1802affected3fed09559cd8be79568d368ce02bf7f2d56259b6 to < 50b10bd0c2d721ad38abd1abe3acdefb6caa0944affected
Linux Linux
Default version status: affected
6.0affected0 to < 6.0unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c043591f03a8111f7d306b8122c444a949486269 ↗
- https://git.kernel.org/stable/c/b5ba8b861b5d833394bd23df3f4b59883ef18c88 ↗
- https://git.kernel.org/stable/c/3791e242ec2e5a5cd9e010a75ed1125d0e84d394 ↗
- https://git.kernel.org/stable/c/38c6831fefde0ff89f8d2dcb924f957a89dec414 ↗
- https://git.kernel.org/stable/c/dbecbe23dc606c4af68b4591a41124186f5c1802 ↗
- https://git.kernel.org/stable/c/50b10bd0c2d721ad38abd1abe3acdefb6caa0944 ↗