Update to 4.9-rc6
This commit is contained in:
parent
0971da3b71
commit
fa9e148da4
|
@ -1,5 +1,8 @@
|
|||
linux (4.9~rc5-1~exp2) UNRELEASED; urgency=medium
|
||||
linux (4.9~rc6-1~exp1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream release candidate
|
||||
|
||||
[ Uwe Kleine-König ]
|
||||
* [armhf,armel] Fix problem with module CRC generation (Closes: #844530)
|
||||
|
||||
-- Uwe Kleine-König <ukleinek@debian.org> Thu, 17 Nov 2016 09:55:16 +0100
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 4 Nov 2016 19:39:38 +0100
|
||||
Subject: kbuild: add -fno-PIE
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/mmarek/kbuild.git/commit?id=8ae94224c9d72fc4d9aaac93b2d7833cf46d7141
|
||||
Bug-Debian: https://bugs.debian.org/841368
|
||||
|
||||
Debian started to build the gcc with -fPIE by default so the kernel
|
||||
build ends before it starts properly with:
|
||||
|kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
|
||||
|
||||
Also add to KBUILD_AFLAGS due to:
|
||||
|
||||
|gcc -Wp,-MD,arch/x86/entry/vdso/vdso32/.note.o.d … -mfentry -DCC_USING_FENTRY … vdso/vdso32/note.S
|
||||
|arch/x86/entry/vdso/vdso32/note.S:1:0: sorry, unimplemented: -mfentry isn’t supported for 32-bit in combination with -fpic
|
||||
|
||||
Tagging it stable so it is possible to compile recent stable kernels as
|
||||
well.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Signed-off-by: Michal Marek <mmarek@suse.com>
|
||||
---
|
||||
Makefile | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -623,6 +623,8 @@ include arch/$(SRCARCH)/Makefile
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
|
||||
+KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
|
||||
+KBUILD_AFLAGS += $(call cc-option,-fno-PIE)
|
||||
|
||||
ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
|
||||
KBUILD_CFLAGS += $(call cc-option,-ffunction-sections,)
|
|
@ -1,41 +0,0 @@
|
|||
From: Nicholas Piggin <npiggin@gmail.com>
|
||||
Date: Wed, 9 Nov 2016 15:34:05 +1100
|
||||
Subject: kbuild: be more careful about matching preprocessed asm ___EXPORT_SYMBOL
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=cc6acc11cad1eb1ae39707a3a6e4a97fafbeeabd
|
||||
|
||||
The CRC code for asm exports grabs the preprocessed asm, finds the
|
||||
___EXPORT_SYMBOL and turns those into EXPORT_SYMBOL in a C program
|
||||
that can be preprocessed and parsed to create the CRC signatures from
|
||||
the type.
|
||||
|
||||
The existing regex matching and replacement is too strict, and doesn't
|
||||
deal well with whitespace among other things. The line
|
||||
" EXPORT_SYMBOL(sym)" in a .S file would not match due to initial
|
||||
whitespace, for example, which resulted in x86's ___preempt_schedule
|
||||
failing to get CRCs.
|
||||
|
||||
Reported-by: Philip Müller <philm@manjaro.org>
|
||||
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
|
||||
Signed-off-by: Michal Marek <mmarek@suse.com>
|
||||
---
|
||||
scripts/Makefile.build | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
|
||||
index 3e223c264469..7675d11ee65e 100644
|
||||
--- a/scripts/Makefile.build
|
||||
+++ b/scripts/Makefile.build
|
||||
@@ -332,8 +332,8 @@ cmd_gensymtypes_S = \
|
||||
(echo "\#include <linux/kernel.h>" ; \
|
||||
echo "\#include <asm/asm-prototypes.h>" ; \
|
||||
$(CPP) $(a_flags) $< | \
|
||||
- grep ^___EXPORT_SYMBOL | \
|
||||
- sed 's/___EXPORT_SYMBOL \([a-zA-Z0-9_]*\),.*/EXPORT_SYMBOL(\1);/' ) | \
|
||||
+ grep "\<___EXPORT_SYMBOL\>" | \
|
||||
+ sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ) | \
|
||||
$(CPP) -D__GENKSYMS__ $(c_flags) -xc - | \
|
||||
$(GENKSYMS) $(if $(1), -T $(2)) \
|
||||
$(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \
|
||||
--
|
||||
2.10.2
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
From: Nicholas Piggin <npiggin@gmail.com>
|
||||
Date: Tue, 1 Nov 2016 12:46:19 +1100
|
||||
Subject: [PATCH] kbuild: modversions for EXPORT_SYMBOL() for asm
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=4efca4ed05cbdfd13ec3e8cb623fb77d6e4ab187
|
||||
|
||||
Allow architectures to create asm/asm-prototypes.h file that
|
||||
provides C prototypes for exported asm functions, which enables
|
||||
proper CRC versions to be generated for them.
|
||||
|
||||
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
|
||||
Signed-off-by: Michal Marek <mmarek@suse.com>
|
||||
---
|
||||
scripts/Makefile.build | 78 ++++++++++++++++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 72 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
|
||||
index e1f25d6d132e..3e223c264469 100644
|
||||
--- a/scripts/Makefile.build
|
||||
+++ b/scripts/Makefile.build
|
||||
@@ -159,7 +159,8 @@ cmd_cpp_i_c = $(CPP) $(c_flags) -o $@ $<
|
||||
$(obj)/%.i: $(src)/%.c FORCE
|
||||
$(call if_changed_dep,cpp_i_c)
|
||||
|
||||
-cmd_gensymtypes = \
|
||||
+# These mirror gensymtypes_S and co below, keep them in synch.
|
||||
+cmd_gensymtypes_c = \
|
||||
$(CPP) -D__GENKSYMS__ $(c_flags) $< | \
|
||||
$(GENKSYMS) $(if $(1), -T $(2)) \
|
||||
$(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \
|
||||
@@ -169,7 +170,7 @@ cmd_gensymtypes = \
|
||||
quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
|
||||
cmd_cc_symtypes_c = \
|
||||
set -e; \
|
||||
- $(call cmd_gensymtypes,true,$@) >/dev/null; \
|
||||
+ $(call cmd_gensymtypes_c,true,$@) >/dev/null; \
|
||||
test -s $@ || rm -f $@
|
||||
|
||||
$(obj)/%.symtypes : $(src)/%.c FORCE
|
||||
@@ -198,9 +199,10 @@ else
|
||||
# the actual value of the checksum generated by genksyms
|
||||
|
||||
cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
|
||||
-cmd_modversions = \
|
||||
+
|
||||
+cmd_modversions_c = \
|
||||
if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
|
||||
- $(call cmd_gensymtypes,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \
|
||||
+ $(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \
|
||||
> $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
\
|
||||
$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
|
||||
@@ -268,13 +270,14 @@ endif # CONFIG_STACK_VALIDATION
|
||||
define rule_cc_o_c
|
||||
$(call echo-cmd,checksrc) $(cmd_checksrc) \
|
||||
$(call cmd_and_fixdep,cc_o_c) \
|
||||
- $(cmd_modversions) \
|
||||
+ $(cmd_modversions_c) \
|
||||
$(cmd_objtool) \
|
||||
$(call echo-cmd,record_mcount) $(cmd_record_mcount)
|
||||
endef
|
||||
|
||||
define rule_as_o_S
|
||||
$(call cmd_and_fixdep,as_o_S) \
|
||||
+ $(cmd_modversions_S) \
|
||||
$(cmd_objtool)
|
||||
endef
|
||||
|
||||
@@ -314,6 +317,39 @@ modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL)
|
||||
$(real-objs-m) : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
|
||||
$(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
|
||||
|
||||
+# .S file exports must have their C prototypes defined in asm/asm-prototypes.h
|
||||
+# or a file that it includes, in order to get versioned symbols. We build a
|
||||
+# dummy C file that includes asm-prototypes and the EXPORT_SYMBOL lines from
|
||||
+# the .S file (with trailing ';'), and run genksyms on that, to extract vers.
|
||||
+#
|
||||
+# This is convoluted. The .S file must first be preprocessed to run guards and
|
||||
+# expand names, then the resulting exports must be constructed into plain
|
||||
+# EXPORT_SYMBOL(symbol); to build our dummy C file, and that gets preprocessed
|
||||
+# to make the genksyms input.
|
||||
+#
|
||||
+# These mirror gensymtypes_c and co above, keep them in synch.
|
||||
+cmd_gensymtypes_S = \
|
||||
+ (echo "\#include <linux/kernel.h>" ; \
|
||||
+ echo "\#include <asm/asm-prototypes.h>" ; \
|
||||
+ $(CPP) $(a_flags) $< | \
|
||||
+ grep ^___EXPORT_SYMBOL | \
|
||||
+ sed 's/___EXPORT_SYMBOL \([a-zA-Z0-9_]*\),.*/EXPORT_SYMBOL(\1);/' ) | \
|
||||
+ $(CPP) -D__GENKSYMS__ $(c_flags) -xc - | \
|
||||
+ $(GENKSYMS) $(if $(1), -T $(2)) \
|
||||
+ $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \
|
||||
+ $(if $(KBUILD_PRESERVE),-p) \
|
||||
+ -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null))
|
||||
+
|
||||
+quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@
|
||||
+cmd_cc_symtypes_S = \
|
||||
+ set -e; \
|
||||
+ $(call cmd_gensymtypes_S,true,$@) >/dev/null; \
|
||||
+ test -s $@ || rm -f $@
|
||||
+
|
||||
+$(obj)/%.symtypes : $(src)/%.S FORCE
|
||||
+ $(call cmd,cc_symtypes_S)
|
||||
+
|
||||
+
|
||||
quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@
|
||||
cmd_cpp_s_S = $(CPP) $(a_flags) -o $@ $<
|
||||
|
||||
@@ -321,7 +357,37 @@ $(obj)/%.s: $(src)/%.S FORCE
|
||||
$(call if_changed_dep,cpp_s_S)
|
||||
|
||||
quiet_cmd_as_o_S = AS $(quiet_modtag) $@
|
||||
-cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
|
||||
+
|
||||
+ifndef CONFIG_MODVERSIONS
|
||||
+cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
|
||||
+
|
||||
+else
|
||||
+
|
||||
+ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h)
|
||||
+
|
||||
+ifeq ($(ASM_PROTOTYPES),)
|
||||
+cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
|
||||
+
|
||||
+else
|
||||
+
|
||||
+# versioning matches the C process described above, with difference that
|
||||
+# we parse asm-prototypes.h C header to get function definitions.
|
||||
+
|
||||
+cmd_as_o_S = $(CC) $(a_flags) -c -o $(@D)/.tmp_$(@F) $<
|
||||
+
|
||||
+cmd_modversions_S = \
|
||||
+ if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
|
||||
+ $(call cmd_gensymtypes_S,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \
|
||||
+ > $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
+ \
|
||||
+ $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
|
||||
+ -T $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
+ rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
+ else \
|
||||
+ mv -f $(@D)/.tmp_$(@F) $@; \
|
||||
+ fi;
|
||||
+endif
|
||||
+endif
|
||||
|
||||
$(obj)/%.o: $(src)/%.S $(objtool_obj) FORCE
|
||||
$(call if_changed_rule,as_o_S)
|
||||
--
|
||||
2.10.2
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 4 Nov 2016 19:39:39 +0100
|
||||
Subject: scripts/has-stack-protector: add -fno-PIE
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/mmarek/kbuild.git/commit?id=82031ea29e454b574bc6f49a33683a693ca5d907
|
||||
Bug-Debian: https://bugs.debian.org/841368
|
||||
|
||||
Adding -no-PIE to the fstack protector check. -no-PIE was introduced
|
||||
before -fstack-protector so there is no need for a runtime check.
|
||||
|
||||
Without it the build stops:
|
||||
|Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong available but compiler is broken
|
||||
|
||||
due to -mcmodel=kernel + -fPIE if -fPIE is enabled by default.
|
||||
|
||||
Tagging it stable so it is possible to compile recent stable kernels as
|
||||
well.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Signed-off-by: Michal Marek <mmarek@suse.com>
|
||||
---
|
||||
scripts/gcc-x86_64-has-stack-protector.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/scripts/gcc-x86_64-has-stack-protector.sh b/scripts/gcc-x86_64-has-stack-protector.sh
|
||||
index 973e8c141567..17867e723a51 100755
|
||||
--- a/scripts/gcc-x86_64-has-stack-protector.sh
|
||||
+++ b/scripts/gcc-x86_64-has-stack-protector.sh
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
-echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -mcmodel=kernel -fstack-protector - -o - 2> /dev/null | grep -q "%gs"
|
||||
+echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -mcmodel=kernel -fno-PIE -fstack-protector - -o - 2> /dev/null | grep -q "%gs"
|
||||
if [ "$?" -eq "0" ] ; then
|
||||
echo y
|
||||
else
|
|
@ -1,212 +0,0 @@
|
|||
From: Matt Fleming <matt@codeblueprint.co.uk>
|
||||
Date: Sat, 12 Nov 2016 21:04:24 +0000
|
||||
Subject: x86/efi: Prevent mixed mode boot corruption with CONFIG_VMAP_STACK=y
|
||||
Origin: https://git.kernel.org/linus/f6697df36bdf0bf7fce984605c2918d4a7b4269f
|
||||
|
||||
Booting an EFI mixed mode kernel has been crashing since commit:
|
||||
|
||||
e37e43a497d5 ("x86/mm/64: Enable vmapped stacks (CONFIG_HAVE_ARCH_VMAP_STACK=y)")
|
||||
|
||||
The user-visible effect in my test setup was the kernel being unable
|
||||
to find the root file system ramdisk. This was likely caused by silent
|
||||
memory or page table corruption.
|
||||
|
||||
Enabling CONFIG_DEBUG_VIRTUAL=y immediately flagged the thunking code as
|
||||
abusing virt_to_phys() because it was passing addresses that were not
|
||||
part of the kernel direct mapping.
|
||||
|
||||
Use the slow version instead, which correctly handles all memory
|
||||
regions by performing a page table walk.
|
||||
|
||||
Suggested-by: Andy Lutomirski <luto@amacapital.net>
|
||||
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
|
||||
Cc: Andy Lutomirski <luto@kernel.org>
|
||||
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Cc: Borislav Petkov <bp@alien8.de>
|
||||
Cc: Brian Gerst <brgerst@gmail.com>
|
||||
Cc: Denys Vlasenko <dvlasenk@redhat.com>
|
||||
Cc: H. Peter Anvin <hpa@zytor.com>
|
||||
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Cc: Peter Zijlstra <peterz@infradead.org>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: linux-efi@vger.kernel.org
|
||||
Link: http://lkml.kernel.org/r/20161112210424.5157-3-matt@codeblueprint.co.uk
|
||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||||
---
|
||||
arch/x86/platform/efi/efi_64.c | 80 ++++++++++++++++++++++++++++++------------
|
||||
1 file changed, 57 insertions(+), 23 deletions(-)
|
||||
|
||||
--- a/arch/x86/platform/efi/efi_64.c
|
||||
+++ b/arch/x86/platform/efi/efi_64.c
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <linux/io.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/ucs2_string.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
#include <asm/page.h>
|
||||
@@ -211,6 +212,35 @@ void efi_sync_low_kernel_mappings(void)
|
||||
memcpy(pud_efi, pud_k, sizeof(pud_t) * num_entries);
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Wrapper for slow_virt_to_phys() that handles NULL addresses.
|
||||
+ */
|
||||
+static inline phys_addr_t
|
||||
+virt_to_phys_or_null_size(void *va, unsigned long size)
|
||||
+{
|
||||
+ bool bad_size;
|
||||
+
|
||||
+ if (!va)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (virt_addr_valid(va))
|
||||
+ return virt_to_phys(va);
|
||||
+
|
||||
+ /*
|
||||
+ * A fully aligned variable on the stack is guaranteed not to
|
||||
+ * cross a page bounary. Try to catch strings on the stack by
|
||||
+ * checking that 'size' is a power of two.
|
||||
+ */
|
||||
+ bad_size = size > PAGE_SIZE || !is_power_of_2(size);
|
||||
+
|
||||
+ WARN_ON(!IS_ALIGNED((unsigned long)va, size) || bad_size);
|
||||
+
|
||||
+ return slow_virt_to_phys(va);
|
||||
+}
|
||||
+
|
||||
+#define virt_to_phys_or_null(addr) \
|
||||
+ virt_to_phys_or_null_size((addr), sizeof(*(addr)))
|
||||
+
|
||||
int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
|
||||
{
|
||||
unsigned long pfn, text;
|
||||
@@ -494,8 +524,8 @@ static efi_status_t efi_thunk_get_time(e
|
||||
|
||||
spin_lock(&rtc_lock);
|
||||
|
||||
- phys_tm = virt_to_phys(tm);
|
||||
- phys_tc = virt_to_phys(tc);
|
||||
+ phys_tm = virt_to_phys_or_null(tm);
|
||||
+ phys_tc = virt_to_phys_or_null(tc);
|
||||
|
||||
status = efi_thunk(get_time, phys_tm, phys_tc);
|
||||
|
||||
@@ -511,7 +541,7 @@ static efi_status_t efi_thunk_set_time(e
|
||||
|
||||
spin_lock(&rtc_lock);
|
||||
|
||||
- phys_tm = virt_to_phys(tm);
|
||||
+ phys_tm = virt_to_phys_or_null(tm);
|
||||
|
||||
status = efi_thunk(set_time, phys_tm);
|
||||
|
||||
@@ -529,9 +559,9 @@ efi_thunk_get_wakeup_time(efi_bool_t *en
|
||||
|
||||
spin_lock(&rtc_lock);
|
||||
|
||||
- phys_enabled = virt_to_phys(enabled);
|
||||
- phys_pending = virt_to_phys(pending);
|
||||
- phys_tm = virt_to_phys(tm);
|
||||
+ phys_enabled = virt_to_phys_or_null(enabled);
|
||||
+ phys_pending = virt_to_phys_or_null(pending);
|
||||
+ phys_tm = virt_to_phys_or_null(tm);
|
||||
|
||||
status = efi_thunk(get_wakeup_time, phys_enabled,
|
||||
phys_pending, phys_tm);
|
||||
@@ -549,7 +579,7 @@ efi_thunk_set_wakeup_time(efi_bool_t ena
|
||||
|
||||
spin_lock(&rtc_lock);
|
||||
|
||||
- phys_tm = virt_to_phys(tm);
|
||||
+ phys_tm = virt_to_phys_or_null(tm);
|
||||
|
||||
status = efi_thunk(set_wakeup_time, enabled, phys_tm);
|
||||
|
||||
@@ -558,6 +588,10 @@ efi_thunk_set_wakeup_time(efi_bool_t ena
|
||||
return status;
|
||||
}
|
||||
|
||||
+static unsigned long efi_name_size(efi_char16_t *name)
|
||||
+{
|
||||
+ return ucs2_strsize(name, EFI_VAR_NAME_LEN) + 1;
|
||||
+}
|
||||
|
||||
static efi_status_t
|
||||
efi_thunk_get_variable(efi_char16_t *name, efi_guid_t *vendor,
|
||||
@@ -567,11 +601,11 @@ efi_thunk_get_variable(efi_char16_t *nam
|
||||
u32 phys_name, phys_vendor, phys_attr;
|
||||
u32 phys_data_size, phys_data;
|
||||
|
||||
- phys_data_size = virt_to_phys(data_size);
|
||||
- phys_vendor = virt_to_phys(vendor);
|
||||
- phys_name = virt_to_phys(name);
|
||||
- phys_attr = virt_to_phys(attr);
|
||||
- phys_data = virt_to_phys(data);
|
||||
+ phys_data_size = virt_to_phys_or_null(data_size);
|
||||
+ phys_vendor = virt_to_phys_or_null(vendor);
|
||||
+ phys_name = virt_to_phys_or_null_size(name, efi_name_size(name));
|
||||
+ phys_attr = virt_to_phys_or_null(attr);
|
||||
+ phys_data = virt_to_phys_or_null_size(data, *data_size);
|
||||
|
||||
status = efi_thunk(get_variable, phys_name, phys_vendor,
|
||||
phys_attr, phys_data_size, phys_data);
|
||||
@@ -586,9 +620,9 @@ efi_thunk_set_variable(efi_char16_t *nam
|
||||
u32 phys_name, phys_vendor, phys_data;
|
||||
efi_status_t status;
|
||||
|
||||
- phys_name = virt_to_phys(name);
|
||||
- phys_vendor = virt_to_phys(vendor);
|
||||
- phys_data = virt_to_phys(data);
|
||||
+ phys_name = virt_to_phys_or_null_size(name, efi_name_size(name));
|
||||
+ phys_vendor = virt_to_phys_or_null(vendor);
|
||||
+ phys_data = virt_to_phys_or_null_size(data, data_size);
|
||||
|
||||
/* If data_size is > sizeof(u32) we've got problems */
|
||||
status = efi_thunk(set_variable, phys_name, phys_vendor,
|
||||
@@ -605,9 +639,9 @@ efi_thunk_get_next_variable(unsigned lon
|
||||
efi_status_t status;
|
||||
u32 phys_name_size, phys_name, phys_vendor;
|
||||
|
||||
- phys_name_size = virt_to_phys(name_size);
|
||||
- phys_vendor = virt_to_phys(vendor);
|
||||
- phys_name = virt_to_phys(name);
|
||||
+ phys_name_size = virt_to_phys_or_null(name_size);
|
||||
+ phys_vendor = virt_to_phys_or_null(vendor);
|
||||
+ phys_name = virt_to_phys_or_null_size(name, *name_size);
|
||||
|
||||
status = efi_thunk(get_next_variable, phys_name_size,
|
||||
phys_name, phys_vendor);
|
||||
@@ -621,7 +655,7 @@ efi_thunk_get_next_high_mono_count(u32 *
|
||||
efi_status_t status;
|
||||
u32 phys_count;
|
||||
|
||||
- phys_count = virt_to_phys(count);
|
||||
+ phys_count = virt_to_phys_or_null(count);
|
||||
status = efi_thunk(get_next_high_mono_count, phys_count);
|
||||
|
||||
return status;
|
||||
@@ -633,7 +667,7 @@ efi_thunk_reset_system(int reset_type, e
|
||||
{
|
||||
u32 phys_data;
|
||||
|
||||
- phys_data = virt_to_phys(data);
|
||||
+ phys_data = virt_to_phys_or_null_size(data, data_size);
|
||||
|
||||
efi_thunk(reset_system, reset_type, status, data_size, phys_data);
|
||||
}
|
||||
@@ -661,9 +695,9 @@ efi_thunk_query_variable_info(u32 attr,
|
||||
if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
|
||||
return EFI_UNSUPPORTED;
|
||||
|
||||
- phys_storage = virt_to_phys(storage_space);
|
||||
- phys_remaining = virt_to_phys(remaining_space);
|
||||
- phys_max = virt_to_phys(max_variable_size);
|
||||
+ phys_storage = virt_to_phys_or_null(storage_space);
|
||||
+ phys_remaining = virt_to_phys_or_null(remaining_space);
|
||||
+ phys_max = virt_to_phys_or_null(max_variable_size);
|
||||
|
||||
status = efi_thunk(query_variable_info, attr, phys_storage,
|
||||
phys_remaining, phys_max);
|
|
@ -1,32 +0,0 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Fri, 4 Nov 2016 19:39:40 +0100
|
||||
Subject: x86/kexec: add -fno-PIE
|
||||
Origin: https://git.kernel.org/cgit/linux/kernel/git/mmarek/kbuild.git/commit?id=90944e40ba1838de4b2a9290cf273f9d76bd3bdd
|
||||
Bug-Debian: https://bugs.debian.org/841368
|
||||
|
||||
If the gcc is configured to do -fPIE by default then the build aborts
|
||||
later with:
|
||||
| Unsupported relocation type: unknown type rel type name (29)
|
||||
|
||||
Tagging it stable so it is possible to compile recent stable kernels as
|
||||
well.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Signed-off-by: Michal Marek <mmarek@suse.com>
|
||||
---
|
||||
arch/x86/purgatory/Makefile | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile
|
||||
index ac58c1616408..555b9fa0ad43 100644
|
||||
--- a/arch/x86/purgatory/Makefile
|
||||
+++ b/arch/x86/purgatory/Makefile
|
||||
@@ -16,6 +16,7 @@ KCOV_INSTRUMENT := n
|
||||
|
||||
KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes -fno-zero-initialized-in-bss -fno-builtin -ffreestanding -c -MD -Os -mcmodel=large
|
||||
KBUILD_CFLAGS += -m$(BITS)
|
||||
+KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
|
||||
|
||||
$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
|
||||
$(call if_changed,ld)
|
|
@ -47,9 +47,6 @@ debian/fanotify-taint-on-use-of-fanotify_access_permissions.patch
|
|||
|
||||
# Arch bug fixes
|
||||
bugfix/arm64/arm64-mm-limit-task_size_64-for-compatibility.patch
|
||||
bugfix/x86/x86-efi-prevent-mixed-mode-boot-corruption-with-conf.patch
|
||||
bugfix/arm/kbuild-modversions-for-EXPORT_SYMBOL-for-asm.patch
|
||||
bugfix/arm/kbuild-be-more-careful-about-matching-preprocessed-a.patch
|
||||
bugfix/arm/kbuild-provide-include-asm-asm-prototypes.h-for-ARM.patch
|
||||
bugfix/arm/ARM-move-mmiocpy-mmioset-exports-to-io.c.patch
|
||||
|
||||
|
@ -67,9 +64,6 @@ bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
|
|||
bugfix/all/kbuild-do-not-use-hyphen-in-exported-variable-name.patch
|
||||
bugfix/all/ext4-fix-bug-838544.patch
|
||||
bugfix/all/mm-memcontrol-use-special-workqueue-for-creating-per-memcg-caches.patch
|
||||
bugfix/all/kbuild-add-fno-pie.patch
|
||||
bugfix/x86/scripts-has-stack-protector-add-fno-pie.patch
|
||||
bugfix/x86/x86-kexec-add-fno-pie.patch
|
||||
|
||||
# Miscellaneous features
|
||||
|
||||
|
|
Loading…
Reference in New Issue