linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
@ 2018-02-02 15:47 Arnd Bergmann
  2018-02-05  9:02 ` Andrey Ryabinin
  0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2018-02-02 15:47 UTC (permalink / raw)
  To: Andrew Morton, Stephen Rothwell
  Cc: Nicolas Pitre, Andi Kleen, Arnd Bergmann, Andrey Ryabinin, linux-kernel

gcc-8 complains about the prototype for this function:

lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

This removes the noreturn attribute.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 lib/ubsan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/ubsan.c b/lib/ubsan.c
index 59fee96c29a0..aa817d79c47c 100644
--- a/lib/ubsan.c
+++ b/lib/ubsan.c
@@ -427,7 +427,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
 EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
 
 
-void __noreturn
+void
 __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
 {
 	unsigned long flags;
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-02-02 15:47 [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn Arnd Bergmann
@ 2018-02-05  9:02 ` Andrey Ryabinin
  2018-02-05 10:15   ` Arnd Bergmann
  0 siblings, 1 reply; 10+ messages in thread
From: Andrey Ryabinin @ 2018-02-05  9:02 UTC (permalink / raw)
  To: Arnd Bergmann, Andrew Morton, Stephen Rothwell
  Cc: Nicolas Pitre, Andi Kleen, linux-kernel



On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
> gcc-8 complains about the prototype for this function:
> 
> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
> 

That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
with 'noreturn' and 'const' attributes:

DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,                                                                                                                                                    
                      "__ubsan_handle_builtin_unreachable",                                                                                                                                                         
                      BT_FN_VOID_PTR,                                                                                                                                                                               
                      ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)


But const attribute doesn't make any sense for function that returns void or doesn't return at all.
Given that gcc-8 has not released yet, it would be better to fix this bug there.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-02-05  9:02 ` Andrey Ryabinin
@ 2018-02-05 10:15   ` Arnd Bergmann
  2018-02-05 10:31     ` Andrey Ryabinin
  0 siblings, 1 reply; 10+ messages in thread
From: Arnd Bergmann @ 2018-02-05 10:15 UTC (permalink / raw)
  To: Andrey Ryabinin
  Cc: Andrew Morton, Stephen Rothwell, Nicolas Pitre, Andi Kleen,
	Linux Kernel Mailing List

On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin
<aryabinin@virtuozzo.com> wrote:
>
>
> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
>> gcc-8 complains about the prototype for this function:
>>
>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
>>
>
> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
> with 'noreturn' and 'const' attributes:
>
> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,
>                       "__ubsan_handle_builtin_unreachable",
>                       BT_FN_VOID_PTR,
>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)
>
>
> But const attribute doesn't make any sense for function that returns void or doesn't return at all.
> Given that gcc-8 has not released yet, it would be better to fix this bug there.

Ok. Should I open a gcc bug, or will you take care of it?

       Arnd

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-02-05 10:15   ` Arnd Bergmann
@ 2018-02-05 10:31     ` Andrey Ryabinin
  2018-11-02 21:27       ` Olof Johansson
  0 siblings, 1 reply; 10+ messages in thread
From: Andrey Ryabinin @ 2018-02-05 10:31 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, Stephen Rothwell, Nicolas Pitre, Andi Kleen,
	Linux Kernel Mailing List



On 02/05/2018 01:15 PM, Arnd Bergmann wrote:
> On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin
> <aryabinin@virtuozzo.com> wrote:
>>
>>
>> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
>>> gcc-8 complains about the prototype for this function:
>>>
>>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
>>>
>>
>> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
>> with 'noreturn' and 'const' attributes:
>>
>> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,
>>                       "__ubsan_handle_builtin_unreachable",
>>                       BT_FN_VOID_PTR,
>>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)
>>
>>
>> But const attribute doesn't make any sense for function that returns void or doesn't return at all.
>> Given that gcc-8 has not released yet, it would be better to fix this bug there.
> 
> Ok. Should I open a gcc bug, or will you take care of it?
> 

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210

>        Arnd
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-02-05 10:31     ` Andrey Ryabinin
@ 2018-11-02 21:27       ` Olof Johansson
  2018-11-07 14:44         ` Andrey Ryabinin
  2018-11-07 14:45         ` [PATCH v2] " Andrey Ryabinin
  0 siblings, 2 replies; 10+ messages in thread
From: Olof Johansson @ 2018-11-02 21:27 UTC (permalink / raw)
  To: aryabinin
  Cc: Arnd Bergmann, Andrew Morton, Stephen Rothwell, Nicolas Pitre,
	Andi Kleen, Linux Kernel Mailing List

On Mon, Feb 5, 2018 at 2:31 AM Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:
>
> On 02/05/2018 01:15 PM, Arnd Bergmann wrote:
> > On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin
> > <aryabinin@virtuozzo.com> wrote:
> >>
> >>
> >> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
> >>> gcc-8 complains about the prototype for this function:
> >>>
> >>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
> >>>
> >>
> >> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
> >> with 'noreturn' and 'const' attributes:
> >>
> >> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,
> >>                       "__ubsan_handle_builtin_unreachable",
> >>                       BT_FN_VOID_PTR,
> >>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)
> >>
> >>
> >> But const attribute doesn't make any sense for function that returns void or doesn't return at all.
> >> Given that gcc-8 has not released yet, it would be better to fix this bug there.
> >
> > Ok. Should I open a gcc bug, or will you take care of it?
> >
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210

8.2.0 still shows this, and there's been no movement on that bug. How
about we pick up this patch until it's been resolved?


-Olof

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-11-02 21:27       ` Olof Johansson
@ 2018-11-07 14:44         ` Andrey Ryabinin
  2018-11-07 14:45         ` [PATCH v2] " Andrey Ryabinin
  1 sibling, 0 replies; 10+ messages in thread
From: Andrey Ryabinin @ 2018-11-07 14:44 UTC (permalink / raw)
  To: Olof Johansson
  Cc: Arnd Bergmann, Andrew Morton, Stephen Rothwell, Nicolas Pitre,
	Andi Kleen, Linux Kernel Mailing List



On 11/03/2018 12:27 AM, Olof Johansson wrote:
> On Mon, Feb 5, 2018 at 2:31 AM Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:
>>
>> On 02/05/2018 01:15 PM, Arnd Bergmann wrote:
>>> On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin
>>> <aryabinin@virtuozzo.com> wrote:
>>>>
>>>>
>>>> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
>>>>> gcc-8 complains about the prototype for this function:
>>>>>
>>>>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
>>>>>
>>>>
>>>> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
>>>> with 'noreturn' and 'const' attributes:
>>>>
>>>> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,
>>>>                       "__ubsan_handle_builtin_unreachable",
>>>>                       BT_FN_VOID_PTR,
>>>>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)
>>>>
>>>>
>>>> But const attribute doesn't make any sense for function that returns void or doesn't return at all.
>>>> Given that gcc-8 has not released yet, it would be better to fix this bug there.
>>>
>>> Ok. Should I open a gcc bug, or will you take care of it?
>>>
>>
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210
> 
> 8.2.0 still shows this, and there's been no movement on that bug. How
> about we pick up this patch until it's been resolved?
> 

Sure, I'll add info about GCC bug in changelog and resend the patch.

> 
> -Olof
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-11-02 21:27       ` Olof Johansson
  2018-11-07 14:44         ` Andrey Ryabinin
@ 2018-11-07 14:45         ` Andrey Ryabinin
  2018-11-07 16:23           ` Olof Johansson
  2018-11-07 20:55           ` Andrew Morton
  1 sibling, 2 replies; 10+ messages in thread
From: Andrey Ryabinin @ 2018-11-07 14:45 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, Olof Johansson, Arnd Bergmann, Andrey Ryabinin

From: Arnd Bergmann <arnd@arndb.de>

gcc-8 complains about the prototype for this function:

lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

This is actually a GCC's bug. In GCC internals
__ubsan_handle_builtin_unreachable() declared with both 'noreturn' and
'const' attributes instead of only 'noreturn':
   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210

Workaround this by removing the noreturn attribute.

[aryabinin: Add information about GCC bug in changelog]
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
---
 lib/ubsan.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/ubsan.c b/lib/ubsan.c
index 59fee96c29a0..e4162f59a81c 100644
--- a/lib/ubsan.c
+++ b/lib/ubsan.c
@@ -427,8 +427,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
 EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
 
 
-void __noreturn
-__ubsan_handle_builtin_unreachable(struct unreachable_data *data)
+void __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
 {
 	unsigned long flags;
 
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-11-07 14:45         ` [PATCH v2] " Andrey Ryabinin
@ 2018-11-07 16:23           ` Olof Johansson
  2018-11-07 20:55           ` Andrew Morton
  1 sibling, 0 replies; 10+ messages in thread
From: Olof Johansson @ 2018-11-07 16:23 UTC (permalink / raw)
  To: aryabinin; +Cc: Andrew Morton, Linux Kernel Mailing List, Arnd Bergmann

On Wed, Nov 7, 2018 at 6:45 AM Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> gcc-8 complains about the prototype for this function:
>
> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
>
> This is actually a GCC's bug. In GCC internals
> __ubsan_handle_builtin_unreachable() declared with both 'noreturn' and
> 'const' attributes instead of only 'noreturn':
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210
>
> Workaround this by removing the noreturn attribute.
>
> [aryabinin: Add information about GCC bug in changelog]
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>

Acked-by: Olof Johansson <olof@lixom.net>

While it's a GCC bug, it's there in official releases now and it makes
warnings noisy so we'd rather silence it.


-Olof

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-11-07 14:45         ` [PATCH v2] " Andrey Ryabinin
  2018-11-07 16:23           ` Olof Johansson
@ 2018-11-07 20:55           ` Andrew Morton
  2018-11-07 21:44             ` Arnd Bergmann
  1 sibling, 1 reply; 10+ messages in thread
From: Andrew Morton @ 2018-11-07 20:55 UTC (permalink / raw)
  To: Andrey Ryabinin; +Cc: linux-kernel, Olof Johansson, Arnd Bergmann

On Wed,  7 Nov 2018 17:45:16 +0300 Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
> 
> gcc-8 complains about the prototype for this function:
> 
> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]
> 
> This is actually a GCC's bug. In GCC internals
> __ubsan_handle_builtin_unreachable() declared with both 'noreturn' and
> 'const' attributes instead of only 'noreturn':
>    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84210
> 
> Workaround this by removing the noreturn attribute.
> 
> ...
>
> --- a/lib/ubsan.c
> +++ b/lib/ubsan.c
> @@ -427,8 +427,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
>  EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
>  
>  
> -void __noreturn
> -__ubsan_handle_builtin_unreachable(struct unreachable_data *data)
> +void __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
>  {
>  	unsigned long flags;

This code has been here since 2016 and presumably people will want to
build older kernels with newer gcc's.  So I'll add cc:stable, OK?


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn
  2018-11-07 20:55           ` Andrew Morton
@ 2018-11-07 21:44             ` Arnd Bergmann
  0 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2018-11-07 21:44 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Andrey Ryabinin, Linux Kernel Mailing List, Olof Johansson

On Wed, Nov 7, 2018 at 9:55 PM Andrew Morton <akpm@linux-foundation.org> wrote:
>
> On Wed,  7 Nov 2018 17:45:16 +0300 Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:
>
> > From: Arnd Bergmann <arnd@arndb.de>

> > --- a/lib/ubsan.c
> > +++ b/lib/ubsan.c
> > @@ -427,8 +427,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
> >  EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
> >
> >
> > -void __noreturn
> > -__ubsan_handle_builtin_unreachable(struct unreachable_data *data)
> > +void __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
> >  {
> >       unsigned long flags;
>
> This code has been here since 2016 and presumably people will want to
> build older kernels with newer gcc's.  So I'll add cc:stable, OK?
>

Yes, sounds good. Thanks,

      arnd

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-11-07 21:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-02 15:47 [PATCH] ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn Arnd Bergmann
2018-02-05  9:02 ` Andrey Ryabinin
2018-02-05 10:15   ` Arnd Bergmann
2018-02-05 10:31     ` Andrey Ryabinin
2018-11-02 21:27       ` Olof Johansson
2018-11-07 14:44         ` Andrey Ryabinin
2018-11-07 14:45         ` [PATCH v2] " Andrey Ryabinin
2018-11-07 16:23           ` Olof Johansson
2018-11-07 20:55           ` Andrew Morton
2018-11-07 21:44             ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).