From: Stijn Tintel Date: Wed, 20 Sep 2017 20:18:24 +0000 (+0300) Subject: kernel: update 4.9 to 4.9.51 X-Git-Tag: v18.06.0-rc1~2192 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=6e48eb22b8d9039b27579283cbe46737a2f4ad80 kernel: update 4.9 to 4.9.51 Refresh patches. Compile-tested on octeon and x86/64. Runtime-tested on octeon and x86/64. Fixes the following CVEs: - CVE-2017-14106 - CVE-2017-14497 Signed-off-by: Stijn Tintel --- diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 39b7f9e252..b8192dd0c4 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -4,11 +4,11 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .71 LINUX_VERSION-4.4 = .88 -LINUX_VERSION-4.9 = .50 +LINUX_VERSION-4.9 = .51 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240 LINUX_KERNEL_HASH-4.4.88 = 144fe8dd773ec317fa06109b8d7bd04141bf1941daa03799fb4f437bbbb919b4 -LINUX_KERNEL_HASH-4.9.50 = 2c0914c8ba3606e34c68b086ad0f470a04072d59816452c4c51e06850f2f1536 +LINUX_KERNEL_HASH-4.9.51 = 83faa66102d8a4c164857014c5304e08ca6c16f1697851862af17ba61378aa8a ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) diff --git a/target/linux/generic/pending-4.9/630-packet_socket_type.patch b/target/linux/generic/pending-4.9/630-packet_socket_type.patch index 6aec1d286f..e0c5ced295 100644 --- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch +++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2159,12 +2161,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -2160,12 +2162,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; -@@ -3234,6 +3236,7 @@ static int packet_create(struct net *net +@@ -3240,6 +3242,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; -@@ -3820,6 +3823,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3826,6 +3829,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; } -@@ -3872,6 +3885,13 @@ static int packet_getsockopt(struct sock +@@ -3878,6 +3891,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.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index aceedaed81..3b09bffa15 100644 --- a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -141,7 +141,7 @@ Signed-off-by: Jonas Gorski static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__refcnt = ATOMIC_INIT(1), -@@ -1957,6 +1974,11 @@ static struct rt6_info *ip6_route_info_c +@@ -1966,6 +1983,11 @@ static struct rt6_info *ip6_route_info_c rt->dst.output = ip6_pkt_prohibit_out; rt->dst.input = ip6_pkt_prohibit; break; @@ -153,7 +153,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -2600,6 +2622,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -2609,6 +2631,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -171,7 +171,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -2835,7 +2868,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -2844,7 +2877,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -3207,6 +3241,9 @@ static int rt6_fill_node(struct net *net +@@ -3216,6 +3250,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; -@@ -3483,6 +3520,8 @@ static int ip6_route_dev_notify(struct n +@@ -3492,6 +3529,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 -@@ -3705,6 +3744,17 @@ static int __net_init ip6_route_net_init +@@ -3714,6 +3753,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); @@ -218,7 +218,7 @@ Signed-off-by: Jonas Gorski #endif net->ipv6.sysctl.flush_delay = 0; -@@ -3723,6 +3773,8 @@ out: +@@ -3732,6 +3782,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -227,7 +227,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -3740,6 +3792,7 @@ static void __net_exit ip6_route_net_exi +@@ -3749,6 +3801,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); @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -3813,6 +3866,9 @@ void __init ip6_route_init_special_entri +@@ -3822,6 +3875,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.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index e70e331f0a..cfa0a69fb3 100644 --- a/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5807,6 +5810,48 @@ static void __netdev_adjacent_dev_unlink +@@ -5808,6 +5811,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info) -@@ -6005,6 +6050,8 @@ void netdev_upper_dev_unlink(struct net_ +@@ -6006,6 +6051,8 @@ void netdev_upper_dev_unlink(struct net_ list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); @@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); } -@@ -6605,6 +6652,7 @@ int dev_set_mac_address(struct net_devic +@@ -6606,6 +6653,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; diff --git a/target/linux/lantiq/patches-4.9/0026-NET-multi-phy-support.patch b/target/linux/lantiq/patches-4.9/0026-NET-multi-phy-support.patch index 639491a928..9e71051d37 100644 --- a/target/linux/lantiq/patches-4.9/0026-NET-multi-phy-support.patch +++ b/target/linux/lantiq/patches-4.9/0026-NET-multi-phy-support.patch @@ -11,7 +11,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1035,7 +1035,8 @@ void phy_state_machine(struct work_struc +@@ -1032,7 +1032,8 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -21,7 +21,7 @@ Signed-off-by: John Crispin phydev->adjust_link(phydev->attached_dev); break; } -@@ -1127,7 +1128,8 @@ void phy_state_machine(struct work_struc +@@ -1124,7 +1125,8 @@ void phy_state_machine(struct work_struc netif_carrier_on(phydev->attached_dev); } else { phydev->state = PHY_NOLINK; @@ -31,7 +31,7 @@ Signed-off-by: John Crispin } phydev->adjust_link(phydev->attached_dev); -@@ -1139,7 +1141,8 @@ void phy_state_machine(struct work_struc +@@ -1136,7 +1138,8 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0; diff --git a/target/linux/mediatek/patches-4.9/0048-net-core-add-RPS-balancer.patch b/target/linux/mediatek/patches-4.9/0048-net-core-add-RPS-balancer.patch index 20d0e43b38..6a34cf2f26 100644 --- a/target/linux/mediatek/patches-4.9/0048-net-core-add-RPS-balancer.patch +++ b/target/linux/mediatek/patches-4.9/0048-net-core-add-RPS-balancer.patch @@ -78,7 +78,7 @@ Signed-off-by: John Crispin if (cpu_online(tcpu)) { cpu = tcpu; goto done; -@@ -8426,6 +8478,9 @@ static int __init net_dev_init(void) +@@ -8427,6 +8479,9 @@ static int __init net_dev_init(void) sd->backlog.weight = weight_p; } diff --git a/target/linux/mvebu/patches-4.9/400-phy-provide-a-hook-for-link-up-link-down-events.patch b/target/linux/mvebu/patches-4.9/400-phy-provide-a-hook-for-link-up-link-down-events.patch index 51d1a1c527..da4d24b7d4 100644 --- a/target/linux/mvebu/patches-4.9/400-phy-provide-a-hook-for-link-up-link-down-events.patch +++ b/target/linux/mvebu/patches-4.9/400-phy-provide-a-hook-for-link-up-link-down-events.patch @@ -16,7 +16,7 @@ Signed-off-by: Russell King --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -994,6 +994,16 @@ void phy_start(struct phy_device *phydev +@@ -991,6 +991,16 @@ void phy_start(struct phy_device *phydev } EXPORT_SYMBOL(phy_start); @@ -33,7 +33,7 @@ Signed-off-by: Russell King /** * phy_state_machine - Handle the state machine * @work: work_struct that describes the work to be done -@@ -1035,8 +1045,7 @@ void phy_state_machine(struct work_struc +@@ -1032,8 +1042,7 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -43,7 +43,7 @@ Signed-off-by: Russell King break; } -@@ -1048,9 +1057,7 @@ void phy_state_machine(struct work_struc +@@ -1045,9 +1054,7 @@ void phy_state_machine(struct work_struc /* If AN is done, we're running */ if (err > 0) { phydev->state = PHY_RUNNING; @@ -54,7 +54,7 @@ Signed-off-by: Russell King } else if (0 == phydev->link_timeout--) needs_aneg = true; break; -@@ -1075,8 +1082,7 @@ void phy_state_machine(struct work_struc +@@ -1072,8 +1079,7 @@ void phy_state_machine(struct work_struc } } phydev->state = PHY_RUNNING; @@ -64,7 +64,7 @@ Signed-off-by: Russell King } break; case PHY_FORCING: -@@ -1086,13 +1092,12 @@ void phy_state_machine(struct work_struc +@@ -1083,13 +1089,12 @@ void phy_state_machine(struct work_struc if (phydev->link) { phydev->state = PHY_RUNNING; @@ -80,7 +80,7 @@ Signed-off-by: Russell King break; case PHY_RUNNING: /* Only register a CHANGE if we are polling and link changed -@@ -1124,14 +1129,12 @@ void phy_state_machine(struct work_struc +@@ -1121,14 +1126,12 @@ void phy_state_machine(struct work_struc if (phydev->link) { phydev->state = PHY_RUNNING; @@ -97,7 +97,7 @@ Signed-off-by: Russell King if (phy_interrupt_is_valid(phydev)) err = phy_config_interrupt(phydev, PHY_INTERRUPT_ENABLED); -@@ -1139,8 +1142,7 @@ void phy_state_machine(struct work_struc +@@ -1136,8 +1139,7 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0; @@ -107,7 +107,7 @@ Signed-off-by: Russell King do_suspend = true; } break; -@@ -1160,11 +1162,11 @@ void phy_state_machine(struct work_struc +@@ -1157,11 +1159,11 @@ void phy_state_machine(struct work_struc if (phydev->link) { phydev->state = PHY_RUNNING; @@ -121,7 +121,7 @@ Signed-off-by: Russell King } else { phydev->state = PHY_AN; phydev->link_timeout = PHY_AN_TIMEOUT; -@@ -1176,11 +1178,11 @@ void phy_state_machine(struct work_struc +@@ -1173,11 +1175,11 @@ void phy_state_machine(struct work_struc if (phydev->link) { phydev->state = PHY_RUNNING; diff --git a/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch b/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch index 985adb708a..360108fcc4 100644 --- a/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch +++ b/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch @@ -24,7 +24,7 @@ Signed-off-by: Russell King obj-$(CONFIG_MDIO_BOARDINFO) += mdio-boardinfo.o --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1219,91 +1219,6 @@ void phy_mac_interrupt(struct phy_device +@@ -1216,91 +1216,6 @@ void phy_mac_interrupt(struct phy_device } EXPORT_SYMBOL(phy_mac_interrupt); diff --git a/target/linux/mvebu/patches-4.9/403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch b/target/linux/mvebu/patches-4.9/403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch index 7ab4b419ca..1ef8c922ab 100644 --- a/target/linux/mvebu/patches-4.9/403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch +++ b/target/linux/mvebu/patches-4.9/403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch @@ -30,7 +30,7 @@ Signed-off-by: Russell King --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1355,14 +1355,19 @@ EXPORT_SYMBOL(phy_ethtool_get_eee); +@@ -1352,14 +1352,19 @@ EXPORT_SYMBOL(phy_ethtool_get_eee); */ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) { diff --git a/target/linux/mvebu/patches-4.9/404-net-phy-restart-phy-autonegotiation-after-EEE-advert.patch b/target/linux/mvebu/patches-4.9/404-net-phy-restart-phy-autonegotiation-after-EEE-advert.patch index 5087d4810e..c768075d35 100644 --- a/target/linux/mvebu/patches-4.9/404-net-phy-restart-phy-autonegotiation-after-EEE-advert.patch +++ b/target/linux/mvebu/patches-4.9/404-net-phy-restart-phy-autonegotiation-after-EEE-advert.patch @@ -12,7 +12,7 @@ Signed-off-by: Russell King --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1355,19 +1355,36 @@ EXPORT_SYMBOL(phy_ethtool_get_eee); +@@ -1352,19 +1352,36 @@ EXPORT_SYMBOL(phy_ethtool_get_eee); */ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) { diff --git a/target/linux/mvebu/patches-4.9/405-net-phy-allow-EEE-with-SGMII-interface-modes.patch b/target/linux/mvebu/patches-4.9/405-net-phy-allow-EEE-with-SGMII-interface-modes.patch index 108d529a2c..e5f6da4be8 100644 --- a/target/linux/mvebu/patches-4.9/405-net-phy-allow-EEE-with-SGMII-interface-modes.patch +++ b/target/linux/mvebu/patches-4.9/405-net-phy-allow-EEE-with-SGMII-interface-modes.patch @@ -11,7 +11,7 @@ Signed-off-by: Russell King --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1239,6 +1239,7 @@ int phy_init_eee(struct phy_device *phyd +@@ -1236,6 +1236,7 @@ int phy_init_eee(struct phy_device *phyd if ((phydev->duplex == DUPLEX_FULL) && ((phydev->interface == PHY_INTERFACE_MODE_MII) || (phydev->interface == PHY_INTERFACE_MODE_GMII) || diff --git a/target/linux/mvebu/patches-4.9/408-net-phy-hook-up-clause-45-autonegotiation-restart.patch b/target/linux/mvebu/patches-4.9/408-net-phy-hook-up-clause-45-autonegotiation-restart.patch index 2baf2d6b36..3c4618b604 100644 --- a/target/linux/mvebu/patches-4.9/408-net-phy-hook-up-clause-45-autonegotiation-restart.patch +++ b/target/linux/mvebu/patches-4.9/408-net-phy-hook-up-clause-45-autonegotiation-restart.patch @@ -37,7 +37,7 @@ Signed-off-by: Russell King /** * phy_aneg_done - return auto-negotiation status -@@ -1454,3 +1472,14 @@ int phy_ethtool_set_link_ksettings(struc +@@ -1451,3 +1469,14 @@ int phy_ethtool_set_link_ksettings(struc return phy_ethtool_ksettings_set(phydev, cmd); } EXPORT_SYMBOL(phy_ethtool_set_link_ksettings); diff --git a/target/linux/ramips/patches-4.9/0034-NET-multi-phy-support.patch b/target/linux/ramips/patches-4.9/0034-NET-multi-phy-support.patch index 9debcc8f3e..c19c3cd35a 100644 --- a/target/linux/ramips/patches-4.9/0034-NET-multi-phy-support.patch +++ b/target/linux/ramips/patches-4.9/0034-NET-multi-phy-support.patch @@ -11,7 +11,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -1035,7 +1035,8 @@ void phy_state_machine(struct work_struc +@@ -1032,7 +1032,8 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -21,7 +21,7 @@ Signed-off-by: John Crispin phydev->adjust_link(phydev->attached_dev); break; } -@@ -1127,7 +1128,8 @@ void phy_state_machine(struct work_struc +@@ -1124,7 +1125,8 @@ void phy_state_machine(struct work_struc netif_carrier_on(phydev->attached_dev); } else { phydev->state = PHY_NOLINK; @@ -31,7 +31,7 @@ Signed-off-by: John Crispin } phydev->adjust_link(phydev->attached_dev); -@@ -1139,7 +1141,8 @@ void phy_state_machine(struct work_struc +@@ -1136,7 +1138,8 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0;