Re: [PATCH 3/3] module: Add compile-time check for embedded NUL characters

Luck, Tony
2025-12-09T18:29:12Z

On Tue, Dec 09, 2025 at 08:45:14AM -0800, Luck, Tony wrote:
> On Tue, Dec 09, 2025 at 04:20:06PM +0000, Luck, Tony wrote:
> > >> Likewise, I just got the following kernel test robot report sent to me,
> > >> where it's warning about MODULE_LICENSE("GPL"):
> > >> https://lore.kernel.org/all/202512090359.7BkUaiC9-lkp@intel.com/
> > >
> > > Can you both confirm which version of sparse are you using?
> > >
> > > My understanding was that this patch fixed that problem:
> > > >https://lore.kernel.org/linux-sparse/CACePvbVG2KrGQq4cNKV=wbO5h=jp3M0RO1SdfX8kV4OukjPG8A@mail.gmail.com/T/#mf838b3e2e3245d88c30a801ea7473d5a5c0eb121
> >
> > > The patch is already merged into the sparse tree, and I was not able to
> > > reproduce the issue.
> >
> > I pulled the latest sparse source and re-checked before reporting. Top commit I have is the one you mention:
> >
> > fbdde3127b83 ("builtin: implement __builtin_strlen() for constants")
> >
> > I'm building latest Linus tree from the current merge window (well latest as-of yesterday):
> >
> > c2f2b01b74be ("Merge tag 'i3c/for-6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux")
>
> I added a debug trace to the new expand_strlen() function added to
> sparse. It is being called and doing the right thing. My trace says:
>
> len(GPL) = 3

Simple test case:

$ cat -n s.c
1
2 _Static_assert(sizeof("GPL") - 1 == 3, "sizeof");
3
4 _Static_assert(__builtin_strlen("GPL") == 3, "strlen");

$ sparse s.c
s.c:4:40: error: bad integer constant expression
s.c:4:40: error: static assertion failed: "strlen"

So the "sizeof" bit is OK. But the __builtin_strlen() isn't.

-Tony