diff options
6 files changed, 39 insertions, 59 deletions
diff --git a/include/kernel-version.mk b/include/kernel-version.mk index e581897dc1..45bedf3261 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 = .206 +LINUX_VERSION-4.14 = .209 -LINUX_KERNEL_HASH-4.14.206 = 1c233efaa5063983293a02d4692acc9ced9c03e18857364855d4f612347086ac +LINUX_KERNEL_HASH-4.14.209 = cb02465cc8f1972cc14707b25d779c8668d220c39e68a24bb23afd4c58182b9c 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/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch index cdeb1f96e9..be0fd7c6eb 100644 --- a/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch +++ b/target/linux/brcm47xx/patches-4.14/209-b44-register-adm-switch.patch @@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch dev_info(sdev->dev, "could not find PHY at %i, use fixed one\n", bp->phy_addr); -@@ -2480,6 +2548,7 @@ static void b44_remove_one(struct ssb_de +@@ -2481,6 +2549,7 @@ static void b44_remove_one(struct ssb_de unregister_netdev(dev); if (bp->flags & B44_FLAG_EXTERNAL_PHY) b44_unregister_phy_one(bp); diff --git a/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch b/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch index 21722ceb23..86e4b7aa1c 100644 --- a/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch +++ b/target/linux/generic/backport-4.14/373-netfilter_actual_sk.patch @@ -52,28 +52,28 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> @@ -16,7 +16,7 @@ struct ip_rt_info { u_int32_t mark; }; - + -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned addr_type); +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned addr_type); - + struct nf_queue_entry; - + --- a/include/linux/netfilter_ipv6.h +++ b/include/linux/netfilter_ipv6.h @@ -41,7 +41,7 @@ struct nf_ipv6_ops { }; - + #ifdef CONFIG_NETFILTER -int ip6_route_me_harder(struct net *net, struct sk_buff *skb); +int ip6_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb); __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, u_int8_t protocol); - + --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -17,17 +17,19 @@ #include <net/netfilter/nf_queue.h> - + /* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */ -int ip_route_me_harder(struct net *net, struct sk_buff *skb, unsigned int addr_type) +int ip_route_me_harder(struct net *net, struct sock *sk, struct sk_buff *skb, unsigned int addr_type) @@ -87,7 +87,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> + __u8 flags; struct net_device *dev = skb_dst(skb)->dev; unsigned int hh_len; - + + sk = sk_to_full_sk(sk); + flags = sk ? inet_sk_flowi_flags(sk) : 0; + @@ -106,13 +106,13 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> --- a/net/ipv4/netfilter/ipt_SYNPROXY.c +++ b/net/ipv4/netfilter/ipt_SYNPROXY.c @@ -53,7 +53,7 @@ synproxy_send_tcp(struct net *net, - + skb_dst_set_noref(nskb, skb_dst(skb)); nskb->protocol = htons(ETH_P_IP); - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; - + if (nfct) { --- a/net/ipv4/netfilter/iptable_mangle.c +++ b/net/ipv4/netfilter/iptable_mangle.c @@ -128,7 +128,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> --- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c +++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c @@ -397,7 +397,7 @@ nf_nat_ipv4_local_fn(void *priv, struct - + if (ct->tuplehash[dir].tuple.dst.u3.ip != ct->tuplehash[!dir].tuple.src.u3.ip) { - err = ip_route_me_harder(state->net, skb, RTN_UNSPEC); @@ -141,11 +141,11 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> @@ -129,7 +129,7 @@ void nf_send_reset(struct net *net, stru ip4_dst_hoplimit(skb_dst(nskb))); nf_reject_ip_tcphdr_put(nskb, oldskb, oth); - + - if (ip_route_me_harder(net, nskb, RTN_UNSPEC)) + if (ip_route_me_harder(net, nskb->sk, nskb, RTN_UNSPEC)) goto free_nskb; - + niph = ip_hdr(nskb); --- a/net/ipv4/netfilter/nft_chain_route_ipv4.c +++ b/net/ipv4/netfilter/nft_chain_route_ipv4.c @@ -163,7 +163,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> @@ -18,10 +18,10 @@ #include <net/ip6_checksum.h> #include <net/netfilter/nf_queue.h> - + -int ip6_route_me_harder(struct net *net, struct sk_buff *skb) +int ip6_route_me_harder(struct net *net, struct sock *sk_partial, struct sk_buff *skb) { @@ -196,7 +196,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> --- a/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c +++ b/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c @@ -414,7 +414,7 @@ nf_nat_ipv6_local_fn(void *priv, struct - + if (!nf_inet_addr_cmp(&ct->tuplehash[dir].tuple.dst.u3, &ct->tuplehash[!dir].tuple.src.u3)) { - err = ip6_route_me_harder(state->net, skb); @@ -219,7 +219,7 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> +++ b/net/netfilter/ipvs/ip_vs_core.c @@ -713,12 +713,12 @@ static int ip_vs_route_me_harder(struct struct dst_entry *dst = skb_dst(skb); - + if (dst->dev && !(dst->dev->flags & IFF_LOOPBACK) && - ip6_route_me_harder(ipvs->net, skb) != 0) + ip6_route_me_harder(ipvs->net, skb->sk, skb) != 0) @@ -230,5 +230,5 @@ Signed-off-by: Aaron Goodman <aaronjg@stanford.edu> - ip_route_me_harder(ipvs->net, skb, RTN_LOCAL) != 0) + ip_route_me_harder(ipvs->net, skb->sk, skb, RTN_LOCAL) != 0) return 1; - + return 0; diff --git a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch b/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch index 9bb713e780..9fad2663ea 100644 --- a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch +++ b/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch @@ -23,11 +23,9 @@ Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.9 Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons") Signed-off-by: Sven Eckelmann <sven@narfation.org> -diff --git a/drivers/mtd/cmdlinepart.c b/drivers/mtd/cmdlinepart.c -index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf1cd023af 100644 --- a/drivers/mtd/cmdlinepart.c +++ b/drivers/mtd/cmdlinepart.c -@@ -218,7 +218,7 @@ static int mtdpart_setup_real(char *s) +@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s) struct cmdline_mtd_partition *this_mtd; struct mtd_partition *parts; int mtd_id_len, num_parts; @@ -36,7 +34,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf /* * Replace the first ';' by a NULL char so strrchr can work -@@ -228,6 +228,13 @@ static int mtdpart_setup_real(char *s) +@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s) if (semicol) *semicol = '\0'; @@ -50,7 +48,7 @@ index 0625b25620ca766318ea4646a6e3761ff4d3a4cc..22881ea4c132ea5a5ba7aebd025d91bf mtd_id = s; /* -@@ -237,6 +244,10 @@ static int mtdpart_setup_real(char *s) +@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s) */ p = strrchr(s, ':'); diff --git a/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch b/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch index b54d3cb48f..698b0de98c 100644 --- a/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch +++ b/target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> #include <linux/uaccess.h> #include "br_private.h" -@@ -346,6 +350,28 @@ static const struct ethtool_ops br_ethto +@@ -347,6 +351,28 @@ static const struct ethtool_ops br_ethto .get_link = ethtool_op_get_link, }; @@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> static const struct net_device_ops br_netdev_ops = { .ndo_open = br_dev_open, .ndo_stop = br_dev_stop, -@@ -373,6 +399,9 @@ static const struct net_device_ops br_ne +@@ -374,6 +400,9 @@ static const struct net_device_ops br_ne .ndo_bridge_setlink = br_setlink, .ndo_bridge_dellink = br_dellink, .ndo_features_check = passthru_features_check, diff --git a/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch b/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch index 31c686d561..d85f9d1c5f 100644 --- a/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch +++ b/target/linux/layerscape/patches-4.14/804-i2c-support-layerscape.patch @@ -84,7 +84,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> /* * sorted list of clock divider, register value pairs * taken from table 26-5, p.26-9, Freescale i.MX -@@ -210,6 +263,12 @@ struct imx_i2c_struct { +@@ -211,6 +264,12 @@ struct imx_i2c_struct { struct pinctrl_state *pinctrl_pins_gpio; struct imx_i2c_dma *dma; @@ -97,7 +97,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> }; static const struct imx_i2c_hwdata imx1_i2c_hwdata = { -@@ -281,8 +340,8 @@ static inline unsigned char imx_i2c_read +@@ -282,8 +341,8 @@ static inline unsigned char imx_i2c_read } /* Functions for DMA support */ @@ -108,7 +108,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> { struct imx_i2c_dma *dma; struct dma_slave_config dma_sconfig; -@@ -291,11 +350,13 @@ static void i2c_imx_dma_request(struct i +@@ -292,11 +351,13 @@ static void i2c_imx_dma_request(struct i dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL); if (!dma) @@ -126,7 +126,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> goto fail_al; } -@@ -306,13 +367,15 @@ static void i2c_imx_dma_request(struct i +@@ -307,13 +368,15 @@ static void i2c_imx_dma_request(struct i dma_sconfig.direction = DMA_MEM_TO_DEV; ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig); if (ret < 0) { @@ -146,7 +146,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> goto fail_tx; } -@@ -323,7 +386,7 @@ static void i2c_imx_dma_request(struct i +@@ -324,7 +387,7 @@ static void i2c_imx_dma_request(struct i dma_sconfig.direction = DMA_DEV_TO_MEM; ret = dmaengine_slave_config(dma->chan_rx, &dma_sconfig); if (ret < 0) { @@ -155,7 +155,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> goto fail_rx; } -@@ -332,7 +395,7 @@ static void i2c_imx_dma_request(struct i +@@ -333,7 +396,7 @@ static void i2c_imx_dma_request(struct i dev_info(dev, "using %s (tx) and %s (rx) for DMA transfers\n", dma_chan_name(dma->chan_tx), dma_chan_name(dma->chan_rx)); @@ -164,7 +164,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> fail_rx: dma_release_channel(dma->chan_rx); -@@ -340,7 +403,8 @@ fail_tx: +@@ -341,7 +404,8 @@ fail_tx: dma_release_channel(dma->chan_tx); fail_al: devm_kfree(dev, dma); @@ -174,7 +174,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> } static void i2c_imx_dma_callback(void *arg) -@@ -878,6 +942,78 @@ static int i2c_imx_read(struct imx_i2c_s +@@ -890,6 +954,78 @@ static int i2c_imx_read(struct imx_i2c_s return 0; } @@ -253,7 +253,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> static int i2c_imx_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num) { -@@ -888,6 +1024,19 @@ static int i2c_imx_xfer(struct i2c_adapt +@@ -900,6 +1036,19 @@ static int i2c_imx_xfer(struct i2c_adapt dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); @@ -273,7 +273,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); if (result < 0) goto out; -@@ -1030,6 +1179,50 @@ static int i2c_imx_init_recovery_info(st +@@ -1042,6 +1191,50 @@ static int i2c_imx_init_recovery_info(st return 0; } @@ -324,7 +324,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> static u32 i2c_imx_func(struct i2c_adapter *adapter) { return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL -@@ -1085,6 +1278,11 @@ static int i2c_imx_probe(struct platform +@@ -1097,6 +1290,11 @@ static int i2c_imx_probe(struct platform i2c_imx->adapter.dev.of_node = pdev->dev.of_node; i2c_imx->base = base; @@ -336,17 +336,7 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> /* Get I2C clock */ i2c_imx->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(i2c_imx->clk)) { -@@ -1104,7 +1302,8 @@ static int i2c_imx_probe(struct platform - pdev->name, i2c_imx); - if (ret) { - dev_err(&pdev->dev, "can't claim irq %d\n", irq); -- goto clk_disable; -+ clk_disable_unprepare(i2c_imx->clk); -+ return ret; - } - - /* Init queue */ -@@ -1151,25 +1350,31 @@ static int i2c_imx_probe(struct platform +@@ -1166,17 +1364,25 @@ static int i2c_imx_probe(struct platform pm_runtime_mark_last_busy(&pdev->dev); pm_runtime_put_autosuspend(&pdev->dev); @@ -373,17 +363,9 @@ Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> +del_adapter: + i2c_del_adapter(&i2c_imx->adapter); - rpm_disable: - pm_runtime_put_noidle(&pdev->dev); - pm_runtime_disable(&pdev->dev); - pm_runtime_set_suspended(&pdev->dev); - pm_runtime_dont_use_autosuspend(&pdev->dev); - --clk_disable: -- clk_disable_unprepare(i2c_imx->clk); - return ret; - } - + clk_notifier_unregister: + clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); + free_irq(irq, i2c_imx); --- a/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -85,6 +85,7 @@ struct pca954x { |