From f5959df40ad7b1b61b58086532c35dbe47ebf21c Mon Sep 17 00:00:00 2001 From: RISCi_ATOM Date: Mon, 28 Mar 2022 12:55:36 -0400 Subject: [PATCH] kernel: Bump to 4.14.273 --- include/kernel-version.mk | 4 +- .../910-unaligned_access_hacks.patch | 4 +- ...ption-fix-dwm-158-3g-modem-interface.patch | 2 +- ...ake-nf_unregister_net_hooks-simple-w.patch | 2 +- ...emove-synchronize_net-call-if-nfqueu.patch | 8 ++-- ...filter-core-free-hooks-with-call_rcu.patch | 4 +- ...e-size-of-hook-entry-point-locations.patch | 8 ++-- ...e-hook-array-sizes-to-what-is-needed.patch | 2 +- ...allocate-space-for-decnet-hooks-unle.patch | 2 +- ...allocate-space-for-arp-bridge-hooks-.patch | 4 +- ...ass-hook-number-family-and-device-to.patch | 2 +- ...etfilter-core-add-nf_remove_net_hook.patch | 6 +-- ...ass-family-as-parameter-to-nf_remove.patch | 6 +-- ...upport-for-NFPROTO_INET-hook-registr.patch | 10 ++--- ...-saveroute-indirection-in-struct-nf_.patch | 9 ++-- ...eroute-indirection-to-struct-nf_ipv6.patch | 4 +- ...-route_key_size-field-in-struct-nf_a.patch | 8 ++-- ...tfilter-exit_net-cleanup-check-added.patch | 2 +- target/linux/generic/config-4.14 | 1 + .../generic/hack-4.14/204-module_strip.patch | 2 +- .../generic/hack-4.14/220-gc_sections.patch | 45 +++++++++++-------- .../generic/hack-4.14/251-sound_kconfig.patch | 2 +- .../generic/hack-4.14/902-debloat_proc.patch | 6 +-- .../generic/hack-4.14/930-crashlog.patch | 4 +- .../530-jffs2_make_lzma_available.patch | 2 +- .../pending-4.14/630-packet_socket_type.patch | 16 +++---- ...-support-hardware-flow-table-offload.patch | 2 +- ...ng-with-source-address-failed-policy.patch | 14 +++--- .../pending-4.14/834-ledtrig-libata.patch | 8 ++-- .../pending-4.14/920-mangle_bootargs.patch | 2 +- 30 files changed, 100 insertions(+), 91 deletions(-) diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 042c78c465..b8efdeb990 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,10 +6,10 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.14 = .261 +LINUX_VERSION-4.14 = .273 LIBRE_REV = 1 -LINUX_KERNEL_HASH-4.14.261 = 29f9da9adeb87a17183ea547985adf4b5ecde6bf57c918792bc8d14a6afbeb7d +LINUX_KERNEL_HASH-4.14.273 = 100ac3b4b0023c2e7f4e47234497ab96c8188e0a563805aede5afc7326e496db 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/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-4.14/910-unaligned_access_hacks.patch index 16ccda9132..9689cbe167 100644 --- a/target/linux/ath79/patches-4.14/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-4.14/910-unaligned_access_hacks.patch @@ -303,7 +303,7 @@ #endif /* _LINUX_TYPES_H */ --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1352,8 +1352,8 @@ struct sk_buff **inet_gro_receive(struct +@@ -1355,8 +1355,8 @@ struct sk_buff **inet_gro_receive(struct if (unlikely(ip_fast_csum((u8 *)iph, 5))) goto out_unlock; @@ -556,7 +556,7 @@ goto next_ht; --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c -@@ -221,7 +221,7 @@ static struct sk_buff **ipv6_gro_receive +@@ -223,7 +223,7 @@ static struct sk_buff **ipv6_gro_receive continue; iph2 = (struct ipv6hdr *)(p->data + off); diff --git a/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch b/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch index f296e448e8..0470f7578e 100644 --- a/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch +++ b/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch @@ -30,7 +30,7 @@ Signed-off-by: Johan Hovold --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -2058,7 +2058,8 @@ static const struct usb_device_id option +@@ -2072,7 +2072,8 @@ static const struct usb_device_id option { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */ { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) }, { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) }, diff --git a/target/linux/generic/backport-4.14/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch b/target/linux/generic/backport-4.14/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch index 35800c4acf..0d8bd4c176 100644 --- a/target/linux/generic/backport-4.14/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch +++ b/target/linux/generic/backport-4.14/290-v4.16-netfilter-core-make-nf_unregister_net_hooks-simple-w.patch @@ -22,7 +22,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/core.c +++ b/net/netfilter/core.c -@@ -395,63 +395,10 @@ EXPORT_SYMBOL(nf_register_net_hooks); +@@ -396,63 +396,10 @@ EXPORT_SYMBOL(nf_register_net_hooks); void nf_unregister_net_hooks(struct net *net, const struct nf_hook_ops *reg, unsigned int hookcount) { diff --git a/target/linux/generic/backport-4.14/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch b/target/linux/generic/backport-4.14/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch index cbaaaa619a..305a58c120 100644 --- a/target/linux/generic/backport-4.14/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch +++ b/target/linux/generic/backport-4.14/291-v4.16-netfilter-core-remove-synchronize_net-call-if-nfqueu.patch @@ -32,7 +32,7 @@ Signed-off-by: Pablo Neira Ayuso void nf_register_queue_handler(struct net *net, const struct nf_queue_handler *qh); --- a/net/netfilter/core.c +++ b/net/netfilter/core.c -@@ -341,7 +341,6 @@ void nf_unregister_net_hook(struct net * +@@ -342,7 +342,6 @@ void nf_unregister_net_hook(struct net * { struct nf_hook_entries __rcu **pp; struct nf_hook_entries *p; @@ -40,7 +40,7 @@ Signed-off-by: Pablo Neira Ayuso pp = nf_hook_entry_head(net, reg); if (!pp) -@@ -364,10 +363,7 @@ void nf_unregister_net_hook(struct net * +@@ -365,10 +364,7 @@ void nf_unregister_net_hook(struct net * synchronize_net(); @@ -65,7 +65,7 @@ Signed-off-by: Pablo Neira Ayuso int __init netfilter_log_init(void); --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c -@@ -96,18 +96,15 @@ void nf_queue_entry_get_refs(struct nf_q +@@ -109,18 +109,15 @@ bool nf_queue_entry_get_refs(struct nf_q } EXPORT_SYMBOL_GPL(nf_queue_entry_get_refs); @@ -88,7 +88,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c -@@ -942,23 +942,18 @@ static struct notifier_block nfqnl_dev_n +@@ -948,23 +948,18 @@ static struct notifier_block nfqnl_dev_n .notifier_call = nfqnl_rcv_dev_event, }; diff --git a/target/linux/generic/backport-4.14/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch b/target/linux/generic/backport-4.14/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch index 5eca73552b..500b4409af 100644 --- a/target/linux/generic/backport-4.14/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch +++ b/target/linux/generic/backport-4.14/292-v4.16-netfilter-core-free-hooks-with-call_rcu.patch @@ -107,7 +107,7 @@ Signed-off-by: Pablo Neira Ayuso static unsigned int accept_all(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) -@@ -291,9 +316,8 @@ int nf_register_net_hook(struct net *net +@@ -292,9 +317,8 @@ int nf_register_net_hook(struct net *net #ifdef HAVE_JUMP_LABEL static_key_slow_inc(&nf_hooks_needed[reg->pf][reg->hooknum]); #endif @@ -118,7 +118,7 @@ Signed-off-by: Pablo Neira Ayuso return 0; } EXPORT_SYMBOL(nf_register_net_hook); -@@ -361,10 +385,8 @@ void nf_unregister_net_hook(struct net * +@@ -362,10 +386,8 @@ void nf_unregister_net_hook(struct net * if (!p) return; diff --git a/target/linux/generic/backport-4.14/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch b/target/linux/generic/backport-4.14/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch index ed532a0ee0..eaa4feca2c 100644 --- a/target/linux/generic/backport-4.14/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch +++ b/target/linux/generic/backport-4.14/293-v4.16-netfilter-reduce-size-of-hook-entry-point-locations.patch @@ -92,7 +92,7 @@ Signed-off-by: Pablo Neira Ayuso #endif --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c -@@ -994,7 +994,7 @@ int br_nf_hook_thresh(unsigned int hook, +@@ -993,7 +993,7 @@ int br_nf_hook_thresh(unsigned int hook, unsigned int i; int ret; @@ -129,7 +129,7 @@ Signed-off-by: Pablo Neira Ayuso #ifdef CONFIG_NETFILTER_INGRESS if (reg->hooknum == NF_NETDEV_INGRESS) { -@@ -534,14 +549,21 @@ void (*nf_nat_decode_session_hook)(struc +@@ -535,14 +550,21 @@ void (*nf_nat_decode_session_hook)(struc EXPORT_SYMBOL(nf_nat_decode_session_hook); #endif @@ -159,7 +159,7 @@ Signed-off-by: Pablo Neira Ayuso net->nf.proc_netfilter = proc_net_mkdir(net, "netfilter", --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c -@@ -206,6 +206,23 @@ repeat: +@@ -223,6 +223,23 @@ repeat: return NF_ACCEPT; } @@ -183,7 +183,7 @@ Signed-off-by: Pablo Neira Ayuso /* Caller must hold rcu read-side lock */ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict) { -@@ -221,12 +238,12 @@ void nf_reinject(struct nf_queue_entry * +@@ -238,12 +255,12 @@ void nf_reinject(struct nf_queue_entry * net = entry->state.net; pf = entry->state.pf; diff --git a/target/linux/generic/backport-4.14/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch b/target/linux/generic/backport-4.14/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch index d9009b8e1f..2a9a6d94c5 100644 --- a/target/linux/generic/backport-4.14/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch +++ b/target/linux/generic/backport-4.14/294-v4.16-netfilter-reduce-hook-array-sizes-to-what-is-needed.patch @@ -64,7 +64,7 @@ Signed-off-by: Pablo Neira Ayuso return net->nf.hooks_decnet + reg->hooknum; default: WARN_ON_ONCE(1); -@@ -549,21 +559,21 @@ void (*nf_nat_decode_session_hook)(struc +@@ -550,21 +560,21 @@ void (*nf_nat_decode_session_hook)(struc EXPORT_SYMBOL(nf_nat_decode_session_hook); #endif diff --git a/target/linux/generic/backport-4.14/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch b/target/linux/generic/backport-4.14/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch index 26a93c40ae..0019802f2c 100644 --- a/target/linux/generic/backport-4.14/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch +++ b/target/linux/generic/backport-4.14/295-v4.16-netfilter-don-t-allocate-space-for-decnet-hooks-unle.patch @@ -55,7 +55,7 @@ Signed-off-by: Pablo Neira Ayuso default: WARN_ON_ONCE(1); return NULL; -@@ -573,7 +575,9 @@ static int __net_init netfilter_net_init +@@ -574,7 +576,9 @@ static int __net_init netfilter_net_init __netfilter_net_init(net->nf.hooks_ipv6, ARRAY_SIZE(net->nf.hooks_ipv6)); __netfilter_net_init(net->nf.hooks_arp, ARRAY_SIZE(net->nf.hooks_arp)); __netfilter_net_init(net->nf.hooks_bridge, ARRAY_SIZE(net->nf.hooks_bridge)); diff --git a/target/linux/generic/backport-4.14/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch b/target/linux/generic/backport-4.14/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch index 41675c3494..9e55dabdc9 100644 --- a/target/linux/generic/backport-4.14/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch +++ b/target/linux/generic/backport-4.14/296-v4.16-netfilter-don-t-allocate-space-for-arp-bridge-hooks-.patch @@ -137,7 +137,7 @@ Signed-off-by: Pablo Neira Ayuso case NFPROTO_IPV4: if (WARN_ON_ONCE(ARRAY_SIZE(net->nf.hooks_ipv4) <= reg->hooknum)) return NULL; -@@ -573,8 +577,12 @@ static int __net_init netfilter_net_init +@@ -574,8 +578,12 @@ static int __net_init netfilter_net_init { __netfilter_net_init(net->nf.hooks_ipv4, ARRAY_SIZE(net->nf.hooks_ipv4)); __netfilter_net_init(net->nf.hooks_ipv6, ARRAY_SIZE(net->nf.hooks_ipv6)); @@ -152,7 +152,7 @@ Signed-off-by: Pablo Neira Ayuso #endif --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c -@@ -209,8 +209,10 @@ repeat: +@@ -226,8 +226,10 @@ repeat: static struct nf_hook_entries *nf_hook_entries_head(const struct net *net, u8 pf, u8 hooknum) { switch (pf) { diff --git a/target/linux/generic/backport-4.14/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch b/target/linux/generic/backport-4.14/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch index 7d450f95f0..55bc7ec1e8 100644 --- a/target/linux/generic/backport-4.14/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch +++ b/target/linux/generic/backport-4.14/297-v4.16-netfilter-core-pass-hook-number-family-and-device-to.patch @@ -87,7 +87,7 @@ Signed-off-by: Pablo Neira Ayuso if (!pp) return -EINVAL; -@@ -397,7 +399,7 @@ void nf_unregister_net_hook(struct net * +@@ -398,7 +400,7 @@ void nf_unregister_net_hook(struct net * struct nf_hook_entries __rcu **pp; struct nf_hook_entries *p; diff --git a/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch b/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch index 8fea44b359..30d5c5843b 100644 --- a/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch +++ b/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-add-nf_remove_net_hook.patch @@ -13,7 +13,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/core.c +++ b/net/netfilter/core.c -@@ -356,7 +356,7 @@ int nf_register_net_hook(struct net *net +@@ -357,7 +357,7 @@ int nf_register_net_hook(struct net *net EXPORT_SYMBOL(nf_register_net_hook); /* @@ -22,7 +22,7 @@ Signed-off-by: Pablo Neira Ayuso * * @oldp: current address of hook blob * @unreg: hook to unregister -@@ -364,8 +364,8 @@ EXPORT_SYMBOL(nf_register_net_hook); +@@ -365,8 +365,8 @@ EXPORT_SYMBOL(nf_register_net_hook); * This cannot fail, hook unregistration must always succeed. * Therefore replace the to-be-removed hook with a dummy hook. */ @@ -33,7 +33,7 @@ Signed-off-by: Pablo Neira Ayuso { struct nf_hook_ops **orig_ops; bool found = false; -@@ -411,7 +411,7 @@ void nf_unregister_net_hook(struct net * +@@ -412,7 +412,7 @@ void nf_unregister_net_hook(struct net * return; } diff --git a/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch b/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch index 4c52635c13..49e856b70e 100644 --- a/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch +++ b/target/linux/generic/backport-4.14/298-v4.16-netfilter-core-pass-family-as-parameter-to-nf_remove.patch @@ -13,7 +13,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/core.c +++ b/net/netfilter/core.c -@@ -365,7 +365,7 @@ EXPORT_SYMBOL(nf_register_net_hook); +@@ -366,7 +366,7 @@ EXPORT_SYMBOL(nf_register_net_hook); * Therefore replace the to-be-removed hook with a dummy hook. */ static void nf_remove_net_hook(struct nf_hook_entries *old, @@ -22,7 +22,7 @@ Signed-off-by: Pablo Neira Ayuso { struct nf_hook_ops **orig_ops; bool found = false; -@@ -383,14 +383,14 @@ static void nf_remove_net_hook(struct nf +@@ -384,14 +384,14 @@ static void nf_remove_net_hook(struct nf if (found) { #ifdef CONFIG_NETFILTER_INGRESS @@ -40,7 +40,7 @@ Signed-off-by: Pablo Neira Ayuso } } -@@ -411,7 +411,7 @@ void nf_unregister_net_hook(struct net * +@@ -412,7 +412,7 @@ void nf_unregister_net_hook(struct net * return; } diff --git a/target/linux/generic/backport-4.14/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch b/target/linux/generic/backport-4.14/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch index b112855132..722ba9d4aa 100644 --- a/target/linux/generic/backport-4.14/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch +++ b/target/linux/generic/backport-4.14/299-v4.16-netfilter-core-support-for-NFPROTO_INET-hook-registr.patch @@ -39,9 +39,9 @@ Signed-off-by: Pablo Neira Ayuso if (!pp) return -EINVAL; -@@ -343,17 +344,16 @@ int nf_register_net_hook(struct net *net +@@ -344,17 +345,16 @@ int nf_register_net_hook(struct net *net + return PTR_ERR(new_hooks); - hooks_validate(new_hooks); #ifdef CONFIG_NETFILTER_INGRESS - if (reg->pf == NFPROTO_NETDEV && reg->hooknum == NF_NETDEV_INGRESS) + if (pf == NFPROTO_NETDEV && reg->hooknum == NF_NETDEV_INGRESS) @@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso /* * nf_remove_net_hook - remove a hook from blob -@@ -394,12 +394,13 @@ static void nf_remove_net_hook(struct nf +@@ -395,12 +395,13 @@ static void nf_remove_net_hook(struct nf } } @@ -75,7 +75,7 @@ Signed-off-by: Pablo Neira Ayuso if (!pp) return; -@@ -411,7 +412,7 @@ void nf_unregister_net_hook(struct net * +@@ -412,7 +413,7 @@ void nf_unregister_net_hook(struct net * return; } @@ -84,7 +84,7 @@ Signed-off-by: Pablo Neira Ayuso p = __nf_hook_entries_try_shrink(pp); mutex_unlock(&nf_hook_mutex); -@@ -421,8 +422,42 @@ void nf_unregister_net_hook(struct net * +@@ -422,8 +423,42 @@ void nf_unregister_net_hook(struct net * nf_queue_nf_hook_drop(net); nf_hook_entries_free(p); } diff --git a/target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch b/target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch index 943b3eed30..c699c3aae3 100644 --- a/target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch +++ b/target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch @@ -176,7 +176,7 @@ Signed-off-by: Pablo Neira Ayuso #include #include #include -@@ -108,6 +110,35 @@ void nf_queue_nf_hook_drop(struct net *n +@@ -121,6 +123,35 @@ void nf_queue_nf_hook_drop(struct net *n } EXPORT_SYMBOL_GPL(nf_queue_nf_hook_drop); @@ -212,12 +212,11 @@ Signed-off-by: Pablo Neira Ayuso static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state, const struct nf_hook_entries *entries, unsigned int index, unsigned int queuenum) -@@ -148,7 +179,16 @@ static int __nf_queue(struct sk_buff *sk - }; +@@ -165,7 +196,15 @@ static int __nf_queue(struct sk_buff *sk + return -ENOTCONN; + } - nf_queue_entry_get_refs(entry); - afinfo->saveroute(skb, entry); -+ + switch (entry->state.pf) { + case AF_INET: + nf_ip_saveroute(skb, entry); diff --git a/target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch b/target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch index 810f57ca19..83c90ed893 100644 --- a/target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch +++ b/target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch @@ -171,7 +171,7 @@ Signed-off-by: Pablo Neira Ayuso --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c -@@ -271,7 +271,6 @@ void nf_reinject(struct nf_queue_entry * +@@ -287,7 +287,6 @@ void nf_reinject(struct nf_queue_entry * const struct nf_hook_entry *hook_entry; const struct nf_hook_entries *hooks; struct sk_buff *skb = entry->skb; @@ -179,7 +179,7 @@ Signed-off-by: Pablo Neira Ayuso const struct net *net; unsigned int i; int err; -@@ -298,8 +297,7 @@ void nf_reinject(struct nf_queue_entry * +@@ -314,8 +313,7 @@ void nf_reinject(struct nf_queue_entry * verdict = nf_hook_entry_hookfn(hook_entry, skb, &entry->state); if (verdict == NF_ACCEPT) { diff --git a/target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch b/target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch index 20820e40ca..9911416c39 100644 --- a/target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch +++ b/target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch @@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso #include #include #include -@@ -145,9 +147,9 @@ static int __nf_queue(struct sk_buff *sk +@@ -158,9 +160,9 @@ static int __nf_queue(struct sk_buff *sk { int status = -ENOENT; struct nf_queue_entry *entry = NULL; @@ -59,7 +59,7 @@ Signed-off-by: Pablo Neira Ayuso /* QUEUE == DROP if no one is waiting, to be safe. */ qh = rcu_dereference(net->nf.queue_handler); -@@ -156,11 +158,19 @@ static int __nf_queue(struct sk_buff *sk +@@ -169,11 +171,19 @@ static int __nf_queue(struct sk_buff *sk goto err; } @@ -83,7 +83,7 @@ Signed-off-by: Pablo Neira Ayuso if (!entry) { status = -ENOMEM; goto err; -@@ -175,7 +185,7 @@ static int __nf_queue(struct sk_buff *sk +@@ -188,7 +198,7 @@ static int __nf_queue(struct sk_buff *sk .skb = skb, .state = *state, .hook_index = index, @@ -91,4 +91,4 @@ Signed-off-by: Pablo Neira Ayuso + .size = sizeof(*entry) + route_key_size, }; - nf_queue_entry_get_refs(entry); + if (!nf_queue_entry_get_refs(entry)) { diff --git a/target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch b/target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch index bd26f2d163..698ddbc213 100644 --- a/target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch +++ b/target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch @@ -62,7 +62,7 @@ Signed-off-by: Pablo Neira Ayuso static struct pernet_operations nfnl_log_net_ops = { --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c -@@ -1511,10 +1511,15 @@ static int __net_init nfnl_queue_net_ini +@@ -1517,10 +1517,15 @@ static int __net_init nfnl_queue_net_ini static void __net_exit nfnl_queue_net_exit(struct net *net) { diff --git a/target/linux/generic/config-4.14 b/target/linux/generic/config-4.14 index b39b70208f..fe06264954 100644 --- a/target/linux/generic/config-4.14 +++ b/target/linux/generic/config-4.14 @@ -95,6 +95,7 @@ CONFIG_32BIT=y # CONFIG_ADM8211 is not set # CONFIG_ADT7316 is not set CONFIG_ADVISE_SYSCALLS=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set # CONFIG_ADXL345_I2C is not set # CONFIG_ADXL345_SPI is not set # CONFIG_ADXRS450 is not set diff --git a/target/linux/generic/hack-4.14/204-module_strip.patch b/target/linux/generic/hack-4.14/204-module_strip.patch index a8619edbfc..d6f7d9fa67 100644 --- a/target/linux/generic/hack-4.14/204-module_strip.patch +++ b/target/linux/generic/hack-4.14/204-module_strip.patch @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau --- a/init/Kconfig +++ b/init/Kconfig -@@ -1903,6 +1903,13 @@ config TRIM_UNUSED_KSYMS +@@ -1913,6 +1913,13 @@ config TRIM_UNUSED_KSYMS If unsure, or if you need to build out-of-tree modules, say N. diff --git a/target/linux/generic/hack-4.14/220-gc_sections.patch b/target/linux/generic/hack-4.14/220-gc_sections.patch index 2605d7f78f..cf493a2574 100644 --- a/target/linux/generic/hack-4.14/220-gc_sections.patch +++ b/target/linux/generic/hack-4.14/220-gc_sections.patch @@ -67,7 +67,7 @@ Signed-off-by: Gabor Juhos # but it is being used too early to link to meaningful stack_chk logic. --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S -@@ -18,7 +18,7 @@ +@@ -31,7 +31,7 @@ #define PROC_INFO \ . = ALIGN(4); \ VMLINUX_SYMBOL(__proc_info_begin) = .; \ @@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos VMLINUX_SYMBOL(__proc_info_end) = .; #define HYPERVISOR_TEXT \ -@@ -29,11 +29,11 @@ +@@ -42,11 +42,11 @@ #define IDMAP_TEXT \ ALIGN_FUNCTION(); \ VMLINUX_SYMBOL(__idmap_text_start) = .; \ @@ -90,7 +90,7 @@ Signed-off-by: Gabor Juhos VMLINUX_SYMBOL(__hyp_idmap_text_end) = .; #ifdef CONFIG_HOTPLUG_CPU -@@ -106,7 +106,7 @@ SECTIONS +@@ -119,7 +119,7 @@ SECTIONS _stext = .; /* Text and read-only data */ IDMAP_TEXT __exception_text_start = .; @@ -99,7 +99,7 @@ Signed-off-by: Gabor Juhos __exception_text_end = .; IRQENTRY_TEXT SOFTIRQENTRY_TEXT -@@ -135,7 +135,7 @@ SECTIONS +@@ -148,7 +148,7 @@ SECTIONS __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { __start___ex_table = .; #ifdef CONFIG_MMU @@ -108,7 +108,7 @@ Signed-off-by: Gabor Juhos #endif __stop___ex_table = .; } -@@ -147,12 +147,12 @@ SECTIONS +@@ -160,12 +160,12 @@ SECTIONS . = ALIGN(8); .ARM.unwind_idx : { __start_unwind_idx = .; @@ -123,24 +123,33 @@ Signed-off-by: Gabor Juhos __stop_unwind_tab = .; } #endif -@@ -172,14 +172,14 @@ SECTIONS - */ - __vectors_start = .; - .vectors 0xffff0000 : AT(__vectors_start) { -- *(.vectors) -+ KEEP(*(.vectors)) +@@ -186,13 +186,13 @@ SECTIONS + __vectors_lma = .; + OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) { + .vectors { +- *(.vectors) ++ KEEP(*(.vectors)) + } + .vectors.bhb.loop8 { +- *(.vectors.bhb.loop8) ++ KEEP(*(.vectors.bhb.loop8)) + } + .vectors.bhb.bpiall { +- *(.vectors.bhb.bpiall) ++ KEEP(*(.vectors.bhb.bpiall)) + } } - . = __vectors_start + SIZEOF(.vectors); - __vectors_end = .; + ARM_LMA(__vectors, .vectors); +@@ -204,7 +204,7 @@ SECTIONS - __stubs_start = .; - .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { + __stubs_lma = .; + .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) { - *(.stubs) + KEEP(*(.stubs)) } - . = __stubs_start + SIZEOF(.stubs); - __stubs_end = .; -@@ -195,24 +195,24 @@ SECTIONS + ARM_LMA(__stubs, .stubs); + . = __stubs_lma + SIZEOF(.stubs); +@@ -220,24 +220,24 @@ SECTIONS } .init.arch.info : { __arch_info_begin = .; diff --git a/target/linux/generic/hack-4.14/251-sound_kconfig.patch b/target/linux/generic/hack-4.14/251-sound_kconfig.patch index 5bf5c01ad3..883adbdc5c 100644 --- a/target/linux/generic/hack-4.14/251-sound_kconfig.patch +++ b/target/linux/generic/hack-4.14/251-sound_kconfig.patch @@ -92,7 +92,7 @@ Signed-off-by: John Crispin bool --- a/lib/Kconfig +++ b/lib/Kconfig -@@ -358,16 +358,16 @@ config BCH_CONST_T +@@ -357,16 +357,16 @@ config BCH_CONST_T # Textsearch support is select'ed if needed # config TEXTSEARCH diff --git a/target/linux/generic/hack-4.14/902-debloat_proc.patch b/target/linux/generic/hack-4.14/902-debloat_proc.patch index 756872818f..e6b761d3c0 100644 --- a/target/linux/generic/hack-4.14/902-debloat_proc.patch +++ b/target/linux/generic/hack-4.14/902-debloat_proc.patch @@ -283,7 +283,7 @@ Signed-off-by: Felix Fietkau goto err; --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c -@@ -320,10 +320,12 @@ static int __net_init dev_proc_net_init( +@@ -350,10 +350,12 @@ static int __net_init dev_proc_net_init( if (!proc_create("dev", S_IRUGO, net->proc_net, &dev_seq_fops)) goto out; @@ -298,7 +298,7 @@ Signed-off-by: Felix Fietkau goto out_softnet; if (wext_proc_init(net)) -@@ -332,9 +334,11 @@ static int __net_init dev_proc_net_init( +@@ -362,9 +364,11 @@ static int __net_init dev_proc_net_init( out: return rc; out_ptype: @@ -312,7 +312,7 @@ Signed-off-by: Felix Fietkau out_dev: remove_proc_entry("dev", net->proc_net); goto out; -@@ -344,8 +348,10 @@ static void __net_exit dev_proc_net_exit +@@ -374,8 +378,10 @@ static void __net_exit dev_proc_net_exit { wext_proc_exit(net); diff --git a/target/linux/generic/hack-4.14/930-crashlog.patch b/target/linux/generic/hack-4.14/930-crashlog.patch index fd58841af0..3fa29a62a7 100644 --- a/target/linux/generic/hack-4.14/930-crashlog.patch +++ b/target/linux/generic/hack-4.14/930-crashlog.patch @@ -318,7 +318,7 @@ Signed-off-by: Felix Fietkau #include #include -@@ -447,6 +448,8 @@ static void __init_memblock memblock_ins +@@ -453,6 +454,8 @@ static void __init_memblock memblock_ins memblock_set_region_node(rgn, nid); type->cnt++; type->total_size += size; @@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau } /** -@@ -486,6 +489,8 @@ int __init_memblock memblock_add_range(s +@@ -492,6 +495,8 @@ int __init_memblock memblock_add_range(s type->regions[0].flags = flags; memblock_set_region_node(&type->regions[0], nid); type->total_size = size; diff --git a/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch b/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch index e74a6a11ed..96a07754a2 100644 --- a/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch +++ b/target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch @@ -1087,7 +1087,7 @@ Signed-off-by: Alexandros C. Couloumbis #define JFFS2_NODE_ACCURATE 0x2000 --- a/lib/Kconfig +++ b/lib/Kconfig -@@ -259,6 +259,12 @@ config ZSTD_DECOMPRESS +@@ -258,6 +258,12 @@ config ZSTD_DECOMPRESS source "lib/xz/Kconfig" diff --git a/target/linux/generic/pending-4.14/630-packet_socket_type.patch b/target/linux/generic/pending-4.14/630-packet_socket_type.patch index fa02d3f706..98b20a8246 100644 --- a/target/linux/generic/pending-4.14/630-packet_socket_type.patch +++ b/target/linux/generic/pending-4.14/630-packet_socket_type.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1838,6 +1838,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1842,6 +1842,7 @@ static int packet_rcv_spkt(struct sk_buf { struct sock *sk; struct sockaddr_pkt *spkt; @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau /* * When we registered the protocol we saved the socket in the data -@@ -1845,6 +1846,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1849,6 +1850,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau /* * Yank back the headers [hope the device set this -@@ -1857,7 +1859,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1861,7 +1863,7 @@ static int packet_rcv_spkt(struct sk_buf * so that this procedure is noop. */ @@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -2084,12 +2086,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -2088,12 +2090,12 @@ static int packet_rcv(struct sk_buff *sk unsigned int snaplen, res; bool is_drop_n_account = false; @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2217,12 +2219,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -2221,12 +2223,12 @@ static int tpacket_rcv(struct sk_buff *s BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -3325,6 +3327,7 @@ static int packet_create(struct net *net +@@ -3332,6 +3334,7 @@ static int packet_create(struct net *net mutex_init(&po->pg_vec_lock); po->rollover = NULL; po->prot_hook.func = packet_rcv; @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3949,6 +3952,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3964,6 +3967,16 @@ packet_setsockopt(struct socket *sock, i po->xmit = val ? packet_direct_xmit : dev_queue_xmit; return 0; } @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau default: return -ENOPROTOOPT; } -@@ -4001,6 +4014,13 @@ static int packet_getsockopt(struct sock +@@ -4016,6 +4029,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; diff --git a/target/linux/generic/pending-4.14/644-net-pppoe-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.14/644-net-pppoe-support-hardware-flow-table-offload.patch index c7aa998517..40a539be9d 100644 --- a/target/linux/generic/pending-4.14/644-net-pppoe-support-hardware-flow-table-offload.patch +++ b/target/linux/generic/pending-4.14/644-net-pppoe-support-hardware-flow-table-offload.patch @@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau #define PPP_VERSION "2.4.2" /* -@@ -1393,12 +1398,37 @@ static void ppp_dev_priv_destructor(stru +@@ -1398,12 +1403,37 @@ static void ppp_dev_priv_destructor(stru ppp_destroy_interface(ppp); } diff --git a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index bbcc159240..1c26d8b5c2 100644 --- a/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -3519,6 +3553,9 @@ static int rt6_fill_node(struct net *net +@@ -3543,6 +3577,9 @@ static int rt6_fill_node(struct net *net case -EACCES: rtm->rtm_type = RTN_PROHIBIT; break; @@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski case -EAGAIN: rtm->rtm_type = RTN_THROW; break; -@@ -3837,6 +3874,8 @@ static int ip6_route_dev_notify(struct n +@@ -3861,6 +3898,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -200,7 +200,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -3848,6 +3887,7 @@ static int ip6_route_dev_notify(struct n +@@ -3872,6 +3911,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -208,7 +208,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -4064,6 +4104,17 @@ static int __net_init ip6_route_net_init +@@ -4088,6 +4128,17 @@ static int __net_init ip6_route_net_init net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); @@ -226,7 +226,7 @@ Signed-off-by: Jonas Gorski #endif net->ipv6.sysctl.flush_delay = 0; -@@ -4082,6 +4133,8 @@ out: +@@ -4106,6 +4157,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -4099,6 +4152,7 @@ static void __net_exit ip6_route_net_exi +@@ -4123,6 +4176,7 @@ static void __net_exit ip6_route_net_exi #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_blk_hole_entry); @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -4172,6 +4226,9 @@ void __init ip6_route_init_special_entri +@@ -4196,6 +4250,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch index 1fbdc0c54f..fb82edb21b 100644 --- a/target/linux/generic/pending-4.14/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-4.14/834-ledtrig-libata.patch @@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -5159,6 +5172,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -5160,6 +5173,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (tag < 0) return NULL; } @@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle qc = __ata_qc_from_tag(ap, tag); qc->tag = tag; -@@ -6062,6 +6078,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -6063,6 +6079,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle ata_sff_port_init(ap); return ap; -@@ -6083,6 +6102,12 @@ static void ata_host_release(struct devi +@@ -6084,6 +6103,12 @@ static void ata_host_release(struct devi kfree(ap->pmp_link); kfree(ap->slave_link); @@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle kfree(ap); host->ports[i] = NULL; } -@@ -6529,7 +6554,23 @@ int ata_host_register(struct ata_host *h +@@ -6530,7 +6555,23 @@ int ata_host_register(struct ata_host *h host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->local_port_no = i + 1; } diff --git a/target/linux/generic/pending-4.14/920-mangle_bootargs.patch b/target/linux/generic/pending-4.14/920-mangle_bootargs.patch index 25c950cd44..f0c6f4aaf4 100644 --- a/target/linux/generic/pending-4.14/920-mangle_bootargs.patch +++ b/target/linux/generic/pending-4.14/920-mangle_bootargs.patch @@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz --- a/init/Kconfig +++ b/init/Kconfig -@@ -1427,6 +1427,15 @@ config EMBEDDED +@@ -1437,6 +1437,15 @@ config EMBEDDED an embedded system so certain expert options are available for configuration. -- 2.25.1