Message ID | 20230527110409.497408-1-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: skbuff: fix missing a __noreturn annotation warning | expand |
From: Miaohe Lin <linmiaohe@huawei.com> Date: Sat, 27 May 2023 19:04:09 +0800 > Add __noreturn annotation to fix the warning: > net/core/skbuff.o: warning: objtool: skb_push+0x3c: skb_panic() is missing a __noreturn annotation > net/core/skbuff.o: warning: objtool: skb_put+0x4e: skb_panic() is missing a __noreturn annotation What arch are you using ? IIUC, BUG() should have an annotation for objtool, for example, __builtin_unreachable() for x86. Maybe the arch is missing such an annotation ? Also I'm curious why objtool complains about only skb_push(), there should be more non-inline functions that has BUG(). Thanks, Kuniyuki > > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > --- > net/core/skbuff.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index 6724a84ebb09..12b525aa4783 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -181,8 +181,8 @@ EXPORT_SYMBOL_GPL(drop_reasons_unregister_subsys); > * Keep out of line to prevent kernel bloat. > * __builtin_return_address is not used because it is not always reliable. > */ > -static void skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, > - const char msg[]) > +static void __noreturn skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, > + const char msg[]) > { > pr_emerg("%s: text:%px len:%d put:%d head:%px data:%px tail:%#lx end:%#lx dev:%s\n", > msg, addr, skb->len, sz, skb->head, skb->data, > -- > 2.27.0
On 2023/5/27 12:00, Kuniyuki Iwashima wrote: > From: Miaohe Lin <linmiaohe@huawei.com> > Date: Sat, 27 May 2023 19:04:09 +0800 >> Add __noreturn annotation to fix the warning: >> net/core/skbuff.o: warning: objtool: skb_push+0x3c: skb_panic() is missing a __noreturn annotation >> net/core/skbuff.o: warning: objtool: skb_put+0x4e: skb_panic() is missing a __noreturn annotation > > What arch are you using ? > > IIUC, BUG() should have an annotation for objtool, for > example, __builtin_unreachable() for x86. > > Maybe the arch is missing such an annotation ? > > Also I'm curious why objtool complains about only skb_push(), > there should be more non-inline functions that has BUG(). I'm not really sure. I was just compiling the kernel using my old gcc (GCC) 7.3.0 and saw this warning. Maybe this warning is just false positive. Thanks. > > Thanks, > Kuniyuki > > >> >> Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> >> --- >> net/core/skbuff.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/net/core/skbuff.c b/net/core/skbuff.c >> index 6724a84ebb09..12b525aa4783 100644 >> --- a/net/core/skbuff.c >> +++ b/net/core/skbuff.c >> @@ -181,8 +181,8 @@ EXPORT_SYMBOL_GPL(drop_reasons_unregister_subsys); >> * Keep out of line to prevent kernel bloat. >> * __builtin_return_address is not used because it is not always reliable. >> */ >> -static void skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, >> - const char msg[]) >> +static void __noreturn skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, >> + const char msg[]) >> { >> pr_emerg("%s: text:%px len:%d put:%d head:%px data:%px tail:%#lx end:%#lx dev:%s\n", >> msg, addr, skb->len, sz, skb->head, skb->data, >> -- >> 2.27.0 > . >
On Fri, 2023-05-26 at 21:00 -0700, Kuniyuki Iwashima wrote: > From: Miaohe Lin <linmiaohe@huawei.com> > Date: Sat, 27 May 2023 19:04:09 +0800 > > Add __noreturn annotation to fix the warning: > > net/core/skbuff.o: warning: objtool: skb_push+0x3c: skb_panic() is missing a __noreturn annotation > > net/core/skbuff.o: warning: objtool: skb_put+0x4e: skb_panic() is missing a __noreturn annotation > > What arch are you using ? > > IIUC, BUG() should have an annotation for objtool, for > example, __builtin_unreachable() for x86. > > Maybe the arch is missing such an annotation ? > > Also I'm curious why objtool complains about only skb_push(), > there should be more non-inline functions that has BUG(). AFAICS, the BUG() macro implementation should already carry the __noreturn annotation, via panic() or other arch-specific way. This looks like the old toolchain not being able to successfully/correctly propagate the annotation??? I think we can drop this patch. Cheers, Paolo
On 2023/5/30 18:28, Paolo Abeni wrote: > On Fri, 2023-05-26 at 21:00 -0700, Kuniyuki Iwashima wrote: >> From: Miaohe Lin <linmiaohe@huawei.com> >> Date: Sat, 27 May 2023 19:04:09 +0800 >>> Add __noreturn annotation to fix the warning: >>> net/core/skbuff.o: warning: objtool: skb_push+0x3c: skb_panic() is missing a __noreturn annotation >>> net/core/skbuff.o: warning: objtool: skb_put+0x4e: skb_panic() is missing a __noreturn annotation >> >> What arch are you using ? >> >> IIUC, BUG() should have an annotation for objtool, for >> example, __builtin_unreachable() for x86. >> >> Maybe the arch is missing such an annotation ? >> >> Also I'm curious why objtool complains about only skb_push(), >> there should be more non-inline functions that has BUG(). > > AFAICS, the BUG() macro implementation should already carry the > __noreturn annotation, via panic() or other arch-specific way. > > This looks like the old toolchain not being able to > successfully/correctly propagate the annotation??? I tend to agree with you. Will drop it. Thanks for your comment. > > I think we can drop this patch. > > Cheers, > > Paolo > > . >
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 6724a84ebb09..12b525aa4783 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -181,8 +181,8 @@ EXPORT_SYMBOL_GPL(drop_reasons_unregister_subsys); * Keep out of line to prevent kernel bloat. * __builtin_return_address is not used because it is not always reliable. */ -static void skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, - const char msg[]) +static void __noreturn skb_panic(struct sk_buff *skb, unsigned int sz, void *addr, + const char msg[]) { pr_emerg("%s: text:%px len:%d put:%d head:%px data:%px tail:%#lx end:%#lx dev:%s\n", msg, addr, skb->len, sz, skb->head, skb->data,
Add __noreturn annotation to fix the warning: net/core/skbuff.o: warning: objtool: skb_push+0x3c: skb_panic() is missing a __noreturn annotation net/core/skbuff.o: warning: objtool: skb_put+0x4e: skb_panic() is missing a __noreturn annotation Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> --- net/core/skbuff.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)