Re: [PATCH] iio: adc: ade9000: fix NULL pointer dereference in clkout registration
From: Linmao Li
Date: Tue Aug 25 2026 - 22:25:07 EST
在 2026/8/24 23:08, Andy Shevchenko 写道:
On Mon, Aug 24, 2026 at 08:52:10PM +0800, Linmao Li wrote:No, unfortunately I do not have access to the hardware, so this is
ade9000_setup_clkout() passes NULL as the register address whenDo you have HW to test? What will be the result for the internal clock case?
registering a divider clock. During clock registration, the common
clock framework calls clk_divider_recalc_rate(), 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.
based on code inspection only.
For the crystal oscillator case, the device tree does not provide a
clocks property. devm_clk_get_optional_enabled() therefore returns
NULL, and ade9000_setup_clkout() returns here:
if (!device_property_present(dev, "#clock-cells") || !st->clkin)
return 0;
No clock provider is registered in that case. This behavior is
unchanged by the patch. The modified registration path is reached only
when an external input clock is present and the device is configured as
a clock provider.
Thanks,
Linmao