From 644d8d09445e74b99149fbe8409956b90423e362 Mon Sep 17 00:00:00 2001 From: RISCi_ATOM Date: Sat, 14 Sep 2019 10:56:47 -0400 Subject: [PATCH] Bump linux-libre kernel to 4.14.143 --- include/kernel-version.mk | 4 +- ...0027-MIPS-ath79-drop-legacy-IRQ-code.patch | 95 +++--- ...-v5.3-net-sched-fix-action-ipt-crash.patch | 290 ------------------ 3 files changed, 56 insertions(+), 333 deletions(-) delete mode 100644 target/linux/generic/backport-4.14/390-v5.3-net-sched-fix-action-ipt-crash.patch diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 592a7513ca..b0d8632867 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.14 = .141 +LINUX_VERSION-4.14 = .143 -LINUX_KERNEL_HASH-4.14.141 = dd0113acab0acbe70b27f891d4f772ee405706db8082b60b9d21a06e7f1fa730 +LINUX_KERNEL_HASH-4.14.143 = 85f8e19c250a3e125625705b4a182bfabf76319fb268107b189349cfee96e95e remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/ath79/patches-4.14/0027-MIPS-ath79-drop-legacy-IRQ-code.patch b/target/linux/ath79/patches-4.14/0027-MIPS-ath79-drop-legacy-IRQ-code.patch index 6586f08431..2471628be9 100644 --- a/target/linux/ath79/patches-4.14/0027-MIPS-ath79-drop-legacy-IRQ-code.patch +++ b/target/linux/ath79/patches-4.14/0027-MIPS-ath79-drop-legacy-IRQ-code.patch @@ -9,14 +9,15 @@ All IRQs are now handled via the new irqchip drivers. Signed-off-by: John Crispin --- arch/mips/ath79/Makefile | 2 +- - arch/mips/ath79/irq.c | 169 ------------------------------- arch/mips/ath79/setup.c | 6 ++ arch/mips/include/asm/mach-ath79/ath79.h | 4 - 4 files changed, 7 insertions(+), 174 deletions(-) delete mode 100644 arch/mips/ath79/irq.c ---- a/arch/mips/ath79/Makefile -+++ b/arch/mips/ath79/Makefile +Index: linux-4.14.143/arch/mips/ath79/Makefile +=================================================================== +--- linux-4.14.143.orig/arch/mips/ath79/Makefile ++++ linux-4.14.143/arch/mips/ath79/Makefile @@ -8,7 +8,7 @@ # under the terms of the GNU General Public License version 2 as published # by the Free Software Foundation. @@ -26,9 +27,48 @@ Signed-off-by: John Crispin obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_PCI) += pci.o ---- a/arch/mips/ath79/irq.c +Index: linux-4.14.143/arch/mips/ath79/setup.c +=================================================================== +--- linux-4.14.143.orig/arch/mips/ath79/setup.c ++++ linux-4.14.143/arch/mips/ath79/setup.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -305,6 +306,11 @@ void __init plat_time_init(void) + mips_hpt_frequency = cpu_clk_rate / 2; + } + ++void __init arch_init_irq(void) ++{ ++ irqchip_init(); ++} ++ + static int __init ath79_setup(void) + { + if (mips_machtype == ATH79_MACH_GENERIC_OF) +Index: linux-4.14.143/arch/mips/include/asm/mach-ath79/ath79.h +=================================================================== +--- linux-4.14.143.orig/arch/mips/include/asm/mach-ath79/ath79.h ++++ linux-4.14.143/arch/mips/include/asm/mach-ath79/ath79.h +@@ -178,8 +178,4 @@ static inline u32 ath79_reset_rr(unsigne + void ath79_device_reset_set(u32 mask); + void ath79_device_reset_clear(u32 mask); + +-void ath79_cpu_irq_init(unsigned irq_wb_chan2, unsigned irq_wb_chan3); +-void ath79_misc_irq_init(void __iomem *regs, int irq, +- int irq_base, bool is_ar71xx); +- + #endif /* __ASM_MACH_ATH79_H */ +Index: linux-4.14.143/arch/mips/ath79/irq.c +=================================================================== +--- linux-4.14.143.orig/arch/mips/ath79/irq.c +++ /dev/null -@@ -1,169 +0,0 @@ +@@ -1,175 +0,0 @@ -/* - * Atheros AR71xx/AR724x/AR913x specific interrupt handling - * @@ -63,15 +103,21 @@ Signed-off-by: John Crispin - u32 status; - - status = ath79_reset_rr(AR934X_RESET_REG_PCIE_WMAC_INT_STATUS); +- status &= AR934X_PCIE_WMAC_INT_PCIE_ALL | AR934X_PCIE_WMAC_INT_WMAC_ALL; +- +- if (status == 0) { +- spurious_interrupt(); +- return; +- } - - if (status & AR934X_PCIE_WMAC_INT_PCIE_ALL) { - ath79_ddr_wb_flush(3); - generic_handle_irq(ATH79_IP2_IRQ(0)); -- } else if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) { +- } +- +- if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) { - ath79_ddr_wb_flush(4); - generic_handle_irq(ATH79_IP2_IRQ(1)); -- } else { -- spurious_interrupt(); - } -} - @@ -198,36 +244,3 @@ Signed-off-by: John Crispin - else if (soc_is_qca955x()) - qca955x_irq_init(); -} ---- a/arch/mips/ath79/setup.c -+++ b/arch/mips/ath79/setup.c -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -305,6 +306,11 @@ void __init plat_time_init(void) - mips_hpt_frequency = cpu_clk_rate / 2; - } - -+void __init arch_init_irq(void) -+{ -+ irqchip_init(); -+} -+ - static int __init ath79_setup(void) - { - if (mips_machtype == ATH79_MACH_GENERIC_OF) ---- a/arch/mips/include/asm/mach-ath79/ath79.h -+++ b/arch/mips/include/asm/mach-ath79/ath79.h -@@ -178,8 +178,4 @@ static inline u32 ath79_reset_rr(unsigne - void ath79_device_reset_set(u32 mask); - void ath79_device_reset_clear(u32 mask); - --void ath79_cpu_irq_init(unsigned irq_wb_chan2, unsigned irq_wb_chan3); --void ath79_misc_irq_init(void __iomem *regs, int irq, -- int irq_base, bool is_ar71xx); -- - #endif /* __ASM_MACH_ATH79_H */ diff --git a/target/linux/generic/backport-4.14/390-v5.3-net-sched-fix-action-ipt-crash.patch b/target/linux/generic/backport-4.14/390-v5.3-net-sched-fix-action-ipt-crash.patch deleted file mode 100644 index ff1f9c0394..0000000000 --- a/target/linux/generic/backport-4.14/390-v5.3-net-sched-fix-action-ipt-crash.patch +++ /dev/null @@ -1,290 +0,0 @@ -From: Cong Wang -To: netdev@vger.kernel.org -Cc: Cong Wang , - Tony Ambardar , - Jamal Hadi Salim , - Jiri Pirko -Subject: [Patch net] net_sched: fix a NULL pointer deref in ipt action -Date: Sun, 25 Aug 2019 10:01:32 -0700 - -The net pointer in struct xt_tgdtor_param is not explicitly -initialized therefore is still NULL when dereferencing it. -So we have to find a way to pass the correct net pointer to -ipt_destroy_target(). - -The best way I find is just saving the net pointer inside the per -netns struct tcf_idrinfo, which could make this patch smaller. - -Fixes: 0c66dc1ea3f0 ("netfilter: conntrack: register hooks in netns when needed by ruleset") -Reported-and-tested-by: Tony Ambardar -Cc: Jamal Hadi Salim -Cc: Jiri Pirko -Signed-off-by: Cong Wang - -[Backported for kernel v4.14] -Signed-off-by: Tony Ambardar ---- - include/net/act_api.h | 4 +++- - net/sched/act_bpf.c | 2 +- - net/sched/act_connmark.c | 2 +- - net/sched/act_csum.c | 2 +- - net/sched/act_gact.c | 2 +- - net/sched/act_ife.c | 2 +- - net/sched/act_ipt.c | 11 ++++++----- - net/sched/act_mirred.c | 2 +- - net/sched/act_nat.c | 2 +- - net/sched/act_pedit.c | 2 +- - net/sched/act_police.c | 2 +- - net/sched/act_sample.c | 2 +- - net/sched/act_simple.c | 2 +- - net/sched/act_skbedit.c | 2 +- - net/sched/act_skbmod.c | 2 +- - net/sched/act_tunnel_key.c | 2 +- - net/sched/act_vlan.c | 2 +- - 17 files changed, 24 insertions(+), 21 deletions(-) - ---- a/include/net/act_api.h -+++ b/include/net/act_api.h -@@ -14,6 +14,7 @@ - struct tcf_idrinfo { - spinlock_t lock; - struct idr action_idr; -+ struct net *net; - }; - - struct tc_action_ops; -@@ -104,7 +105,7 @@ struct tc_action_net { - }; - - static inline --int tc_action_net_init(struct tc_action_net *tn, -+int tc_action_net_init(struct net *net, struct tc_action_net *tn, - const struct tc_action_ops *ops) - { - int err = 0; -@@ -113,6 +114,7 @@ int tc_action_net_init(struct tc_action_ - if (!tn->idrinfo) - return -ENOMEM; - tn->ops = ops; -+ tn->idrinfo->net = net; - spin_lock_init(&tn->idrinfo->lock); - idr_init(&tn->idrinfo->action_idr); - return err; ---- a/net/sched/act_bpf.c -+++ b/net/sched/act_bpf.c -@@ -402,7 +402,7 @@ static __net_init int bpf_init_net(struc - { - struct tc_action_net *tn = net_generic(net, bpf_net_id); - -- return tc_action_net_init(tn, &act_bpf_ops); -+ return tc_action_net_init(net, tn, &act_bpf_ops); - } - - static void __net_exit bpf_exit_net(struct net *net) ---- a/net/sched/act_connmark.c -+++ b/net/sched/act_connmark.c -@@ -206,7 +206,7 @@ static __net_init int connmark_init_net( - { - struct tc_action_net *tn = net_generic(net, connmark_net_id); - -- return tc_action_net_init(tn, &act_connmark_ops); -+ return tc_action_net_init(net, tn, &act_connmark_ops); - } - - static void __net_exit connmark_exit_net(struct net *net) ---- a/net/sched/act_csum.c -+++ b/net/sched/act_csum.c -@@ -632,7 +632,7 @@ static __net_init int csum_init_net(stru - { - struct tc_action_net *tn = net_generic(net, csum_net_id); - -- return tc_action_net_init(tn, &act_csum_ops); -+ return tc_action_net_init(net, tn, &act_csum_ops); - } - - static void __net_exit csum_exit_net(struct net *net) ---- a/net/sched/act_gact.c -+++ b/net/sched/act_gact.c -@@ -232,7 +232,7 @@ static __net_init int gact_init_net(stru - { - struct tc_action_net *tn = net_generic(net, gact_net_id); - -- return tc_action_net_init(tn, &act_gact_ops); -+ return tc_action_net_init(net, tn, &act_gact_ops); - } - - static void __net_exit gact_exit_net(struct net *net) ---- a/net/sched/act_ife.c -+++ b/net/sched/act_ife.c -@@ -837,7 +837,7 @@ static __net_init int ife_init_net(struc - { - struct tc_action_net *tn = net_generic(net, ife_net_id); - -- return tc_action_net_init(tn, &act_ife_ops); -+ return tc_action_net_init(net, tn, &act_ife_ops); - } - - static void __net_exit ife_exit_net(struct net *net) ---- a/net/sched/act_ipt.c -+++ b/net/sched/act_ipt.c -@@ -65,12 +65,13 @@ static int ipt_init_target(struct net *n - return 0; - } - --static void ipt_destroy_target(struct xt_entry_target *t) -+static void ipt_destroy_target(struct xt_entry_target *t, struct net *net) - { - struct xt_tgdtor_param par = { - .target = t->u.kernel.target, - .targinfo = t->data, - .family = NFPROTO_IPV4, -+ .net = net, - }; - if (par.target->destroy != NULL) - par.target->destroy(&par); -@@ -82,7 +83,7 @@ static void tcf_ipt_release(struct tc_ac - struct tcf_ipt *ipt = to_ipt(a); - - if (ipt->tcfi_t) { -- ipt_destroy_target(ipt->tcfi_t); -+ ipt_destroy_target(ipt->tcfi_t, a->idrinfo->net); - kfree(ipt->tcfi_t); - } - kfree(ipt->tcfi_tname); -@@ -172,7 +173,7 @@ static int __tcf_ipt_init(struct net *ne - - spin_lock_bh(&ipt->tcf_lock); - if (ret != ACT_P_CREATED) { -- ipt_destroy_target(ipt->tcfi_t); -+ ipt_destroy_target(ipt->tcfi_t, net); - kfree(ipt->tcfi_tname); - kfree(ipt->tcfi_t); - } -@@ -337,7 +338,7 @@ static __net_init int ipt_init_net(struc - { - struct tc_action_net *tn = net_generic(net, ipt_net_id); - -- return tc_action_net_init(tn, &act_ipt_ops); -+ return tc_action_net_init(net, tn, &act_ipt_ops); - } - - static void __net_exit ipt_exit_net(struct net *net) -@@ -387,7 +388,7 @@ static __net_init int xt_init_net(struct - { - struct tc_action_net *tn = net_generic(net, xt_net_id); - -- return tc_action_net_init(tn, &act_xt_ops); -+ return tc_action_net_init(net, tn, &act_xt_ops); - } - - static void __net_exit xt_exit_net(struct net *net) ---- a/net/sched/act_mirred.c -+++ b/net/sched/act_mirred.c -@@ -343,7 +343,7 @@ static __net_init int mirred_init_net(st - { - struct tc_action_net *tn = net_generic(net, mirred_net_id); - -- return tc_action_net_init(tn, &act_mirred_ops); -+ return tc_action_net_init(net, tn, &act_mirred_ops); - } - - static void __net_exit mirred_exit_net(struct net *net) ---- a/net/sched/act_nat.c -+++ b/net/sched/act_nat.c -@@ -307,7 +307,7 @@ static __net_init int nat_init_net(struc - { - struct tc_action_net *tn = net_generic(net, nat_net_id); - -- return tc_action_net_init(tn, &act_nat_ops); -+ return tc_action_net_init(net, tn, &act_nat_ops); - } - - static void __net_exit nat_exit_net(struct net *net) ---- a/net/sched/act_pedit.c -+++ b/net/sched/act_pedit.c -@@ -458,7 +458,7 @@ static __net_init int pedit_init_net(str - { - struct tc_action_net *tn = net_generic(net, pedit_net_id); - -- return tc_action_net_init(tn, &act_pedit_ops); -+ return tc_action_net_init(net, tn, &act_pedit_ops); - } - - static void __net_exit pedit_exit_net(struct net *net) ---- a/net/sched/act_police.c -+++ b/net/sched/act_police.c -@@ -331,7 +331,7 @@ static __net_init int police_init_net(st - { - struct tc_action_net *tn = net_generic(net, police_net_id); - -- return tc_action_net_init(tn, &act_police_ops); -+ return tc_action_net_init(net, tn, &act_police_ops); - } - - static void __net_exit police_exit_net(struct net *net) ---- a/net/sched/act_sample.c -+++ b/net/sched/act_sample.c -@@ -249,7 +249,7 @@ static __net_init int sample_init_net(st - { - struct tc_action_net *tn = net_generic(net, sample_net_id); - -- return tc_action_net_init(tn, &act_sample_ops); -+ return tc_action_net_init(net, tn, &act_sample_ops); - } - - static void __net_exit sample_exit_net(struct net *net) ---- a/net/sched/act_simple.c -+++ b/net/sched/act_simple.c -@@ -198,7 +198,7 @@ static __net_init int simp_init_net(stru - { - struct tc_action_net *tn = net_generic(net, simp_net_id); - -- return tc_action_net_init(tn, &act_simp_ops); -+ return tc_action_net_init(net, tn, &act_simp_ops); - } - - static void __net_exit simp_exit_net(struct net *net) ---- a/net/sched/act_skbedit.c -+++ b/net/sched/act_skbedit.c -@@ -239,7 +239,7 @@ static __net_init int skbedit_init_net(s - { - struct tc_action_net *tn = net_generic(net, skbedit_net_id); - -- return tc_action_net_init(tn, &act_skbedit_ops); -+ return tc_action_net_init(net, tn, &act_skbedit_ops); - } - - static void __net_exit skbedit_exit_net(struct net *net) ---- a/net/sched/act_skbmod.c -+++ b/net/sched/act_skbmod.c -@@ -267,7 +267,7 @@ static __net_init int skbmod_init_net(st - { - struct tc_action_net *tn = net_generic(net, skbmod_net_id); - -- return tc_action_net_init(tn, &act_skbmod_ops); -+ return tc_action_net_init(net, tn, &act_skbmod_ops); - } - - static void __net_exit skbmod_exit_net(struct net *net) ---- a/net/sched/act_tunnel_key.c -+++ b/net/sched/act_tunnel_key.c -@@ -324,7 +324,7 @@ static __net_init int tunnel_key_init_ne - { - struct tc_action_net *tn = net_generic(net, tunnel_key_net_id); - -- return tc_action_net_init(tn, &act_tunnel_key_ops); -+ return tc_action_net_init(net, tn, &act_tunnel_key_ops); - } - - static void __net_exit tunnel_key_exit_net(struct net *net) ---- a/net/sched/act_vlan.c -+++ b/net/sched/act_vlan.c -@@ -271,7 +271,7 @@ static __net_init int vlan_init_net(stru - { - struct tc_action_net *tn = net_generic(net, vlan_net_id); - -- return tc_action_net_init(tn, &act_vlan_ops); -+ return tc_action_net_init(net, tn, &act_vlan_ops); - } - - static void __net_exit vlan_exit_net(struct net *net) -- 2.25.1