auxdisplay: panel: avoid gcc 8's Wstringop-truncation warning
Subsystems (2)
PATCH v2 2/2 auxdisplay: panel: avoid gcc 8's Wstringop-truncation warning
Let gcc know it is not meant to be NUL-terminated by annotating with the new __nonstring variable attribute; and remove the comment since it conveys the same information.
--- drivers/auxdisplay/panel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/auxdisplay/panel.c +3 -4
@@ -155,10 +155,9 @@ struct logical_input {int release_data; } std;struct {/* valid when type == INPUT_TYPE_KBD */ -/* strings can be non null-terminated */ -char press_str[sizeof (void *) +sizeof (int )]; -char repeat_str[sizeof (void *) +sizeof (int )]; -char release_str[sizeof (void *) +sizeof (int )]; + char press_str[sizeof(void *) + sizeof(int)] __nonstring; + char repeat_str[sizeof(void *) + sizeof(int)] __nonstring; + char release_str[sizeof(void *) + sizeof(int)] __nonstring; } kbd; } u; };
Signature · 1 line
2.17.1
Quoted 20 lines · Miguel Ojeda
Let gcc know it is not meant to be NUL-terminated by annotating with the new
__nonstringvariable attribute; and remove the comment since it conveys the same information.Cc Willy Tarreau <[email protected]>Cc Geert Uytterhoeven <[email protected]>Cc Martin Sebor <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>--- drivers/auxdisplay/panel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)drivers/auxdisplay/panel.c +0
-0@@ -155,10 +155,9 @@ struct logical_input {int release_data; } std;struct {/* valid when type == INPUT_TYPE_KBD */
drivers/auxdisplay/panel.c struct logical_input { · line 163
Quoted 10 lines
drivers/auxdisplay/panel.c +3
-4-/* strings can be non null-terminated */ -char press_str[sizeof (void *) +sizeof (int )]; -char repeat_str[sizeof (void *) +sizeof (int )]; -char release_str[sizeof (void *) +sizeof (int )]; + char press_str[sizeof(void *) + sizeof(int)] __nonstring; + char repeat_str[sizeof(void *) + sizeof(int)] __nonstring; + char release_str[sizeof(void *) + sizeof(int)] __nonstring; } kbd; } u; };
If it's not a string, why not use "u8" instead of "char"? Does the warning persist?
-Kees
Signature · 2 lines
Kees Cook Pixel Security
Quoted 27 lines · Kees Cook
Quoted 25 lines · Miguel Ojeda
Let gcc know it is not meant to be NUL-terminated by annotating with the new
__nonstringvariable attribute; and remove the comment since it conveys the same information.Cc Willy Tarreau <[email protected]>Cc Geert Uytterhoeven <[email protected]>Cc Martin Sebor <[email protected]>Signed-off-by Miguel Ojeda <[email protected]>--- drivers/auxdisplay/panel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)drivers/auxdisplay/panel.c +1
-4@@ -155,10 +155,9 @@ struct logical_input {int release_data; } std;struct {/* valid when type == INPUT_TYPE_KBD */ -/* strings can be non null-terminated */ -char press_str[sizeof (void *) +sizeof (int )]; -char repeat_str[sizeof (void *) +sizeof (int )]; -char release_str[sizeof (void *) +sizeof (int )]; + char press_str[sizeof(void *) + sizeof(int)] __nonstring;
Quoted 8 lines
drivers/auxdisplay/panel.c struct logical_input { · line 163
Quoted 5 lines
drivers/auxdisplay/panel.c +2
-0+ char repeat_str[sizeof(void *) + sizeof(int)] __nonstring; + char release_str[sizeof(void *) + sizeof(int)] __nonstring; } kbd; } u; };If it's not a string, why not use "u8" instead of "char"? Does the warning persist?
Yes, it persists (on purpose). Originally it didn't, but see the discussion at:
https://www.spinics.net/lists/kernel/msg2737596.html
And:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84725
Cheers,
Miguel
Quoted 6 lines
-Kees
--
Kees Cook
Pixel Security