Re: [PATCH] iio: adc: ade9000: fix NULL pointer dereference in clkout registration
Andy Shevchenko <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
On Wed, Aug 26, 2026 at 10:24:18AM +0800, Linmao Li wrote: > > 在 2026/8/24 23:08, Andy Shevchenko 写道: > > On Mon, Aug 24, 2026 at 08:52:10PM +0800, Linmao Li wrote: > > > ade9000_setup_clkout() passes NULL as the register address when > > > 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. > > Do you have HW to test? What will be the result for the internal clock case? > No, unfortunately I do not have access to the hardware, so this is > 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. Then add a sentence to summarise this, something like "this change doesn't affect the configuration with the internal clock". -- With Best Regards, Andy Shevchenko