[linux] 01/01: [armhf,armel] fix CRC generation for modules

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Sat Nov 19 16:08:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

ukleinek pushed a commit to branch ukleinek/arm-module-loading
in repository linux.

commit 0971da3b71d4144a71cd2f9799adcb3764b0414f
Author: Uwe Kleine-König <ukleinek at debian.org>
Date:   Sat Nov 19 17:06:08 2016 +0100

    [armhf,armel] fix CRC generation for modules
---
 debian/changelog                                   |   6 +
 .../ARM-move-mmiocpy-mmioset-exports-to-io.c.patch |  49 ++++++
 ...ore-careful-about-matching-preprocessed-a.patch |  41 +++++
 ...ild-modversions-for-EXPORT_SYMBOL-for-asm.patch | 149 ++++++++++++++++
 ...vide-include-asm-asm-prototypes.h-for-ARM.patch | 192 +++++++++++++++++++++
 debian/patches/series                              |   4 +
 6 files changed, 441 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index adc71b9..b18f57e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+linux (4.9~rc5-1~exp2) UNRELEASED; urgency=medium
+
+  * [armhf,armel] Fix problem with module CRC generation (Closes: #844530)
+
+ -- Uwe Kleine-König <ukleinek at debian.org>  Thu, 17 Nov 2016 09:55:16 +0100
+
 linux (4.9~rc5-1~exp1) experimental; urgency=medium
 
   * New upstream release candidate
diff --git a/debian/patches/bugfix/arm/ARM-move-mmiocpy-mmioset-exports-to-io.c.patch b/debian/patches/bugfix/arm/ARM-move-mmiocpy-mmioset-exports-to-io.c.patch
new file mode 100644
index 0000000..364cf66
--- /dev/null
+++ b/debian/patches/bugfix/arm/ARM-move-mmiocpy-mmioset-exports-to-io.c.patch
@@ -0,0 +1,49 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Subject: ARM: move mmiocpy/mmioset exports to io.c
+Date: Mon, 24 Oct 2016 17:06:45 +0200
+Origin: https://patchwork.kernel.org/patch/9392291/
+
+The prototypes for mmioset/mmiocpy are intentionally hidden
+inside of inline functions, which breaks the EXPORT_SYMBOL
+statements when symbol versioning is enabled.
+
+This moves the two exports from the files that implement the
+code into the kernel/io.c file, adding another local declaration
+there.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+---
+
+diff --git a/arch/arm/kernel/io.c b/arch/arm/kernel/io.c
+index eedefe050022..c74746997626 100644
+--- a/arch/arm/kernel/io.c
++++ b/arch/arm/kernel/io.c
+@@ -82,3 +82,10 @@ void _memset_io(volatile void __iomem *dst, int c, size_t count)
+ 	}
+ }
+ EXPORT_SYMBOL(_memset_io);
++
++/* can't export them from memcpy.S/memset.S because of hidden declaration */
++void mmioset(void __iomem *addr, unsigned int c, size_t n);
++EXPORT_SYMBOL(mmioset);
++
++void mmiocpy(void *dest, const void __iomem *src, size_t n);
++EXPORT_SYMBOL(mmiocpy);
+diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S
+index 1be5b6ddf37c..1f822fc52400 100644
+--- a/arch/arm/lib/memcpy.S
++++ b/arch/arm/lib/memcpy.S
+@@ -70,4 +70,3 @@ ENTRY(memcpy)
+ ENDPROC(memcpy)
+ ENDPROC(mmiocpy)
+ EXPORT_SYMBOL(memcpy)
+-EXPORT_SYMBOL(mmiocpy)
+diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
+index 7b72044cba62..6f075ca09abc 100644
+--- a/arch/arm/lib/memset.S
++++ b/arch/arm/lib/memset.S
+@@ -137,4 +137,3 @@ UNWIND( .fnend   )
+ ENDPROC(memset)
+ ENDPROC(mmioset)
+ EXPORT_SYMBOL(memset)
+-EXPORT_SYMBOL(mmioset)
diff --git a/debian/patches/bugfix/arm/kbuild-be-more-careful-about-matching-preprocessed-a.patch b/debian/patches/bugfix/arm/kbuild-be-more-careful-about-matching-preprocessed-a.patch
new file mode 100644
index 0000000..f277bfd
--- /dev/null
+++ b/debian/patches/bugfix/arm/kbuild-be-more-careful-about-matching-preprocessed-a.patch
@@ -0,0 +1,41 @@
+From: Nicholas Piggin <npiggin at 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 at manjaro.org>
+Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
+Signed-off-by: Michal Marek <mmarek at 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
+
diff --git a/debian/patches/bugfix/arm/kbuild-modversions-for-EXPORT_SYMBOL-for-asm.patch b/debian/patches/bugfix/arm/kbuild-modversions-for-EXPORT_SYMBOL-for-asm.patch
new file mode 100644
index 0000000..f4c55fd
--- /dev/null
+++ b/debian/patches/bugfix/arm/kbuild-modversions-for-EXPORT_SYMBOL-for-asm.patch
@@ -0,0 +1,149 @@
+From: Nicholas Piggin <npiggin at 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 at gmail.com>
+Signed-off-by: Michal Marek <mmarek at 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
+
diff --git a/debian/patches/bugfix/arm/kbuild-provide-include-asm-asm-prototypes.h-for-ARM.patch b/debian/patches/bugfix/arm/kbuild-provide-include-asm-asm-prototypes.h-for-ARM.patch
new file mode 100644
index 0000000..83261b1
--- /dev/null
+++ b/debian/patches/bugfix/arm/kbuild-provide-include-asm-asm-prototypes.h-for-ARM.patch
@@ -0,0 +1,192 @@
+From: Arnd Bergmann <arnd at arndb.de>
+Subject: kbuild: provide include/asm/asm-prototypes.h for ARM
+Date: Mon, 24 Oct 2016 17:05:26 +0200
+Origin: https://patchwork.kernel.org/patch/9392287/
+
+This adds an asm/asm-prototypes.h header for ARM to fix the
+broken symbol versioning for symbols exported from assembler
+files.
+
+In addition to the header, we have to do these other small
+changes:
+
+- move the exports from bitops.h to {change,clear,set,...}bit.S
+- move the exports from csumpartialgeneric.S into the files
+  including it
+
+I couldn't find the correct prototypes for the compiler builtins,
+so I went with the fake 'void f(void)' prototypes that we had
+before.
+
+This leaves the mmioset/mmiocpy function for now, as it's not
+obvious how to best handle them.
+
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+---
+
+diff --git a/arch/arm/include/asm/asm-prototypes.h b/arch/arm/include/asm/asm-prototypes.h
+new file mode 100644
+index 000000000000..04e5616a7b15
+--- /dev/null
++++ b/arch/arm/include/asm/asm-prototypes.h
+@@ -0,0 +1,34 @@
++#include <linux/arm-smccc.h>
++#include <linux/bitops.h>
++#include <linux/ftrace.h>
++#include <linux/io.h>
++#include <linux/platform_data/asoc-imx-ssi.h>
++#include <linux/string.h>
++#include <linux/uaccess.h>
++
++#include <asm/checksum.h>
++#include <asm/div64.h>
++#include <asm/memory.h>
++
++extern void __aeabi_idivmod(void);
++extern void __aeabi_idiv(void);
++extern void __aeabi_lasr(void);
++extern void __aeabi_llsl(void);
++extern void __aeabi_llsr(void);
++extern void __aeabi_lmul(void);
++extern void __aeabi_uidivmod(void);
++extern void __aeabi_uidiv(void);
++extern void __aeabi_ulcmp(void);
++
++extern void __ashldi3(void);
++extern void __ashrdi3(void);
++extern void __bswapdi2(void);
++extern void __bswapsi2(void);
++extern void __divsi3(void);
++extern void __do_div64(void);
++extern void __lshrdi3(void);
++extern void __modsi3(void);
++extern void __muldi3(void);
++extern void __ucmpdi2(void);
++extern void __udivsi3(void);
++extern void __umodsi3(void);
+diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h
+index df06638b327c..afaef2a7faec 100644
+--- a/arch/arm/lib/bitops.h
++++ b/arch/arm/lib/bitops.h
+@@ -26,7 +26,6 @@ UNWIND(	.fnstart	)
+ 	bx	lr
+ UNWIND(	.fnend		)
+ ENDPROC(\name		)
+-EXPORT_SYMBOL(\name	)
+ 	.endm
+ 
+ 	.macro	testop, name, instr, store
+@@ -57,7 +56,6 @@ UNWIND(	.fnstart	)
+ 2:	bx	lr
+ UNWIND(	.fnend		)
+ ENDPROC(\name		)
+-EXPORT_SYMBOL(\name	)
+ 	.endm
+ #else
+ 	.macro	bitop, name, instr
+@@ -77,7 +75,6 @@ UNWIND(	.fnstart	)
+ 	ret	lr
+ UNWIND(	.fnend		)
+ ENDPROC(\name		)
+-EXPORT_SYMBOL(\name	)
+ 	.endm
+ 
+ /**
+@@ -106,6 +103,5 @@ UNWIND(	.fnstart	)
+ 	ret	lr
+ UNWIND(	.fnend		)
+ ENDPROC(\name		)
+-EXPORT_SYMBOL(\name	)
+ 	.endm
+ #endif
+diff --git a/arch/arm/lib/changebit.S b/arch/arm/lib/changebit.S
+index f4027862172f..005fdd18c509 100644
+--- a/arch/arm/lib/changebit.S
++++ b/arch/arm/lib/changebit.S
+@@ -13,3 +13,4 @@
+                 .text
+ 
+ bitop	_change_bit, eor
++EXPORT_SYMBOL(_change_bit)
+diff --git a/arch/arm/lib/clearbit.S b/arch/arm/lib/clearbit.S
+index f6b75fb64d30..501eff09968d 100644
+--- a/arch/arm/lib/clearbit.S
++++ b/arch/arm/lib/clearbit.S
+@@ -13,3 +13,4 @@
+                 .text
+ 
+ bitop	_clear_bit, bic
++EXPORT_SYMBOL(_clear_bit)
+diff --git a/arch/arm/lib/csumpartialcopy.S b/arch/arm/lib/csumpartialcopy.S
+index 9c3383fed129..bdcc2eea4e5c 100644
+--- a/arch/arm/lib/csumpartialcopy.S
++++ b/arch/arm/lib/csumpartialcopy.S
+@@ -49,6 +49,7 @@
+ 
+ #define FN_ENTRY	ENTRY(csum_partial_copy_nocheck)
+ #define FN_EXIT		ENDPROC(csum_partial_copy_nocheck)
+-#define FN_EXPORT	EXPORT_SYMBOL(csum_partial_copy_nocheck)
+ 
+ #include "csumpartialcopygeneric.S"
++
++EXPORT_SYMBOL(csum_partial_copy_nocheck)
+diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S
+index 8b94d20e51d1..06825566c0f7 100644
+--- a/arch/arm/lib/csumpartialcopygeneric.S
++++ b/arch/arm/lib/csumpartialcopygeneric.S
+@@ -332,4 +332,3 @@ FN_ENTRY
+ 		mov	r5, r4, get_byte_1
+ 		b	.Lexit
+ FN_EXIT
+-FN_EXPORT
+diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S
+index 5d495edf3d83..d5522c94f58c 100644
+--- a/arch/arm/lib/csumpartialcopyuser.S
++++ b/arch/arm/lib/csumpartialcopyuser.S
+@@ -73,9 +73,9 @@
+ 
+ #define FN_ENTRY	ENTRY(csum_partial_copy_from_user)
+ #define FN_EXIT		ENDPROC(csum_partial_copy_from_user)
+-#define FN_EXPORT	EXPORT_SYMBOL(csum_partial_copy_from_user)
+ 
+ #include "csumpartialcopygeneric.S"
++EXPORT_SYMBOL(csum_partial_copy_from_user)
+ 
+ /*
+  * FIXME: minor buglet here
+diff --git a/arch/arm/lib/setbit.S b/arch/arm/lib/setbit.S
+index 618fedae4b37..d748b8d1326f 100644
+--- a/arch/arm/lib/setbit.S
++++ b/arch/arm/lib/setbit.S
+@@ -13,3 +13,4 @@
+ 		.text
+ 
+ bitop	_set_bit, orr
++EXPORT_SYMBOL(_set_bit)
+diff --git a/arch/arm/lib/testchangebit.S b/arch/arm/lib/testchangebit.S
+index 4becdc3a59cb..4d2dafa9b787 100644
+--- a/arch/arm/lib/testchangebit.S
++++ b/arch/arm/lib/testchangebit.S
+@@ -13,3 +13,4 @@
+                 .text
+ 
+ testop	_test_and_change_bit, eor, str
++EXPORT_SYMBOL(_test_and_change_bit)
+diff --git a/arch/arm/lib/testclearbit.S b/arch/arm/lib/testclearbit.S
+index 918841dcce7a..fe5cae2e480a 100644
+--- a/arch/arm/lib/testclearbit.S
++++ b/arch/arm/lib/testclearbit.S
+@@ -13,3 +13,4 @@
+                 .text
+ 
+ testop	_test_and_clear_bit, bicne, strne
++EXPORT_SYMBOL(_test_and_clear_bit)
+diff --git a/arch/arm/lib/testsetbit.S b/arch/arm/lib/testsetbit.S
+index 8d1b2fe9e487..25fed837edb3 100644
+--- a/arch/arm/lib/testsetbit.S
++++ b/arch/arm/lib/testsetbit.S
+@@ -13,3 +13,4 @@
+                 .text
+ 
+ testop	_test_and_set_bit, orreq, streq
++EXPORT_SYMBOL(_test_and_set_bit)
diff --git a/debian/patches/series b/debian/patches/series
index 5d4a0b5..a65130a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -48,6 +48,10 @@ 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
 
 # Arch features
 features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list