2009-07-04 16:40:41

by Robert P. J. Day

[permalink] [raw]
Subject: value of returning positive error code from module_init()?


whoops, i forgot to ask this as well. accidentally, i returned a
positive value from a module_init() routine, which loaded the module
and generated in /var/log/messages:

...
Jul 4 12:34:43 localhost kernel: hi module being loaded.
Jul 4 12:34:43 localhost kernel: sys_init_module: 'hi'->init
suspiciously returned 42, it should follow 0/-E convention
Jul 4 12:34:43 localhost kernel: sys_init_module: loading module
anyway...
Jul 4 12:34:43 localhost kernel: Pid: 3881, comm: insmod Tainted: G
M 2.6.29.5-191.fc11.x86_64 #1
Jul 4 12:34:43 localhost kernel: Call Trace:
Jul 4 12:34:43 localhost kernel: [<ffffffff8106f33b>]
sys_init_module+0x13e/0x1cd
Jul 4 12:34:43 localhost kernel: [<ffffffff8101133a>]
system_call_fastpath+0x16
...

i'd never seen that before, i guess because i never returned a
positive error code. is there a tradition for returning positive
values? for what purpose? thanks.

rday
--

========================================================================
Robert P. J. Day Waterloo, Ontario, CANADA

Linux Consulting, Training and Annoying Kernel Pedantry.

Web page: http://crashcourse.ca
Linked In: http://www.linkedin.com/in/rpjday
Twitter: http://twitter.com/rpjday
========================================================================


2009-07-04 18:00:34

by Robert Hancock

[permalink] [raw]
Subject: Re: value of returning positive error code from module_init()?

On 07/04/2009 10:38 AM, Robert P. J. Day wrote:
> whoops, i forgot to ask this as well. accidentally, i returned a
> positive value from a module_init() routine, which loaded the module
> and generated in /var/log/messages:
>
> ...
> Jul 4 12:34:43 localhost kernel: hi module being loaded.
> Jul 4 12:34:43 localhost kernel: sys_init_module: 'hi'->init
> suspiciously returned 42, it should follow 0/-E convention
> Jul 4 12:34:43 localhost kernel: sys_init_module: loading module
> anyway...
> Jul 4 12:34:43 localhost kernel: Pid: 3881, comm: insmod Tainted: G
> M 2.6.29.5-191.fc11.x86_64 #1
> Jul 4 12:34:43 localhost kernel: Call Trace:
> Jul 4 12:34:43 localhost kernel: [<ffffffff8106f33b>]
> sys_init_module+0x13e/0x1cd
> Jul 4 12:34:43 localhost kernel: [<ffffffff8101133a>]
> system_call_fastpath+0x16
> ...
>
> i'd never seen that before, i guess because i never returned a
> positive error code. is there a tradition for returning positive
> values? for what purpose? thanks.

My guess would be no, hence the warning you're not supposed to do it..