← Back to CVE List
CVE-2026-90124NVD
Vulnerability Summary
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.
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 & Patched Versions
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < c043591f03a8111f7d306b8122c444a949486269
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < b5ba8b861b5d833394bd23df3f4b59883ef18c88
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < 3791e242ec2e5a5cd9e010a75ed1125d0e84d394
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < 38c6831fefde0ff89f8d2dcb924f957a89dec414
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < dbecbe23dc606c4af68b4591a41124186f5c1802
- Linux Linux >= 3fed09559cd8be79568d368ce02bf7f2d56259b6 and < 50b10bd0c2d721ad38abd1abe3acdefb6caa0944
- Linux Linux >= 6.0
- Linux Linux c043591f03a8111f7d306b8122c444a949486269
- Linux Linux b5ba8b861b5d833394bd23df3f4b59883ef18c88
- Linux Linux 3791e242ec2e5a5cd9e010a75ed1125d0e84d394
- Linux Linux 38c6831fefde0ff89f8d2dcb924f957a89dec414
- Linux Linux dbecbe23dc606c4af68b4591a41124186f5c1802
- Linux Linux 50b10bd0c2d721ad38abd1abe3acdefb6caa0944
External 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