| From foo@baz Wed May 31 16:49:17 JST 2017 |
| From: Orlando Arias <oarias@knights.ucf.edu> |
| Date: Tue, 16 May 2017 15:34:00 -0400 |
| Subject: sparc: Fix -Wstringop-overflow warning |
| |
| From: Orlando Arias <oarias@knights.ucf.edu> |
| |
| |
| [ Upstream commit deba804c90642c8ed0f15ac1083663976d578f54 ] |
| |
| 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.html |
| |
| Signed-off-by: Orlando Arias <oarias@knights.ucf.edu> |
| |
| -------------------------------------------------------------------------------- |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/sparc/include/asm/pgtable_32.h | 4 ++-- |
| arch/sparc/include/asm/setup.h | 2 +- |
| arch/sparc/mm/init_32.c | 2 +- |
| 3 files changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/arch/sparc/include/asm/pgtable_32.h |
| +++ b/arch/sparc/include/asm/pgtable_32.h |
| @@ -91,9 +91,9 @@ extern unsigned long pfn_base; |
| * ZERO_PAGE is a global shared page that is always zero: used |
| * 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 |
| --- a/arch/sparc/include/asm/setup.h |
| +++ b/arch/sparc/include/asm/setup.h |
| @@ -16,7 +16,7 @@ extern char reboot_command[]; |
| */ |
| 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; |
| static inline int con_is_present(void) |
| --- a/arch/sparc/mm/init_32.c |
| +++ b/arch/sparc/mm/init_32.c |
| @@ -301,7 +301,7 @@ void __init mem_init(void) |
| |
| |
| /* 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 += 1; |