From: Josh Poimboeuf <jpoimboe@redhat.com>
To: Ingo Molnar <mingo@redhat.com>
Cc: linux-kernel@vger.kernel.org, live-patching@vger.kernel.org,
Michal Marek <mmarek@suse.cz>,
Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@kernel.org>, Borislav Petkov <bp@alien8.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andi Kleen <andi@firstfloor.org>, Pedro Alves <palves@redhat.com>,
Namhyung Kim <namhyung@gmail.com>,
Bernd Petrovitsch <bernd@petrovitsch.priv.at>,
Chris J Arges <chris.j.arges@canonical.com>,
Andrew Morton <akpm@linux-foundation.org>,
David Vrabel <david.vrabel@citrix.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Jeremy Fitzhardinge <jeremy@goop.org>,
Chris Wright <chrisw@sous-sol.org>,
Alok Kataria <akataria@vmware.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
Pavel Machek <pavel@ucw.cz>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Len Brown <len.brown@intel.com>,
Matt Fleming <matt.fleming@intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
x86@kernel.org
Subject: Re: [PATCH v13 00/23] Compile-time stack metadata validation
Date: Mon, 28 Sep 2015 08:45:47 -0500 [thread overview]
Message-ID: <20150928134547.GA16266@treble.redhat.com> (raw)
In-Reply-To: <cover.1442935712.git.jpoimboe@redhat.com>
Hi Ingo,
Do you have any more objections to these patches? Would you be willing
to apply them?
Thanks!
Josh
On Tue, Sep 22, 2015 at 10:46:51AM -0500, Josh Poimboeuf wrote:
> This is v13 of the compile-time stack metadata validation patch set,
> along with proposed fixes for many of the warnings it found. It's based
> on the tip/master branch.
>
> v12 can be found here:
>
> https://lkml.kernel.org/r/cover.1441749989.git.jpoimboe@redhat.com
>
> For more information about the motivation behind this patch set, and
> more details about what it does, see the patch 4 changelog and
> tools/stacktool/Documentation/stack-validation.txt.
>
> Patch 1 fixes the formatting for the "make -C tools" help message.
>
> Patches 2-6 add stacktool and some related macros.
>
> Patches 7-21 are some proposed fixes for several of the warnings
> reported by stacktool. They've been compile-tested and boot-tested in a
> VM, but I haven't attempted any meaningful testing for many of them.
>
> Patches 22-23 are some additional warning fixes from Chris J Arges.
>
> v13:
> - LDFLAGS order fix from Chris J Arges
> - new warning fix patches from Chris J Arges
> - "--frame-pointer" -> "--check-frame-pointer"
>
> v12:
> - rename "stackvalidate" -> "stacktool"
> - move from scripts/ to tools/:
> - makefile rework
> - make a copy of the x86 insn code (and warn if the code diverges)
> - use tools/include/linux/list.h
> - move warning macros to a new warn.h file
> - change wording: "stack validation" -> "stack metadata validation"
>
> v11:
> - attempt to answer the "why" question better in the documentation and
> commit message
> - s/FP_SAVE/FRAME_BEGIN/ in documentation
>
> v10:
> - add scripts/mod to directory ignores
> - remove circular dependencies for ignored objects which are built
> before stackvalidate
> - fix CONFIG_MODVERSIONS incompatibility
>
> v9:
> - rename FRAME/ENDFRAME -> FRAME_BEGIN/FRAME_END
> - fix jump table issue for when the original instruction is a jump
> - drop paravirt thunk alignment patch
> - add maintainers to CC for proposed warning fixes
>
> v8:
> - add proposed fixes for warnings
> - fix all memory leaks
> - process ignores earlier and add more ignore checks
> - always assume POPCNT alternative is enabled
> - drop hweight inline asm fix
> - drop __schedule() ignore patch
> - change .Ltemp_\@ to .Lstackvalidate_ignore_\@ in asm macro
> - fix CONFIG_* checks in asm macros
> - add C versions of ignore macros and frame macros
> - change ";" to "\n" in C macros
> - add ifdef CONFIG_STACK_VALIDATION checks in C ignore macros
> - use numbered label in C ignore macro
> - add missing break in switch case statement in arch-x86.c
>
> v7:
> - sibling call support
> - document proposed solution for inline asm() frame pointer issues
> - say "kernel entry/exit" instead of "context switch"
> - clarify the checking of switch statement jump tables
> - discard __stackvalidate_ignore_* sections in linker script
> - use .Ltemp_\@ to get a unique label instead of static 3-digit number
> - change STACKVALIDATE_IGNORE_FUNC variable to a static
> - move STACKVALIDATE_IGNORE_INSN to arch-specific .h file
>
> v6:
> - rename asmvalidate -> stackvalidate (again)
> - gcc-generated object file support
> - recursive branch state analysis
> - external jump support
> - fixup/exception table support
> - jump label support
> - switch statement jump table support
> - added documentation
> - detection of "noreturn" dead end functions
> - added a Kbuild mechanism for skipping files and dirs
> - moved frame pointer macros to arch/x86/include/asm/frame.h
> - moved ignore macros to include/linux/stackvalidate.h
>
> v5:
> - stackvalidate -> asmvalidate
> - frame pointers only required for non-leaf functions
> - check for the use of the FP_SAVE/RESTORE macros instead of manually
> analyzing code to detect frame pointer usage
> - additional checks to ensure each function doesn't leave its boundaries
> - make the macros simpler and more flexible
> - support for analyzing ALTERNATIVE macros
> - simplified the arch interfaces in scripts/asmvalidate/arch.h
> - fixed some asmvalidate warnings
> - rebased onto latest tip asm cleanups
> - many more small changes
>
> v4:
> - Changed the default to CONFIG_STACK_VALIDATION=n, until all the asm
> code can get cleaned up.
> - Fixed a stackvalidate error path exit code issue found by Michal
> Marek.
>
> v3:
> - Added a patch to make the push/pop CFI macros arch-independent, as
> suggested by H. Peter Anvin
>
> v2:
> - Fixed memory leaks reported by Petr Mladek
>
> Cc: linux-kernel@vger.kernel.org
> Cc: live-patching@vger.kernel.org
> Cc: Michal Marek <mmarek@suse.cz>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Andi Kleen <andi@firstfloor.org>
> Cc: Pedro Alves <palves@redhat.com>
> Cc: Namhyung Kim <namhyung@gmail.com>
> Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at>
> Cc: Chris J Arges <chris.j.arges@canonical.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
>
>
> Chris J Arges (2):
> x86/uaccess: Add stack frame output operand in get_user inline asm
> x86/stacktool: Ignore head_$(BITS) files.
>
> Josh Poimboeuf (21):
> tools: Fix formatting of the "make -C tools" help message
> x86/asm: Frame pointer macro cleanup
> x86/asm: Add C versions of frame pointer macros
> x86/stacktool: Compile-time stack metadata validation
> x86/stacktool: Add file and directory ignores
> x86/stacktool: Add ignore macros
> x86/xen: Add stack frame dependency to hypercall inline asm calls
> x86/paravirt: Add stack frame dependency to PVOP inline asm calls
> x86/paravirt: Create a stack frame in PV_CALLEE_SAVE_REGS_THUNK
> x86/amd: Set ELF function type for vide()
> x86/reboot: Add ljmp instructions to stacktool whitelist
> x86/xen: Add xen_cpuid() and xen_setup_gdt() to stacktool whitelists
> x86/asm/crypto: Create stack frames in aesni-intel_asm.S
> x86/asm/crypto: Move .Lbswap_mask data to .rodata section
> x86/asm/crypto: Move jump_table to .rodata section
> x86/asm/crypto: Create stack frames in clmul_ghash_mul/update()
> x86/asm/entry: Create stack frames in thunk functions
> x86/asm/acpi: Create a stack frame in do_suspend_lowlevel()
> x86/asm: Create stack frames in rwsem functions
> x86/asm/efi: Create a stack frame in efi_call()
> x86/asm/power: Create stack frames in hibernate_asm_64.S
>
> MAINTAINERS | 7 +
> Makefile | 5 +-
> arch/Kconfig | 6 +
> arch/x86/Kconfig | 1 +
> arch/x86/boot/Makefile | 3 +-
> arch/x86/boot/compressed/Makefile | 3 +-
> arch/x86/crypto/aesni-intel_asm.S | 21 +
> arch/x86/crypto/crc32c-pcl-intel-asm_64.S | 8 +-
> arch/x86/crypto/ghash-clmulni-intel_asm.S | 5 +
> arch/x86/entry/thunk_64.S | 4 +
> arch/x86/entry/vdso/Makefile | 5 +-
> arch/x86/include/asm/frame.h | 51 +-
> arch/x86/include/asm/paravirt.h | 9 +-
> arch/x86/include/asm/paravirt_types.h | 18 +-
> arch/x86/include/asm/stacktool.h | 45 +
> arch/x86/include/asm/uaccess.h | 5 +-
> arch/x86/include/asm/xen/hypercall.h | 5 +-
> arch/x86/kernel/Makefile | 1 +
> arch/x86/kernel/acpi/wakeup_64.S | 3 +
> arch/x86/kernel/cpu/amd.c | 5 +-
> arch/x86/kernel/reboot.c | 7 +-
> arch/x86/kernel/vmlinux.lds.S | 5 +-
> arch/x86/lib/rwsem.S | 11 +-
> arch/x86/platform/efi/efi_stub_64.S | 3 +
> arch/x86/power/hibernate_asm_64.S | 7 +
> arch/x86/purgatory/Makefile | 2 +
> arch/x86/realmode/Makefile | 4 +-
> arch/x86/realmode/rm/Makefile | 3 +-
> arch/x86/xen/enlighten.c | 4 +-
> drivers/firmware/efi/libstub/Makefile | 1 +
> include/linux/stacktool.h | 29 +
> lib/Kconfig.debug | 12 +
> scripts/Makefile.build | 37 +-
> scripts/mod/Makefile | 2 +
> tools/Makefile | 43 +-
> tools/stacktool/.gitignore | 1 +
> tools/stacktool/Build | 4 +
> tools/stacktool/Documentation/stack-validation.txt | 336 +++++++
> tools/stacktool/Makefile | 51 ++
> tools/stacktool/arch.h | 44 +
> tools/stacktool/arch/x86/Build | 12 +
> tools/stacktool/arch/x86/decode.c | 163 ++++
> .../stacktool/arch/x86/insn/gen-insn-attr-x86.awk | 387 ++++++++
> tools/stacktool/arch/x86/insn/inat.c | 97 ++
> tools/stacktool/arch/x86/insn/inat.h | 221 +++++
> tools/stacktool/arch/x86/insn/inat_types.h | 29 +
> tools/stacktool/arch/x86/insn/insn.c | 594 +++++++++++++
> tools/stacktool/arch/x86/insn/insn.h | 201 +++++
> tools/stacktool/arch/x86/insn/x86-opcode-map.txt | 984 +++++++++++++++++++++
> tools/stacktool/elf.c | 403 +++++++++
> tools/stacktool/elf.h | 79 ++
> tools/stacktool/special.c | 199 +++++
> tools/stacktool/special.h | 42 +
> tools/stacktool/stacktool.c | 980 ++++++++++++++++++++
> tools/stacktool/warn.h | 60 ++
> 55 files changed, 5196 insertions(+), 71 deletions(-)
> create mode 100644 arch/x86/include/asm/stacktool.h
> create mode 100644 include/linux/stacktool.h
> create mode 100644 tools/stacktool/.gitignore
> create mode 100644 tools/stacktool/Build
> create mode 100644 tools/stacktool/Documentation/stack-validation.txt
> create mode 100644 tools/stacktool/Makefile
> create mode 100644 tools/stacktool/arch.h
> create mode 100644 tools/stacktool/arch/x86/Build
> create mode 100644 tools/stacktool/arch/x86/decode.c
> create mode 100644 tools/stacktool/arch/x86/insn/gen-insn-attr-x86.awk
> create mode 100644 tools/stacktool/arch/x86/insn/inat.c
> create mode 100644 tools/stacktool/arch/x86/insn/inat.h
> create mode 100644 tools/stacktool/arch/x86/insn/inat_types.h
> create mode 100644 tools/stacktool/arch/x86/insn/insn.c
> create mode 100644 tools/stacktool/arch/x86/insn/insn.h
> create mode 100644 tools/stacktool/arch/x86/insn/x86-opcode-map.txt
> create mode 100644 tools/stacktool/elf.c
> create mode 100644 tools/stacktool/elf.h
> create mode 100644 tools/stacktool/special.c
> create mode 100644 tools/stacktool/special.h
> create mode 100644 tools/stacktool/stacktool.c
> create mode 100644 tools/stacktool/warn.h
>
> --
> 2.4.3
next prev parent reply other threads:[~2015-09-28 13:46 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-22 15:46 [PATCH v13 00/23] Compile-time stack metadata validation Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 01/23] tools: Fix formatting of the "make -C tools" help message Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 02/23] x86/asm: Frame pointer macro cleanup Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 03/23] x86/asm: Add C versions of frame pointer macros Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 04/23] x86/stacktool: Compile-time stack metadata validation Josh Poimboeuf
2015-09-23 11:38 ` Jiri Slaby
2015-09-23 11:40 ` Jiri Slaby
2015-09-23 12:42 ` [PATCH v13.1 " Josh Poimboeuf
2015-10-01 14:50 ` Chris J Arges
2015-10-01 15:25 ` Josh Poimboeuf
2015-10-01 15:38 ` Chris J Arges
2015-09-22 15:46 ` [PATCH v13 05/23] x86/stacktool: Add file and directory ignores Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 06/23] x86/stacktool: Add ignore macros Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 07/23] x86/xen: Add stack frame dependency to hypercall inline asm calls Josh Poimboeuf
2015-09-22 15:46 ` [PATCH v13 08/23] x86/paravirt: Add stack frame dependency to PVOP " Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 09/23] x86/paravirt: Create a stack frame in PV_CALLEE_SAVE_REGS_THUNK Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 10/23] x86/amd: Set ELF function type for vide() Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 11/23] x86/reboot: Add ljmp instructions to stacktool whitelist Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 12/23] x86/xen: Add xen_cpuid() and xen_setup_gdt() to stacktool whitelists Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 13/23] x86/asm/crypto: Create stack frames in aesni-intel_asm.S Josh Poimboeuf
2015-10-01 6:10 ` minipli
2015-10-01 13:29 ` Josh Poimboeuf
2015-10-01 17:36 ` Mathias Krause
2015-10-01 17:51 ` Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 14/23] x86/asm/crypto: Move .Lbswap_mask data to .rodata section Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 15/23] x86/asm/crypto: Move jump_table " Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 16/23] x86/asm/crypto: Create stack frames in clmul_ghash_mul/update() Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 17/23] x86/asm/entry: Create stack frames in thunk functions Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 18/23] x86/asm/acpi: Create a stack frame in do_suspend_lowlevel() Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 19/23] x86/asm: Create stack frames in rwsem functions Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 20/23] x86/asm/efi: Create a stack frame in efi_call() Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 21/23] x86/asm/power: Create stack frames in hibernate_asm_64.S Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 22/23] x86/uaccess: Add stack frame output operand in get_user inline asm Josh Poimboeuf
2015-09-22 15:47 ` [PATCH v13 23/23] x86/stacktool: Ignore head_$(BITS) files Josh Poimboeuf
2015-09-28 13:45 ` Josh Poimboeuf [this message]
2015-10-12 7:41 ` [PATCH v13 00/23] Compile-time stack metadata validation Ingo Molnar
2015-10-12 14:23 ` Josh Poimboeuf
2015-11-11 18:14 ` Josh Poimboeuf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150928134547.GA16266@treble.redhat.com \
--to=jpoimboe@redhat.com \
--cc=akataria@vmware.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=bernd@petrovitsch.priv.at \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=chris.j.arges@canonical.com \
--cc=chrisw@sous-sol.org \
--cc=davem@davemloft.net \
--cc=david.vrabel@citrix.com \
--cc=herbert@gondor.apana.org.au \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=konrad.wilk@oracle.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=luto@kernel.org \
--cc=matt.fleming@intel.com \
--cc=mingo@redhat.com \
--cc=mmarek@suse.cz \
--cc=namhyung@gmail.com \
--cc=palves@redhat.com \
--cc=pavel@ucw.cz \
--cc=peterz@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=rusty@rustcorp.com.au \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.