soc: xilinx: vcu: issue with 2nd null check on pointer divider

Michael Tretter m.tretter at pengutronix.de
Thu May 8 03:57:25 PDT 2025


Hi Colin,

On Thu, 08 May 2025 11:21:05 +0100, Colin King (gmail) wrote:
> There seems to be an issue with the following function with the second check
> on if (!divider). Firstly this is redundant code since divider has
> already been null checked, so I suspect it should be instead if (!mux) but
> I'm unsure if this is correct since the call to clk_hw_unregister_divider is
> not made.  Also if mux is null, isn't the call to clk_hw_unregister_mux()
> problematic as a null pointer is being passed to it.
> 
> static void xvcu_clk_hw_unregister_leaf(struct clk_hw *hw)
> {
>         struct clk_hw *gate = hw;
>         struct clk_hw *divider;
>         struct clk_hw *mux;
> 
>         if (!gate)
>                 return;
> 
>         divider = clk_hw_get_parent(gate);
>         clk_hw_unregister_gate(gate);
>         if (!divider)
>                 return;
> 
>         mux = clk_hw_get_parent(divider);
>         clk_hw_unregister_mux(mux);
>         if (!divider)
>                 return;
> 
>         clk_hw_unregister_divider(divider);
> }

I sent a patch [0] to rewrite the function and make it more readable a
while ago. Unfortunately, there wasn't any reaction to the patch, and
then I forgot about it.

Michael

[0] https://lore.kernel.org/linux-arm-kernel/20210318144230.3438009-1-m.tretter@pengutronix.de/



More information about the linux-arm-kernel mailing list