CVE-2026-98676: iio: adc: ade9000: fix NULL pointer dereference in clkout registration
In the Linux kernel, the following vulnerability has been resolved:
iio: adc: ade9000: fix NULL pointer dereference in clkout registration
ade9000setupclkout() passes NULL as the register address when registering a divider clock. During clock registration, the common clock framework calls clkdividerrecalcrate(), which dereferences the address through readl(). As a result, probing an ADE9000 configured as a clock provider with an external input clock crashes.
CLKOUT passes CLKIN through without changing its rate. Register it as a 1:1 fixed-factor clock, which does not require register access.
This change does not affect the configuration using the internal clock, for which the driver does not register a clock provider.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Register CLKOUT as a 1:1 fixed-factor clock instead of a divider clock so registration does not require register access when using an external input clock.
Linux kernel iio: adc: ade9000 CLKOUT clock registration = 1:1 fixed-factor clock
Event History
Frequently Asked Questions
Which systems are affected by this issue?
The issue affects systems that probe an ADE9000 device configured as a clock provider while using an external input clock. Configurations using the ADE9000 internal clock are not affected because the driver does not register a clock provider in that case.
What happens when the vulnerable configuration is used?
During device probing, clock registration invokes the divider clock rate recalculation path, which dereferences a NULL register address through readl(). This causes a kernel crash.
Is there a configuration workaround if an update cannot be applied immediately?
Use the ADE9000 internal-clock configuration rather than configuring the device as a clock provider with an external input clock. The internal-clock configuration does not register a clock provider and is not affected.