All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] [v2] x86/boot/compressed/64: fix warning for 32-bit trampoline copy
@ 2018-02-22 11:28 Arnd Bergmann
  2018-02-23  8:27 ` [tip:x86/mm] x86/boot/compressed/64: Fix warning for 32-bit trampoline memcpy() tip-bot for Arnd Bergmann
  0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2018-02-22 11:28 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, x86, Kirill A. Shutemov
  Cc: Arnd Bergmann, Martin Sebor, H. Peter Anvin, linux-kernel

gcc-8 warns that we copy TRAMPOLINE_32BIT_CODE_SIZE bytes from the pointer
to the function into actual trampoline, when that pointer is only 8 bytes:

In file included from arch/x86/boot/compressed/pgtable_64.c:3:
arch/x86/boot/compressed/pgtable_64.c: In function 'paging_prepare':
arch/x86/boot/compressed/../string.h:18:23: error: '__builtin_memcpy' reading 96 bytes from a region of size 8 [-Werror=stringop-overflow=]
 #define memcpy(d,s,l) __builtin_memcpy(d,s,l)
                       ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/boot/compressed/pgtable_64.c:62:2: note: in expansion of macro 'memcpy'
  memcpy(trampoline + TRAMPOLINE_32BIT_CODE_OFFSET / sizeof(unsigned long),
  ^~~~~~

It turns out that the declaration is incorrect here: trampoline_32bit_src
is defined as a function in arch/x86/boot/compressed/head_64.S, not a
pointer to a function. Fixing the prototype to match addresses the warning.

Cc: Martin Sebor <msebor@gmail.com>
Suggested-by: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Fixes: b91993a87aff ("x86/boot/compressed/64: Prepare trampoline memory")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
v2: fix prototype rather than (incorrectly) change the user
---
 arch/x86/boot/compressed/pgtable.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/pgtable.h b/arch/x86/boot/compressed/pgtable.h
index 6e0db2260147..5e0b1c4abef4 100644
--- a/arch/x86/boot/compressed/pgtable.h
+++ b/arch/x86/boot/compressed/pgtable.h
@@ -12,7 +12,7 @@
 
 #ifndef __ASSEMBLER__
 
-extern void (*trampoline_32bit_src)(void *return_ptr);
+extern void trampoline_32bit_src(void *return_ptr);
 
 #endif /* __ASSEMBLER__ */
 #endif /* BOOT_COMPRESSED_PAGETABLE_H */
-- 
2.9.0

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

* [tip:x86/mm] x86/boot/compressed/64: Fix warning for 32-bit trampoline memcpy()
  2018-02-22 11:28 [PATCH] [v2] x86/boot/compressed/64: fix warning for 32-bit trampoline copy Arnd Bergmann
@ 2018-02-23  8:27 ` tip-bot for Arnd Bergmann
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Arnd Bergmann @ 2018-02-23  8:27 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, msebor, arnd, mingo, kirill.shutemov, hpa, linux-kernel,
	peterz, torvalds

Commit-ID:  fba407e1710ae4c558e1e2b55b5a55b2c07a596d
Gitweb:     https://git.kernel.org/tip/fba407e1710ae4c558e1e2b55b5a55b2c07a596d
Author:     Arnd Bergmann <arnd@arndb.de>
AuthorDate: Thu, 22 Feb 2018 12:28:05 +0100
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 23 Feb 2018 08:29:54 +0100

x86/boot/compressed/64: Fix warning for 32-bit trampoline memcpy()

GCC-8 warns that we copy TRAMPOLINE_32BIT_CODE_SIZE bytes from the pointer
to the function into actual trampoline, when that pointer is only 8 bytes:

  In file included from arch/x86/boot/compressed/pgtable_64.c:3:
  arch/x86/boot/compressed/pgtable_64.c: In function 'paging_prepare':
  arch/x86/boot/compressed/../string.h:18:23: error: '__builtin_memcpy' reading 96 bytes from a region of size 8 [-Werror=stringop-overflow=]
   #define memcpy(d,s,l) __builtin_memcpy(d,s,l)
                       ^~~~~~~~~~~~~~~~~~~~~~~
  arch/x86/boot/compressed/pgtable_64.c:62:2: note: in expansion of macro 'memcpy'
    memcpy(trampoline + TRAMPOLINE_32BIT_CODE_OFFSET / sizeof(unsigned long),
    ^~~~~~

It turns out that the declaration is incorrect here: trampoline_32bit_src
is defined as a function in arch/x86/boot/compressed/head_64.S, not a
pointer to a function. Fixing the prototype to match addresses the warning.

Suggested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Sebor <msebor@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: b91993a87aff ("x86/boot/compressed/64: Prepare trampoline memory")
Link: http://lkml.kernel.org/r/20180222112817.456380-1-arnd@arndb.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/boot/compressed/pgtable.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/pgtable.h b/arch/x86/boot/compressed/pgtable.h
index 6e0db2260147..5e0b1c4abef4 100644
--- a/arch/x86/boot/compressed/pgtable.h
+++ b/arch/x86/boot/compressed/pgtable.h
@@ -12,7 +12,7 @@
 
 #ifndef __ASSEMBLER__
 
-extern void (*trampoline_32bit_src)(void *return_ptr);
+extern void trampoline_32bit_src(void *return_ptr);
 
 #endif /* __ASSEMBLER__ */
 #endif /* BOOT_COMPRESSED_PAGETABLE_H */

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

end of thread, other threads:[~2018-02-23  8:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-22 11:28 [PATCH] [v2] x86/boot/compressed/64: fix warning for 32-bit trampoline copy Arnd Bergmann
2018-02-23  8:27 ` [tip:x86/mm] x86/boot/compressed/64: Fix warning for 32-bit trampoline memcpy() tip-bot for Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.