GCC4 warning: no return statement in function returning
Quoted 10 lines · Jesse Millan
Signed-off-by Jesse Millan <[email protected]>The function
kauditd_thread()does not return an integer as the declaration says it should. There is no return statement in the body whatsoever and looks like the function should have been declared as returning void.
---
Can you put Signed-off-by at end of description, I don't think I've seen it elsewhere often. And please try to make Subjects that are different for every patch.
kernel/audit.c static int audit_set_failure(int state, · line 278
Quoted 11 lines
diff -puN
kernel/audit.c~audit-patchkernel/audit.ckernel/audit.c renamed from kernel/audit.c~audit-patch +1
-1@@ -275,7 +275,7 @@ static int audit_set_failure(int state,return old; } -int kauditd_thread (void *dummy) +void kauditd_thread (void *dummy)
This should warn too, as kthread_create() (kthread_run()) accepts int (*threadfn)(void *data)
I think kauditd_thread() should be fixed here to return something... "The return value should be zero or a negative error number:
it will be passed to kthread_stop()."
Quoted 9 lines
kernel/audit.c renamed from kernel/audit.c~audit-patch +0
-0{struct sk_buff *skb;_
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 10 lines · Domen Puncer
Review
Quoted 2 lines · Jesse Millan
(quoted diff) +1
-1-int kauditd_thread(void *dummy) +void kauditd_thread(void *dummy)This should warn too, as
kthread_create()(kthread_run()) accepts int (*threadfn)(void *data)I think
kauditd_thread()should be fixed here to return something... "The return value should be zero or a negative error number:
it will be passed tokthread_stop()."
But it doesn't return at all (d'oh, should have seen this before). Still... there's a warning if it returns void, right?
Domen
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors
Re: [KJ] Re: GCC4 warning: no return statement in function
In reply to Domen PuncerOn Sat, 2 Jul 2005 00:22:51 +0200 Domen Puncer wrote:
| On 02/07/05 00:15 +0200, Domen Puncer wrote: | > On 01/07/05 11:19 -0700, Jesse Millan wrote: | > > -int kauditd_thread(void *dummy) | > > +void kauditd_thread(void *dummy) | > | > This should warn too, as kthread_create() (kthread_run()) accepts | > int (*threadfn)(void *data) | > | > I think kauditd_thread() should be fixed here to return something... | > "The return value should be zero or a negative error number: | > it will be passed to kthread_stop()." | | But it doesn't return at all (d'oh, should have seen this before). | Still... there's a warning if it returns void, right?
so it needs
__attribute__((noreturn))
added to the function?
(or ATTRIB_NORET)
---
~Randy
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 15 lines · Domen Puncer
Quoted 11 lines · Domen Puncer
Review
Quoted 2 lines · Jesse Millan
(quoted diff) +1
-1-int kauditd_thread(void *dummy) +void kauditd_thread(void *dummy)This should warn too, as
kthread_create()(kthread_run()) accepts int (*threadfn)(void *data)I think
kauditd_thread()should be fixed here to return something... "The return value should be zero or a negative error number:
it will be passed tokthread_stop()."
Quoted 6 lines
But it doesn't return at all (d'oh, should have seen this before). Still... there's a warning if it returns void, right?
Domen
Yes, missed that. Chaning the return type removes one warning and adds another:
kernel/audit.c:386: warning: passing argument 1 of 'kthread_create' from incompatible pointer type
Signature · 12 lines
Jesse Millan CNS Unix Team Portland State University Phone: (503) 725-9151 Mobile: (503) 453-0748 GPG key: www.system-calls.com/gpg.php grep --recursive --ignore-case 'SHOULD WORK' /usr/src/linux/* | wc _______________________________________________ Kernel-janitors mailing list [email protected] https://lists.osdl.org/mailman/listinfo/kernel-janitors
Quoted 17 lines · randy_dunlap
On Sat, 2 Jul 2005 00:22:51 +0200 Domen Puncer wrote:
| On 02/07/05 00:15 +0200, Domen Puncer wrote: | > On 01/07/05 11:19 -0700, Jesse Millan wrote: | > > -int kauditd_thread(void *dummy) | > > +void kauditd_thread(void *dummy) | > | > This should warn too, as kthread_create() (kthread_run()) accepts | > int (*threadfn)(void *data) | > | > I think kauditd_thread() should be fixed here to return something... | > "The return value should be zero or a negative error number: | > it will be passed to kthread_stop()." | | But it doesn't return at all (d'oh, should have seen this before). | Still... there's a warning if it returns void, right?
Quoted 8 lines
so it needs
__attribute__((noreturn))
added to the function?
(orATTRIB_NORET)---
~Randy
Using the noreturn attribute implies to me that the return type should be void. That can't be because kthread_run() expects a pointer to a function that returns an int. Any return statement after the while(1) is unreacable as Domen pointed out...
Could you clarify what needs to be done?
Signature · 12 lines
Jesse Millan CNS Unix Team Portland State University Phone: (503) 725-9151 Mobile: (503) 453-0748 GPG key: www.system-calls.com/gpg.php grep --recursive --ignore-case 'SHOULD WORK' /usr/src/linux/* | wc _______________________________________________ Kernel-janitors mailing list [email protected] https://lists.osdl.org/mailman/listinfo/kernel-janitors
Re: [KJ] Re: GCC4 warning: no return statement in function
In reply to Domen PuncerOn Thu, 07 Jul 2005 14:14:13 -0700 Jesse Millan wrote:
| randy_dunlap wrote: | > On Sat, 2 Jul 2005 00:22:51 +0200 Domen Puncer wrote: | > | > | On 02/07/05 00:15 +0200, Domen Puncer wrote: | > | > On 01/07/05 11:19 -0700, Jesse Millan wrote: | > | > > -int kauditd_thread(void *dummy) | > | > > +void kauditd_thread(void *dummy) | > | > | > | > This should warn too, as kthread_create() (kthread_run()) accepts | > | > int (*threadfn)(void *data) | > | > | > | > I think kauditd_thread() should be fixed here to return something... | > | > "The return value should be zero or a negative error number: | > | > it will be passed to kthread_stop()." | > | | > | But it doesn't return at all (d'oh, should have seen this before). | > | Still... there's a warning if it returns void, right? | > | > so it needs | > __attribute__((noreturn)) | > added to the function? | > (or ATTRIB_NORET) | > | > --- | > ~Randy | > | | Using the noreturn attribute implies to me that the return type should | be void. That can't be because kthread_run() expects a pointer to a | function that returns an int. Any return statement after the while(1) is | unreacable as Domen pointed out... | | Could you clarify what needs to be done?
Not really. and your summary above is correct, including that the return type for noreturn should be void. (see GCC 4.0.1 manual:
http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Function-Attributes.html#Function-Attributes
"It does not make sense for a noreturn function to have a return type other than void."
I suppose you could try asking on the
[email protected] mailing list.
---
~Randy
_______________________________________________
Kernel-janitors mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/kernel-janitors