diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 8a44b633cac..bad76ca645d 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -8,11 +8,11 @@ endif LINUX_VERSION-4.9 = .192 LINUX_VERSION-4.14 = .143 -LINUX_VERSION-4.19 = .71 +LINUX_VERSION-4.19 = .72 LINUX_KERNEL_HASH-4.9.192 = 7a1a300cce70a4fd0d49b7fff7b1673159b61c4040c5a7c08ea333a7cb328d54 LINUX_KERNEL_HASH-4.14.143 = 2534f2f03cb937700a03dd85dcf1cb6e6f46fdd29d489580cc3183d6c0643d93 -LINUX_KERNEL_HASH-4.19.71 = 1f53ebffd4842099db429172f6bac6a23e6f355f1278efb321860a34cf9a5cae +LINUX_KERNEL_HASH-4.19.72 = f9fcb6b3bd29115ac55fc154e300c3dce2044502732f6842ad6c25e6f9f51f6d 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/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index 0ef2f488046..fc668dca10e 100644 --- a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch @@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso MODULE_AUTHOR("Pablo Neira Ayuso "); --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -208,47 +208,14 @@ static struct nft_expr_type nft_flow_off +@@ -211,47 +211,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; diff --git a/target/linux/generic/backport-4.19/390-v5.3-net-sched-fix-action-ipt-crash.patch b/target/linux/generic/backport-4.19/390-v5.3-net-sched-fix-action-ipt-crash.patch deleted file mode 100644 index 3b81d0ec346..00000000000 --- a/target/linux/generic/backport-4.19/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.19] -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 -@@ -15,6 +15,7 @@ - struct tcf_idrinfo { - spinlock_t lock; - struct idr action_idr; -+ struct net *net; - }; - - struct tc_action_ops; -@@ -107,7 +108,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; -@@ -116,6 +117,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 -@@ -413,7 +413,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 list_head *net_list) ---- a/net/sched/act_connmark.c -+++ b/net/sched/act_connmark.c -@@ -215,7 +215,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 list_head *net_list) ---- a/net/sched/act_csum.c -+++ b/net/sched/act_csum.c -@@ -678,7 +678,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 list_head *net_list) ---- a/net/sched/act_gact.c -+++ b/net/sched/act_gact.c -@@ -263,7 +263,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 list_head *net_list) ---- a/net/sched/act_ife.c -+++ b/net/sched/act_ife.c -@@ -887,7 +887,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 list_head *net_list) ---- 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); -@@ -182,7 +183,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); - } -@@ -353,7 +354,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 list_head *net_list) -@@ -403,7 +404,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 list_head *net_list) ---- a/net/sched/act_mirred.c -+++ b/net/sched/act_mirred.c -@@ -419,7 +419,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 list_head *net_list) ---- a/net/sched/act_nat.c -+++ b/net/sched/act_nat.c -@@ -317,7 +317,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 list_head *net_list) ---- a/net/sched/act_pedit.c -+++ b/net/sched/act_pedit.c -@@ -488,7 +488,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 list_head *net_list) ---- a/net/sched/act_police.c -+++ b/net/sched/act_police.c -@@ -342,7 +342,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 list_head *net_list) ---- a/net/sched/act_sample.c -+++ b/net/sched/act_sample.c -@@ -255,7 +255,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 list_head *net_list) ---- a/net/sched/act_simple.c -+++ b/net/sched/act_simple.c -@@ -215,7 +215,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 list_head *net_list) ---- a/net/sched/act_skbedit.c -+++ b/net/sched/act_skbedit.c -@@ -316,7 +316,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 list_head *net_list) ---- a/net/sched/act_skbmod.c -+++ b/net/sched/act_skbmod.c -@@ -277,7 +277,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 list_head *net_list) ---- a/net/sched/act_tunnel_key.c -+++ b/net/sched/act_tunnel_key.c -@@ -579,7 +579,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 list_head *net_list) ---- a/net/sched/act_vlan.c -+++ b/net/sched/act_vlan.c -@@ -324,7 +324,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 list_head *net_list) diff --git a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch index 6932214826d..f85e7523c25 100644 --- a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch +++ b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch @@ -506,7 +506,7 @@ Signed-off-by: Pablo Neira Ayuso +MODULE_ALIAS("nf-flow-table-hw"); --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -5463,6 +5463,13 @@ static int nf_tables_flowtable_parse_hoo +@@ -5468,6 +5468,13 @@ static int nf_tables_flowtable_parse_hoo if (err < 0) return err; @@ -520,7 +520,7 @@ Signed-off-by: Pablo Neira Ayuso ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL); if (!ops) return -ENOMEM; -@@ -5594,10 +5601,19 @@ static int nf_tables_newflowtable(struct +@@ -5599,10 +5606,19 @@ static int nf_tables_newflowtable(struct } flowtable->data.type = type; @@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK], flowtable); if (err < 0) -@@ -5723,7 +5739,8 @@ static int nf_tables_fill_flowtable_info +@@ -5728,7 +5744,8 @@ static int nf_tables_fill_flowtable_info nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), @@ -552,7 +552,7 @@ Signed-off-by: Pablo Neira Ayuso nest = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK); --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -135,6 +135,9 @@ static void nft_flow_offload_eval(const +@@ -138,6 +138,9 @@ static void nft_flow_offload_eval(const if (ret < 0) goto err_flow_add;