Re: clkdev: report over-sized strings when creating clkdev entries

From: Arnd Bergmann
Date: Tue May 07 2024 - 16:53:28 EST


On Tue, May 7, 2024, at 22:26, Stephen Boyd wrote:
> Quoting Arnd Bergmann (2024-05-07 00:44:15)
>> On Tue, May 7, 2024, at 09:20, Naresh Kamboju wrote:
>> > The WinLink E850-96 board boot failed with Linux next-20240506 but there
>> > is no kernel crash log on the serial [1].
>> >
>> > Anders bisection results pointing to this commit,
>> > # first bad commit:
>> > [4d11c62ca8d77cb1f79054844b598e0f4e92dabe]
>> > clkdev: report over-sized strings when creating clkdev entrie
>> >
>> > After reverting the above patch the boot test passed [2].
>> >
>> > Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>> >
>
> There are two fixes on the list: [1] and [2]. Perhaps one of those
> resolves this?
>
> [1] https://lore.kernel.org/r/20240507065317.3214186-1-m.szyprowski@xxxxxxxxxxx
> [2] https://lore.kernel.org/r/20240507064434.3213933-1-m.szyprowski@xxxxxxxxxxx

My guess is that either one avoids the crash, but we actually
want both of them since the problem is a combination of the two
issues.

I think we also need this one on top, to have a va_end() for
each return() statement:

--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -193,6 +193,7 @@ vclkdev_alloc(struct clk_hw *hw, const char *con_id, const char *dev_fmt,
cla->cl.dev_id = cla->dev_id;
}

+ va_end(ap_copy);
return &cla->cl;

fail:


Arnd