Commit b9978c27 authored by Orlando Arias's avatar Orlando Arias Committed by Greg Kroah-Hartman

sparc: Fix -Wstringop-overflow warning


[ Upstream commit deba804c ]

Greetings,

GCC 7 introduced the -Wstringop-overflow flag to detect buffer overflows
in calls to string handling functions [1][2]. Due to the way
``empty_zero_page'' is declared in arch/sparc/include/setup.h, this
causes a warning to trigger at compile time in the function mem_init(),
which is subsequently converted to an error. The ensuing patch fixes
this issue and aligns the declaration of empty_zero_page to that of
other architectures. Thank you.

Cheers,
Orlando.

[1] https://gcc.gnu.org/ml/gcc-patches/2016-10/msg02308.html
[2] https://gcc.gnu.org/gcc-7/changes.htmlSigned-off-by: default avatarOrlando Arias <oarias@knights.ucf.edu>

--------------------------------------------------------------------------------
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b409ba3b
...@@ -91,9 +91,9 @@ extern unsigned long pfn_base; ...@@ -91,9 +91,9 @@ extern unsigned long pfn_base;
* ZERO_PAGE is a global shared page that is always zero: used * ZERO_PAGE is a global shared page that is always zero: used
* for zero-mapped memory areas etc.. * for zero-mapped memory areas etc..
*/ */
extern unsigned long empty_zero_page; extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)];
#define ZERO_PAGE(vaddr) (virt_to_page(&empty_zero_page)) #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
/* /*
* In general all page table modifications should use the V8 atomic * In general all page table modifications should use the V8 atomic
......
...@@ -16,7 +16,7 @@ extern char reboot_command[]; ...@@ -16,7 +16,7 @@ extern char reboot_command[];
*/ */
extern unsigned char boot_cpu_id; extern unsigned char boot_cpu_id;
extern unsigned long empty_zero_page; extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)];
extern int serial_console; extern int serial_console;
static inline int con_is_present(void) static inline int con_is_present(void)
......
...@@ -301,7 +301,7 @@ void __init mem_init(void) ...@@ -301,7 +301,7 @@ void __init mem_init(void)
/* Saves us work later. */ /* Saves us work later. */
memset((void *)&empty_zero_page, 0, PAGE_SIZE); memset((void *)empty_zero_page, 0, PAGE_SIZE);
i = last_valid_pfn >> ((20 - PAGE_SHIFT) + 5); i = last_valid_pfn >> ((20 - PAGE_SHIFT) + 5);
i += 1; i += 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment