diff --git a/package/kernel/mac80211/patches/subsys/070-backports-add-netif_receive_skb_list.patch b/package/kernel/mac80211/patches/subsys/070-backports-add-netif_receive_skb_list.patch new file mode 100644 index 0000000000..b26a6bc389 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/070-backports-add-netif_receive_skb_list.patch @@ -0,0 +1,30 @@ +From: Felix Fietkau +Date: Fri, 14 Aug 2020 16:13:45 +0200 +Subject: [PATCH] backports: add netif_receive_skb_list + +It will be needed by pending mac80211 changes + +Signed-off-by: Felix Fietkau +--- + +--- a/backport-include/linux/netdevice.h ++++ b/backport-include/linux/netdevice.h +@@ -372,6 +372,18 @@ static inline int _bp_netdev_upper_dev_l + macro_dispatcher(netdev_upper_dev_link, __VA_ARGS__)(__VA_ARGS__) + #endif + ++#if LINUX_VERSION_IS_LESS(4,19,0) ++static inline void netif_receive_skb_list(struct list_head *head) ++{ ++ struct sk_buff *skb, *next; ++ ++ list_for_each_entry_safe(skb, next, head, list) { ++ skb_list_del_init(skb); ++ netif_receive_skb(skb); ++ } ++} ++#endif ++ + #if LINUX_VERSION_IS_LESS(5,0,0) + static inline int backport_dev_open(struct net_device *dev, struct netlink_ext_ack *extack) + { diff --git a/package/kernel/mac80211/patches/subsys/071-backports-add-skb_list_del_init.patch b/package/kernel/mac80211/patches/subsys/071-backports-add-skb_list_del_init.patch new file mode 100644 index 0000000000..ee7e63498a --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/071-backports-add-skb_list_del_init.patch @@ -0,0 +1,24 @@ +From: Felix Fietkau +Date: Fri, 14 Aug 2020 16:13:55 +0200 +Subject: [PATCH] backports: add skb_list_del_init + +It will be needed by pending mac80211 changes + +Signed-off-by: Felix Fietkau +--- + +--- a/backport-include/linux/skbuff.h ++++ b/backport-include/linux/skbuff.h +@@ -384,6 +384,12 @@ static inline void skb_mark_not_on_list( + { + skb->next = NULL; + } ++ ++static inline void skb_list_del_init(struct sk_buff *skb) ++{ ++ __list_del_entry(&skb->list); ++ skb_mark_not_on_list(skb); ++} + #endif /* 4.19.10 <= x < 4.20 */ + #endif + diff --git a/target/linux/generic/backport-5.4/310-v5.6-mips-vdso-fix-jalr-t9-crash-in-vdso-code.patch b/target/linux/generic/backport-5.4/310-v5.6-mips-vdso-fix-jalr-t9-crash-in-vdso-code.patch new file mode 100644 index 0000000000..20551d81dc --- /dev/null +++ b/target/linux/generic/backport-5.4/310-v5.6-mips-vdso-fix-jalr-t9-crash-in-vdso-code.patch @@ -0,0 +1,59 @@ +From d3f703c4359ff06619b2322b91f69710453e6b6d Mon Sep 17 00:00:00 2001 +From: Victor Kamensky +Date: Tue, 11 Feb 2020 11:24:33 -0800 +Subject: [PATCH] mips: vdso: fix 'jalr t9' crash in vdso code + +Observed that when kernel is built with Yocto mips64-poky-linux-gcc, +and mips64-poky-linux-gnun32-gcc toolchain, resulting vdso contains +'jalr t9' instructions in its code and since in vdso case nobody +sets GOT table code crashes when instruction reached. On other hand +observed that when kernel is built mips-poky-linux-gcc toolchain, the +same 'jalr t9' instruction are replaced with PC relative function +calls using 'bal' instructions. + +The difference boils down to -mrelax-pic-calls and -mexplicit-relocs +gcc options that gets different default values depending on gcc +target triplets and corresponding binutils. -mrelax-pic-calls got +enabled by default only in mips-poky-linux-gcc case. MIPS binutils +ld relies on R_MIPS_JALR relocation to convert 'jalr t9' into 'bal' +and such relocation is generated only if -mrelax-pic-calls option +is on. + +Please note 'jalr t9' conversion to 'bal' can happen only to static +functions. These static PIC calls use mips local GOT entries that +are supposed to be filled with start of DSO value by run-time linker +(missing in VDSO case) and they do not have dynamic relocations. +Global mips GOT entries must have dynamic relocations and they should +be prevented by cmd_vdso_check Makefile rule. + +Solution call out -mrelax-pic-calls and -mexplicit-relocs options +explicitly while compiling MIPS vdso code. That would get correct +and consistent between different toolchains behaviour. + +Reported-by: Bruce Ashfield +Signed-off-by: Victor Kamensky +Signed-off-by: Paul Burton +Cc: linux-mips@vger.kernel.org +Cc: Ralf Baechle +Cc: James Hogan +Cc: Vincenzo Frascino +Cc: richard.purdie@linuxfoundation.org +--- + arch/mips/vdso/Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile +index aa89a41dc5dd..848baeaef1f8 100644 +--- a/arch/mips/vdso/Makefile ++++ b/arch/mips/vdso/Makefile +@@ -33,6 +33,7 @@ endif + cflags-vdso := $(ccflags-vdso) \ + $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ + -O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ ++ -mrelax-pic-calls -mexplicit-relocs \ + -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \ + $(call cc-option, -fno-asynchronous-unwind-tables) \ + $(call cc-option, -fno-stack-protector) +-- +2.17.1 +