kernel: bump 4.14 to 4.14.176
authorRISCi_ATOM <Bob@bobcall.me>
Sat, 18 Apr 2020 20:38:06 +0000 (16:38 -0400)
committerRISCi_ATOM <Bob@bobcall.me>
Sat, 18 Apr 2020 20:38:06 +0000 (16:38 -0400)
Upstreamed:
- 600-ipv6-addrconf-call-ipv6_mc_up-for-non-Ethernet-inter.patch

Fixes:
- CVE-2020-8647
- CVE-2020-8648 (potentially)
- CVE-2020-8649

Upstream ref. : 0232f57e1af6580542c0ed1ce1d76c7cd4084613

17 files changed:
include/kernel-version.mk
target/linux/ar71xx/patches-4.14/450-gpio-nxp-74hc153-gpio-chip-driver.patch
target/linux/ar71xx/patches-4.14/451-gpio-74x164-improve-platform-device-support.patch
target/linux/ar71xx/patches-4.14/452-gpio-add-gpio-latch-driver.patch
target/linux/ar71xx/patches-4.14/500-MIPS-fw-myloader.patch
target/linux/ar71xx/patches-4.14/910-unaligned_access_hacks.patch
target/linux/ath79/patches-4.14/910-unaligned_access_hacks.patch
target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch
target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch
target/linux/generic/backport-4.14/273-batman-adv-Convert-packet.h-to-uapi-header.patch
target/linux/generic/backport-4.14/600-ipv6-addrconf-call-ipv6_mc_up-for-non-Ethernet-inter.patch [deleted file]
target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch
target/linux/generic/hack-4.14/901-debloat_sock_diag.patch
target/linux/generic/hack-4.14/902-debloat_proc.patch
target/linux/generic/pending-4.14/630-packet_socket_type.patch
target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch

index 861a6599358bbe7c177eec8ac696ca3ddb9a7aae..679ba3c70f3e90d92503c1172da10f7a37d593bc 100644 (file)
@@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
 endif
 
-LINUX_VERSION-4.14 = .173
+LINUX_VERSION-4.14 = .176
 
-LINUX_KERNEL_HASH-4.14.173 = 615f3a798d99b2e986627f0c5618bee8dfd61e7f645bcc3bb90cfaf953d9cb26
+LINUX_KERNEL_HASH-4.14.176 = a28589aa68578c2a10c871d48d9d244a84a0480505b5da57c2e726e435a8ab14
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
index 0902773ff4523ff0492c7cd5a5a4b62185439a57..48a36cc4ecd0da4b33430917b18c6ba4fd1332e7 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -1299,4 +1299,12 @@ config GPIO_VIPERBOARD
+@@ -1300,4 +1300,12 @@ config GPIO_VIPERBOARD
  
  endmenu
  
index 8039a71689016fa795ae9cdbd0746dc19320b789..b3c990ccec4d5fe97b0808b4ba4c83e17953e124 100644 (file)
 +#endif
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -1251,7 +1251,6 @@ menu "SPI GPIO expanders"
+@@ -1252,7 +1252,6 @@ menu "SPI GPIO expanders"
  
  config GPIO_74X164
        tristate "74x164 serial-in/parallel-out 8-bits shift register"
index 13c5781deec97ea1c9e8327cb185a6d31de5afd5..98e9123ce7bb152a0e423249342a0402781fc6ab 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -1306,4 +1306,9 @@ config GPIO_NXP_74HC153
+@@ -1307,4 +1307,9 @@ config GPIO_NXP_74HC153
          Platform driver for NXP 74HC153 Dual 4-input Multiplexer. This
          provides a GPIO interface supporting input mode only.
  
index 866dc5e86ec57fae1912e4f4ec357031727124f6..1fdd05a4d9d0d275f40633ef50b5fa7fb85c2a2e 100644 (file)
@@ -10,7 +10,7 @@
  
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1152,6 +1152,9 @@ config MIPS_MSC
+@@ -1153,6 +1153,9 @@ config MIPS_MSC
  config MIPS_NILE4
        bool
  
index fbad39a5cc430523f12b0d08dc525b0b4b72cefc..2585bb10c1b7a6d15cd579e251e2dce7c06b6e9b 100644 (file)
        for (p = *head; p; p = p->next) {
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -465,7 +465,7 @@ static struct neighbour *ipv4_neigh_look
+@@ -466,7 +466,7 @@ static struct neighbour *ipv4_neigh_look
        else if (skb)
                pkey = &ip_hdr(skb)->daddr;
  
  EXPORT_SYMBOL(xfrm_parse_spi);
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -3874,14 +3874,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3878,14 +3878,16 @@ static bool tcp_parse_aligned_timestamp(
  {
        const __be32 *ptr = (const __be32 *)(th + 1);
  
   * No flags defined yet.
 --- a/net/core/utils.c
 +++ b/net/core/utils.c
-@@ -424,8 +424,14 @@ void inet_proto_csum_replace16(__sum16 *
+@@ -441,8 +441,14 @@ void inet_proto_csum_replace16(__sum16 *
                               bool pseudohdr)
  {
        __be32 diff[] = {
index cff52e5add0bbb635cd14e1e19e389f301f69518..5622f0662a4af94a950916e041fbb56290a60e87 100644 (file)
  #include <linux/uaccess.h>
  #include <linux/ipv6.h>
  #include <linux/icmpv6.h>
-@@ -820,10 +821,10 @@ static void tcp_v6_send_response(const s
+@@ -819,10 +820,10 @@ static void tcp_v6_send_response(const s
        topt = (__be32 *)(t1 + 1);
  
        if (tsecr) {
index b85179982404a97c11858655d8af4a102f2a2f9e..7939ee46b091de9d6fd882269b3b144240afa29f 100644 (file)
@@ -55,7 +55,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
        rwlock_t                sk_callback_lock;
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -2745,6 +2745,7 @@ void sock_init_data(struct socket *sock,
+@@ -2748,6 +2748,7 @@ void sock_init_data(struct socket *sock,
  
        sk->sk_max_pacing_rate = ~0U;
        sk->sk_pacing_rate = ~0U;
index ac2d69e892088945f00371eb466e7ce342c2f15c..d68e92291609e4146059b817bcb50287258c2b45 100644 (file)
@@ -30,7 +30,7 @@ Signed-off-by: Johan Hovold <johan@kernel.org>
 
 --- a/drivers/usb/serial/option.c
 +++ b/drivers/usb/serial/option.c
-@@ -1981,7 +1981,8 @@ static const struct usb_device_id option
+@@ -1983,7 +1983,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) },
index 0435803f511bfb40b721c0a890c0c0db4c651d1b..a9f744fd13fa6e2df71b18775c0a5b7d24515dbc 100644 (file)
@@ -27,7 +27,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/net/batman-adv/bat_iv_ogm.c
 +++ b/net/batman-adv/bat_iv_ogm.c
-@@ -51,6 +51,7 @@
+@@ -52,6 +52,7 @@
  #include <linux/workqueue.h>
  #include <net/genetlink.h>
  #include <net/netlink.h>
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  #include <uapi/linux/batman_adv.h>
  
  #include "bat_algo.h"
-@@ -62,7 +63,6 @@
+@@ -63,7 +64,6 @@
  #include "netlink.h"
  #include "network-coding.h"
  #include "originator.h"
@@ -45,7 +45,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  #include "translation-table.h"
 --- a/net/batman-adv/bat_v.c
 +++ b/net/batman-adv/bat_v.c
-@@ -37,6 +37,7 @@
+@@ -36,6 +36,7 @@
  #include <linux/workqueue.h>
  #include <net/genetlink.h>
  #include <net/netlink.h>
@@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  #include <uapi/linux/batman_adv.h>
  
  #include "bat_algo.h"
-@@ -49,7 +50,6 @@
+@@ -48,7 +49,6 @@
  #include "log.h"
  #include "netlink.h"
  #include "originator.h"
@@ -80,7 +80,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/net/batman-adv/bat_v_ogm.c
 +++ b/net/batman-adv/bat_v_ogm.c
-@@ -38,13 +38,13 @@
+@@ -40,13 +40,13 @@
  #include <linux/string.h>
  #include <linux/types.h>
  #include <linux/workqueue.h>
@@ -174,7 +174,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  /**
 --- a/net/batman-adv/hard-interface.c
 +++ b/net/batman-adv/hard-interface.c
-@@ -36,6 +36,7 @@
+@@ -37,6 +37,7 @@
  #include <linux/spinlock.h>
  #include <net/net_namespace.h>
  #include <net/rtnetlink.h>
@@ -182,7 +182,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
  #include "bat_v.h"
  #include "bridge_loop_avoidance.h"
-@@ -44,7 +45,6 @@
+@@ -45,7 +46,6 @@
  #include "gateway_client.h"
  #include "log.h"
  #include "originator.h"
@@ -1025,7 +1025,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/net/batman-adv/types.h
 +++ b/net/batman-adv/types.h
-@@ -34,10 +34,9 @@
+@@ -35,10 +35,9 @@
  #include <linux/types.h>
  #include <linux/wait.h>
  #include <linux/workqueue.h>
diff --git a/target/linux/generic/backport-4.14/600-ipv6-addrconf-call-ipv6_mc_up-for-non-Ethernet-inter.patch b/target/linux/generic/backport-4.14/600-ipv6-addrconf-call-ipv6_mc_up-for-non-Ethernet-inter.patch
deleted file mode 100644 (file)
index ba0d137..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-From 82afdcd4ec3c8ca6551cbf7c43c09e2fd240487a Mon Sep 17 00:00:00 2001
-From: Hangbin Liu <liuhangbin@gmail.com>
-Date: Tue, 10 Mar 2020 15:27:37 +0800
-Subject: [PATCH] ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Rafał found an issue that for non-Ethernet interface, if we down and up
-frequently, the memory will be consumed slowly.
-
-The reason is we add allnodes/allrouters addressed in multicast list in
-ipv6_add_dev(). When link down, we call ipv6_mc_down(), store all multicast
-addresses via mld_add_delrec(). But when link up, we don't call ipv6_mc_up()
-for non-Ethernet interface to remove the addresses. This makes idev->mc_tomb
-getting bigger and bigger. The call stack looks like:
-
-addrconf_notify(NETDEV_REGISTER)
-       ipv6_add_dev
-               ipv6_dev_mc_inc(ff01::1)
-               ipv6_dev_mc_inc(ff02::1)
-               ipv6_dev_mc_inc(ff02::2)
-
-addrconf_notify(NETDEV_UP)
-       addrconf_dev_config
-               /* Alas, we support only Ethernet autoconfiguration. */
-               return;
-
-addrconf_notify(NETDEV_DOWN)
-       addrconf_ifdown
-               ipv6_mc_down
-                       igmp6_group_dropped(ff02::2)
-                               mld_add_delrec(ff02::2)
-                       igmp6_group_dropped(ff02::1)
-                       igmp6_group_dropped(ff01::1)
-
-After investigating, I can't found a rule to disable multicast on
-non-Ethernet interface. In RFC2460, the link could be Ethernet, PPP, ATM,
-tunnels, etc. In IPv4, it doesn't check the dev type when calls ip_mc_up()
-in inetdev_event(). Even for IPv6, we don't check the dev type and call
-ipv6_add_dev(), ipv6_dev_mc_inc() after register device.
-
-So I think it's OK to fix this memory consumer by calling ipv6_mc_up() for
-non-Ethernet interface.
-
-v2: Also check IFF_MULTICAST flag to make sure the interface supports
-    multicast
-
-Reported-by: Rafał Miłecki <zajec5@gmail.com>
-Tested-by: Rafał Miłecki <zajec5@gmail.com>
-Fixes: 74235a25c673 ("[IPV6] addrconf: Fix IPv6 on tuntap tunnels")
-Fixes: 1666d49e1d41 ("mld: do not remove mld souce list info when set link down")
-Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- net/ipv6/addrconf.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -3223,6 +3223,10 @@ static void addrconf_dev_config(struct n
-           (dev->type != ARPHRD_TUNNEL) &&
-           (dev->type != ARPHRD_NONE)) {
-               /* Alas, we support only Ethernet autoconfiguration. */
-+              idev = __in6_dev_get(dev);
-+              if (!IS_ERR_OR_NULL(idev) && dev->flags & IFF_UP &&
-+                  dev->flags & IFF_MULTICAST)
-+                      ipv6_mc_up(idev);
-               return;
-       }
index cc84311ef913ef6752d30b5a2f32767e0c36b559..5885c8fae6953b6d0a049f07e797107316d3f1bb 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -547,6 +547,12 @@ struct phy_driver {
+@@ -549,6 +549,12 @@ struct phy_driver {
        /* Determines the negotiated speed and duplex */
        int (*read_status)(struct phy_device *phydev);
  
@@ -15,7 +15,7 @@
  
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1462,6 +1462,9 @@ int genphy_update_link(struct phy_device
+@@ -1466,6 +1466,9 @@ int genphy_update_link(struct phy_device
  {
        int status;
  
index 5945aee55669504d32aa6d99c73cbb4142236d50..a4ca5735695d8023e43477aace7b7547bd6251eb 100644 (file)
@@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        u64 res;
 --- a/net/ipv4/Kconfig
 +++ b/net/ipv4/Kconfig
-@@ -420,6 +420,7 @@ config INET_XFRM_MODE_BEET
+@@ -421,6 +421,7 @@ config INET_XFRM_MODE_BEET
  
  config INET_DIAG
        tristate "INET: socket monitoring interface"
index 478a3ac6327cb0fe30fec778717b8ab92e740e75..30328b87d79e98fb4dc30901d7a9deba12e01bc6 100644 (file)
@@ -232,7 +232,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                return -ENOMEM;
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
-@@ -2783,6 +2783,8 @@ static const struct file_operations proc
+@@ -2786,6 +2786,8 @@ static const struct file_operations proc
  
  static int __init proc_vmalloc_init(void)
  {
@@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3384,6 +3384,8 @@ static __net_initdata struct pernet_oper
+@@ -3387,6 +3387,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
@@ -338,7 +338,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2740,10 +2740,12 @@ static const struct file_operations fib_
+@@ -2743,10 +2743,12 @@ static const struct file_operations fib_
  
  int __net_init fib_proc_init(struct net *net)
  {
@@ -353,7 +353,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                         &fib_triestat_fops))
                goto out2;
  
-@@ -2753,17 +2755,21 @@ int __net_init fib_proc_init(struct net
+@@ -2756,17 +2758,21 @@ int __net_init fib_proc_init(struct net
        return 0;
  
  out3:
index a4737b23efd0b29b53c1b51a129ac7980dc77471..c4bd5fdabae53b79d10014bd29da6c2f0f62a41e 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;
  
-@@ -2213,12 +2215,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2214,12 +2216,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;
  
-@@ -3301,6 +3303,7 @@ static int packet_create(struct net *net
+@@ -3313,6 +3315,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;
-@@ -3923,6 +3926,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3935,6 +3938,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;
        }
-@@ -3975,6 +3988,13 @@ static int packet_getsockopt(struct sock
+@@ -3987,6 +4000,13 @@ static int packet_getsockopt(struct sock
        case PACKET_VNET_HDR:
                val = po->has_vnet_hdr;
                break;
@@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                break;
 --- a/net/packet/internal.h
 +++ b/net/packet/internal.h
-@@ -132,6 +132,7 @@ struct packet_sock {
+@@ -135,6 +135,7 @@ struct packet_sock {
        struct net_device __rcu *cached_dev;
        int                     (*xmit)(struct sk_buff *skb);
        struct packet_type      prot_hook ____cacheline_aligned_in_smp;
index cd5cbeafc123bb7ffacbeffd558b6e8323251af1..57ba68f4b60929b1db583679c9b3bc5afdabd084 100644 (file)
@@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static void rt_fibinfo_free(struct rtable __rcu **rtp)
 --- a/net/ipv4/fib_trie.c
 +++ b/net/ipv4/fib_trie.c
-@@ -2469,6 +2469,7 @@ static const char *const rtn_type_names[
+@@ -2472,6 +2472,7 @@ static const char *const rtn_type_names[
        [RTN_THROW] = "THROW",
        [RTN_NAT] = "NAT",
        [RTN_XRESOLVE] = "XRESOLVE",
index d49fdc77abe2e607d9ef7f6dc752717600c0bcba..03579657ee37d6d5545313c4746c7de7d88e5a21 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1106,6 +1106,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1110,6 +1110,9 @@ void phy_detach(struct phy_device *phyde
        struct module *ndev_owner = dev->dev.parent->driver->owner;
        struct mii_bus *bus;
  
@@ -23,7 +23,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
                sysfs_remove_link(&phydev->mdio.dev.kobj, "attached_dev");
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -559,6 +559,12 @@ struct phy_driver {
+@@ -561,6 +561,12 @@ struct phy_driver {
         */
        int (*did_interrupt)(struct phy_device *phydev);