2008-03-30 18:01:41

by Adrian Bunk

[permalink] [raw]
Subject: wish: build time warning for missing MODULE_LICENSE

I just fixed a bug where I had accidentally removed a MODULE_LICENSE()
from a file.

The problem is that such bugs are currently not discovered until someone
actually runs a kernel with this module loaded.

Could we get a build time warning/error for a missing MODULE_LICENSE?

TIA
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed


2008-03-30 19:04:17

by Sam Ravnborg

[permalink] [raw]
Subject: Re: wish: build time warning for missing MODULE_LICENSE

On Sun, Mar 30, 2008 at 09:01:19PM +0300, Adrian Bunk wrote:
> I just fixed a bug where I had accidentally removed a MODULE_LICENSE()
> from a file.
>
> The problem is that such bugs are currently not discovered until someone
> actually runs a kernel with this module loaded.
>
> Could we get a build time warning/error for a missing MODULE_LICENSE?

Is it something as simple as this you are after?
[My dev box is dead atm so I have not done a kernel build
with this, only a single module].

Sam

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 695b5d6..e8560a0 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1552,6 +1552,8 @@ static void read_symbols(char *modname)
}

license = get_modinfo(info.modinfo, info.modinfo_len, "license");
+ if (!license && !is_vmlinux(modname))
+ warn("modpost: missing MODULE_LICENSE() in %s\n", modname);
while (license) {
if (license_is_gpl_compatible(license))
mod->gpl_compatible = 1;

2008-03-30 20:34:43

by Adrian Bunk

[permalink] [raw]
Subject: Re: wish: build time warning for missing MODULE_LICENSE

On Sun, Mar 30, 2008 at 09:04:30PM +0200, Sam Ravnborg wrote:
> On Sun, Mar 30, 2008 at 09:01:19PM +0300, Adrian Bunk wrote:
> > I just fixed a bug where I had accidentally removed a MODULE_LICENSE()
> > from a file.
> >
> > The problem is that such bugs are currently not discovered until someone
> > actually runs a kernel with this module loaded.
> >
> > Could we get a build time warning/error for a missing MODULE_LICENSE?
>
> Is it something as simple as this you are after?
> [My dev box is dead atm so I have not done a kernel build
> with this, only a single module].

Thanks, it seems to work - and I'm currently working on fixing the bugs
it catches.

Considering that these are trivial to fix I'd even suggest a fatal()
instead of the warn() for making them obvious for everyone doing build
testing.

> Sam
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 695b5d6..e8560a0 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -1552,6 +1552,8 @@ static void read_symbols(char *modname)
> }
>
> license = get_modinfo(info.modinfo, info.modinfo_len, "license");
> + if (!license && !is_vmlinux(modname))
> + warn("modpost: missing MODULE_LICENSE() in %s\n", modname);
> while (license) {
> if (license_is_gpl_compatible(license))
> mod->gpl_compatible = 1;

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2008-04-01 02:23:19

by Dave Jones

[permalink] [raw]
Subject: Re: wish: build time warning for missing MODULE_LICENSE

On Sun, Mar 30, 2008 at 11:34:17PM +0300, Adrian Bunk wrote:
> On Sun, Mar 30, 2008 at 09:04:30PM +0200, Sam Ravnborg wrote:
> > On Sun, Mar 30, 2008 at 09:01:19PM +0300, Adrian Bunk wrote:
> > > I just fixed a bug where I had accidentally removed a MODULE_LICENSE()
> > > from a file.
> > >
> > > The problem is that such bugs are currently not discovered until someone
> > > actually runs a kernel with this module loaded.
> > >
> > > Could we get a build time warning/error for a missing MODULE_LICENSE?
> >
> > Is it something as simple as this you are after?
> > [My dev box is dead atm so I have not done a kernel build
> > with this, only a single module].
>
> Thanks, it seems to work - and I'm currently working on fixing the bugs
> it catches.
>
> Considering that these are trivial to fix I'd even suggest a fatal()
> instead of the warn() for making them obvious for everyone doing build
> testing.

In the Fedora kernel specfile, we have something to catch this at build time.
Relevant pieces are (munged a bit for clarity) ..

find . -name "*.ko" -type f >modnames

while read i
do
echo -n "$i " >> modinfo
/sbin/modinfo -l $i >> modinfo
done < modnames

egrep -v \
'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' \
modinfo && exit 1

This hasn't been triggering though, so either it stopped working at some point,
or we don't build the module you mention. Which was it out of curiosity ?
Or was your slip-up an -mm only thing?

Dave

--
http://www.codemonkey.org.uk