kernel: update 4.9 to 4.9.51
authorStijn Tintel <stijn@linux-ipv6.be>
Wed, 20 Sep 2017 20:18:24 +0000 (23:18 +0300)
committerStijn Tintel <stijn@linux-ipv6.be>
Wed, 20 Sep 2017 20:50:55 +0000 (23:50 +0300)
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 <stijn@linux-ipv6.be>
13 files changed:
include/kernel-version.mk
target/linux/generic/pending-4.9/630-packet_socket_type.patch
target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
target/linux/lantiq/patches-4.9/0026-NET-multi-phy-support.patch
target/linux/mediatek/patches-4.9/0048-net-core-add-RPS-balancer.patch
target/linux/mvebu/patches-4.9/400-phy-provide-a-hook-for-link-up-link-down-events.patch
target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch
target/linux/mvebu/patches-4.9/403-net-phy-avoid-setting-unsupported-EEE-advertisments.patch
target/linux/mvebu/patches-4.9/404-net-phy-restart-phy-autonegotiation-after-EEE-advert.patch
target/linux/mvebu/patches-4.9/405-net-phy-allow-EEE-with-SGMII-interface-modes.patch
target/linux/mvebu/patches-4.9/408-net-phy-hook-up-clause-45-autonegotiation-restart.patch
target/linux/ramips/patches-4.9/0034-NET-multi-phy-support.patch

index 39b7f9e252ac4adb4a56238591f039d1edd74135..b8192dd0c44a2441904b335cea1a74e1f397a26b 100644 (file)
@@ -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)))
index 6aec1d286f19fd54828bd353a425a4148cc24d7f..e0c5ced2955594961faccd8fbd58f73f93a20571 100644 (file)
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        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 <nbd@nbd.name>
        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 <nbd@nbd.name>
  
        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 <nbd@nbd.name>
        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;
index aceedaed815ad8e464cc73f70033a51ef61bb431..3b09bffa157b8b74e9219bf88bfb45a0f42f9bec 100644 (file)
@@ -141,7 +141,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  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 <jogo@openwrt.org>
                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 <jogo@openwrt.org>
  /*
   *    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 <jogo@openwrt.org>
                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 <jogo@openwrt.org>
                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 <jogo@openwrt.org>
                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 <jogo@openwrt.org>
  #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 <jogo@openwrt.org>
  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 <jogo@openwrt.org>
  #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);
index e70e331f0a8a9718e18ef0357a13b1c7d1a0a113..cfa0a69fb3e47cdbf46ea30c0363c93dd36cea99 100644 (file)
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        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 <nbd@nbd.name>
  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 <nbd@nbd.name>
        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;
index 639491a928e78c7b0433c04421aa85e6daca5d4a..9e71051d37d8f5d24558d38f9b52a234c67447a0 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- 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 <blogic@openwrt.org>
                        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 <blogic@openwrt.org>
                }
  
                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;
index 20d0e43b383fdb51d804fe1943b2bdd9b258213f..6a34cf2f2643f6cc66209709851970e28a409599 100644 (file)
@@ -78,7 +78,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
                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;
        }
  
index 51d1a1c5275ad780463c022afe01366f13decea8..da4d24b7d4c791c8a0fcdeac6dc28be2d4483b4c 100644 (file)
@@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
 
 --- 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 <rmk+kernel@arm.linux.org.uk>
  /**
   * 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 <rmk+kernel@arm.linux.org.uk>
                        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 <rmk+kernel@arm.linux.org.uk>
                } 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 <rmk+kernel@arm.linux.org.uk>
                }
                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 <rmk+kernel@arm.linux.org.uk>
                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 <rmk+kernel@arm.linux.org.uk>
                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 <rmk+kernel@arm.linux.org.uk>
                        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 <rmk+kernel@arm.linux.org.uk>
                        } 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;
index 985adb708a15ce38416b3ad262f650a4da7849ab..360108fcc403a2648b6070cc2dc8429051d8892f 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
  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);
  
index 7ab4b419ca9e4cf886a521affc070597e0b24d10..1ef8c922ab724643bd11d5c935786d76f47613a4 100644 (file)
@@ -30,7 +30,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 
 --- 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)
  {
index 5087d4810e403dfb77627cda66d0c6fcf007396f..c768075d357a60f34b414f3993cf5f9b4637d841 100644 (file)
@@ -12,7 +12,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 
 --- 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)
  {
index 108d529a2ccda6e7d354e0d3f2e5c6d04856af3f..e5f6da4be809093674261137d1490db9f4ae20bf 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
 
 --- 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) ||
index 2baf2d6b36c3211c8964251e800d4432e3963ede..3c4618b6048145a60f38ae29b9d7563988575a89 100644 (file)
@@ -37,7 +37,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
  
  /**
   * 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);
index 9debcc8f3e2c9650ba68f24b77c69f014ad41b34..c19c3cd35a951694bed3fb73ff6a2a905ed3f726 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- 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 <blogic@openwrt.org>
                        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 <blogic@openwrt.org>
                }
  
                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;