Re: [PATCH] clk: Add fault tolerance to of_clk_hw_onecell_get()

From: Stephen Boyd
Date: Thu Jul 31 2025 - 12:46:00 EST


Quoting Chuan Liu via B4 Relay (2025-07-31 05:39:58)
> From: Chuan Liu <chuan.liu@xxxxxxxxxxx>
>
> In specific cases, even a clk_provider managing only a single clock may
> reference of_clk_hw_onecell_get() to access its member clocks, as seen
> in implementations like clk-scmi.
>
> For a clk_provider with only one clock, when calling
> of_parse_phandle_with_args(), the phandle_args->args[] members are not
> assigned. In this case, the reference to phandle_args->args[0] in
> of_clk_hw_onecell_get() becomes invalid. If phandle_args->args[0]
> initially contains a non-zero value, this will trigger an error.
>
> Signed-off-by: Chuan Liu <chuan.liu@xxxxxxxxxxx>
> ---
> Error conditions observed:
>
> scmi_clk: protocol@14 {
> reg = <0x14>;
> #clock-cells = <0>;
> };
>
> phandle1: clock-controller@1 {
> #clock-cells = <1>;
> }
>
> clock-consumer@2 {
> assigned-clocks = <&phandle1 1>,
> <&scmi_clk>;
> assigned-clock-rates = <xxx>,
> <xxx>;
> }
>
> Under these conditions, executing of_clk_set_defaults() triggers the
> error: 'of_clk_hw_onecell_get: invalid index 1'.

Please write a KUnit test.