Message ID | 20190722213250.238685-1-ndesaulniers@google.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] x86/purgatory: do not use __builtin_memcpy and __builtin_memset | expand |
Joe, Is it possible to have scripts/get_maintainer.pl always cc linux-kernel@vger.kernel.org? I just sent out a series, and it seems the cover letter didn't get sent to LKML. I usually use this shell function to send patches: ``` function kpatch () { patch=$1 shift git send-email \ --cc-cmd="./scripts/get_maintainer.pl --norolestats $patch" \ $@ $patch } ``` Invoked via: ``` $ mkdir purgatory $ git format-patch HEAD~2 --cover-letter -o purgatory -v2 $ kpatch purgatory/v2-000* --cc peterz@infradead.org --cc clang-built-linux@googlegroups.com ``` Maybe I should just add `--cc linux-kernel@vger.kernel.org` to my shell function? On Mon, Jul 22, 2019 at 2:33 PM Nick Desaulniers <ndesaulniers@google.com> wrote: > > 1. Reuse the implementation of memcpy and memset instead of relying on > __builtin_memcpy and __builtin_memset as it causes infinite recursion > in Clang (at any opt level) or GCC at -O2. > 2. Don't reset KBUILD_CFLAGS, rather filter CONFIG_FUNCTION_TRACER flags > via `CFLAGS_REMOVE_<file>.o = -pg`. > > The order of the patches are reversed; in case we ever need to bisect, > the memcpy/memset infinite recursion would occur with just patch 2/2 > applied. > > V2 of: https://lkml.org/lkml/2019/7/17/755 > > Nick Desaulniers (2): > x86/purgatory: do not use __builtin_memcpy and __builtin_memset > x86/purgatory: use CFLAGS_REMOVE rather than reset KBUILD_CFLAGS > > arch/x86/purgatory/Makefile | 15 ++++++++++----- > arch/x86/purgatory/purgatory.c | 6 ++++++ > arch/x86/purgatory/string.c | 23 ----------------------- > 3 files changed, 16 insertions(+), 28 deletions(-) > delete mode 100644 arch/x86/purgatory/string.c > > -- > 2.22.0.657.g960e92d24f-goog > -- Thanks, ~Nick Desaulniers
diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile index 3cf302b26332..91ef244026d2 100644 --- a/arch/x86/purgatory/Makefile +++ b/arch/x86/purgatory/Makefile @@ -6,6 +6,9 @@ purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string targets += $(purgatory-y) PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y)) +$(obj)/string.o: $(srctree)/arch/x86/boot/compressed/string.c FORCE + $(call if_changed_rule,cc_o_c) + $(obj)/sha256.o: $(srctree)/lib/sha256.c FORCE $(call if_changed_rule,cc_o_c) diff --git a/arch/x86/purgatory/purgatory.c b/arch/x86/purgatory/purgatory.c index 6d8d5a34c377..b607bda786f6 100644 --- a/arch/x86/purgatory/purgatory.c +++ b/arch/x86/purgatory/purgatory.c @@ -68,3 +68,9 @@ void purgatory(void) } copy_backup_region(); } + +/* + * Defined in order to reuse memcpy() and memset() from + * arch/x86/boot/compressed/string.c + */ +void warn(const char *msg) {} diff --git a/arch/x86/purgatory/string.c b/arch/x86/purgatory/string.c deleted file mode 100644 index 01ad43873ad9..000000000000 --- a/arch/x86/purgatory/string.c +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Simple string functions. - * - * Copyright (C) 2014 Red Hat Inc. - * - * Author: - * Vivek Goyal <vgoyal@redhat.com> - */ - -#include <linux/types.h> - -#include "../boot/string.c" - -void *memcpy(void *dst, const void *src, size_t len) -{ - return __builtin_memcpy(dst, src, len); -} - -void *memset(void *dst, int c, size_t len) -{ - return __builtin_memset(dst, c, len); -}