Browse Source

kernel: update 4.4 to 4.4.83

Refresh patches.
Minor update 704-phy-no-genphy-soft-reset.patch which was partially
accepted upstream.
Compile-tested on ar71xx.
Runtime-tested on ar71xx.

Fixes the following vulnerabilities:
- CVE-2017-7533 (4.4.80)
- CVE-2017-1000111 (4.4.82)
- CVE-2017-1000112 (4.4.82)

Signed-off-by: Kevin Darbyshire-Bryant <[email protected]>
[cleanup commit message, add compile/runtime tested]
Signed-off-by: Stijn Tintel <[email protected]>
Kevin Darbyshire-Bryant 8 năm trước cách đây
mục cha
commit
364befeccf

+ 2 - 2
include/kernel-version.mk

@@ -3,11 +3,11 @@
 LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .79
+LINUX_VERSION-4.4 = .83
 LINUX_VERSION-4.9 = .44
 
 LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.79 = 0dbda3b51e11957fdb96c46844a823a212d46d6db680d77422ddea1a65bebca8
+LINUX_KERNEL_HASH-4.4.83 = 5b5f0a0a6cdadcbe5e1c1c057470bb42880590fc97edee299fb1833d646856b4
 LINUX_KERNEL_HASH-4.9.44 = 44a6386150d843da8fe13363377972ab040cc710268033ac99f599d5ba8ce3a3
 
 ifdef KERNEL_PATCHVER

+ 2 - 2
target/linux/generic/pending-4.4/630-packet_socket_type.patch

@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3739,6 +3742,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3744,6 +3747,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3791,6 +3804,13 @@ static int packet_getsockopt(struct sock
+@@ -3796,6 +3809,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;

+ 5 - 5
target/linux/generic/pending-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch

@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4249,6 +4249,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4256,6 +4256,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int grow;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	if (!(skb->dev->features & NETIF_F_GRO))
  		goto normal;
  
-@@ -5415,6 +5418,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5422,6 +5425,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *private)
-@@ -5486,6 +5531,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5493,6 +5538,7 @@ static int __netdev_upper_dev_link(struc
  			goto rollback_lower_mesh;
  	}
  
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  	return 0;
-@@ -5612,6 +5658,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5619,6 +5665,7 @@ 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);
  
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  }
-@@ -6152,6 +6199,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6159,6 +6206,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;

+ 1 - 1
target/linux/generic/pending-4.4/701-phy_extension.patch

@@ -53,7 +53,7 @@
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -796,6 +796,7 @@ void phy_start_machine(struct phy_device
+@@ -800,6 +800,7 @@ void phy_start_machine(struct phy_device
  void phy_stop_machine(struct phy_device *phydev);
  int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
  int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);

+ 2 - 20
target/linux/generic/pending-4.4/704-phy-no-genphy-soft-reset.patch

@@ -1,29 +1,11 @@
 --- a/drivers/net/phy/phy_device.c
 +++ b/drivers/net/phy/phy_device.c
-@@ -1213,7 +1213,7 @@ int genphy_config_init(struct phy_device
- 	return 0;
- }
- 
--static int gen10g_soft_reset(struct phy_device *phydev)
-+static int no_soft_reset(struct phy_device *phydev)
- {
- 	/* Do nothing for now */
- 	return 0;
-@@ -1448,7 +1448,7 @@ static struct phy_driver genphy_driver[]
- 	.phy_id		= 0xffffffff,
- 	.phy_id_mask	= 0xffffffff,
- 	.name		= "Generic PHY",
--	.soft_reset	= genphy_soft_reset,
-+	.soft_reset	= no_soft_reset,
- 	.config_init	= genphy_config_init,
- 	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
- 			  SUPPORTED_AUI | SUPPORTED_FIBRE |
-@@ -1463,7 +1463,7 @@ static struct phy_driver genphy_driver[]
+@@ -1465,7 +1465,7 @@ static struct phy_driver genphy_driver[]
  	.phy_id         = 0xffffffff,
  	.phy_id_mask    = 0xffffffff,
  	.name           = "Generic 10G PHY",
 -	.soft_reset	= gen10g_soft_reset,
-+	.soft_reset	= no_soft_reset,
++	.soft_reset	= genphy_no_soft_reset,
  	.config_init    = gen10g_config_init,
  	.features       = 0,
  	.config_aneg    = gen10g_config_aneg,

+ 1 - 1
target/linux/generic/pending-4.4/710-phy-add-mdio_register_board_info.patch

@@ -46,7 +46,7 @@
  		phy_device_free(phydev);
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -835,6 +835,23 @@ void mdio_bus_exit(void);
+@@ -839,6 +839,23 @@ void mdio_bus_exit(void);
  
  extern struct bus_type mdio_bus_type;
  

+ 1 - 1
target/linux/generic/pending-4.4/721-phy_packets.patch

@@ -86,7 +86,7 @@
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -2736,10 +2736,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2743,10 +2743,20 @@ static int xmit_one(struct sk_buff *skb,
  	if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
  		dev_queue_xmit_nit(skb, dev);
  

+ 4 - 4
target/linux/generic/pending-4.4/811-pci_disable_usb_common_quirks.patch

@@ -1,7 +1,7 @@
 
 --- a/drivers/usb/host/pci-quirks.c
 +++ b/drivers/usb/host/pci-quirks.c
-@@ -97,6 +97,8 @@ struct amd_chipset_type {
+@@ -98,6 +98,8 @@ struct amd_chipset_type {
  	u8 rev;
  };
  
@@ -10,7 +10,7 @@
  static struct amd_chipset_info {
  	struct pci_dev	*nb_dev;
  	struct pci_dev	*smbus_dev;
-@@ -450,6 +452,10 @@ void usb_amd_dev_put(void)
+@@ -457,6 +459,10 @@ void usb_amd_dev_put(void)
  }
  EXPORT_SYMBOL_GPL(usb_amd_dev_put);
  
@@ -21,7 +21,7 @@
  /*
   * Make sure the controller is completely inactive, unable to
   * generate interrupts or do DMA.
-@@ -529,8 +535,17 @@ reset_needed:
+@@ -536,8 +542,17 @@ reset_needed:
  	uhci_reset_hc(pdev, base);
  	return 1;
  }
@@ -39,7 +39,7 @@
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -1095,3 +1110,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1102,3 +1117,4 @@ static void quirk_usb_early_handoff(stru
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);

+ 3 - 3
target/linux/lantiq/patches-4.4/0026-NET-multi-phy-support.patch

@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <[email protected]>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -890,7 +890,8 @@ void phy_state_machine(struct work_struc
+@@ -893,7 +893,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 <[email protected]>
  			phydev->adjust_link(phydev->attached_dev);
  			break;
  		}
-@@ -973,7 +974,8 @@ void phy_state_machine(struct work_struc
+@@ -985,7 +986,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 <[email protected]>
  		}
  
  		phydev->adjust_link(phydev->attached_dev);
-@@ -985,7 +987,8 @@ void phy_state_machine(struct work_struc
+@@ -997,7 +999,8 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;

+ 9 - 9
target/linux/mvebu/patches-4.4/125-phy-provide-a-hook-for-link-up-link-down-events.patch

@@ -22,7 +22,7 @@ Signed-off-by: Russell King <[email protected]>
 
 --- a/drivers/net/phy/phy.c
 +++ b/drivers/net/phy/phy.c
-@@ -849,6 +849,16 @@ void phy_start(struct phy_device *phydev
+@@ -852,6 +852,16 @@ void phy_start(struct phy_device *phydev
  }
  EXPORT_SYMBOL(phy_start);
  
@@ -39,7 +39,7 @@ Signed-off-by: Russell King <[email protected]>
  /**
   * phy_state_machine - Handle the state machine
   * @work: work_struct that describes the work to be done
-@@ -890,8 +900,7 @@ void phy_state_machine(struct work_struc
+@@ -893,8 +903,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;
@@ -49,7 +49,7 @@ Signed-off-by: Russell King <[email protected]>
  			break;
  		}
  
-@@ -903,9 +912,7 @@ void phy_state_machine(struct work_struc
+@@ -906,9 +915,7 @@ void phy_state_machine(struct work_struc
  		/* If AN is done, we're running */
  		if (err > 0) {
  			phydev->state = PHY_RUNNING;
@@ -60,7 +60,7 @@ Signed-off-by: Russell King <[email protected]>
  		} else if (0 == phydev->link_timeout--)
  			needs_aneg = true;
  		break;
-@@ -930,8 +937,7 @@ void phy_state_machine(struct work_struc
+@@ -933,8 +940,7 @@ void phy_state_machine(struct work_struc
  				}
  			}
  			phydev->state = PHY_RUNNING;
@@ -70,7 +70,7 @@ Signed-off-by: Russell King <[email protected]>
  		}
  		break;
  	case PHY_FORCING:
-@@ -941,13 +947,12 @@ void phy_state_machine(struct work_struc
+@@ -944,13 +950,12 @@ void phy_state_machine(struct work_struc
  
  		if (phydev->link) {
  			phydev->state = PHY_RUNNING;
@@ -86,7 +86,7 @@ Signed-off-by: Russell King <[email protected]>
  		break;
  	case PHY_RUNNING:
  		/* Only register a CHANGE if we are polling or ignoring
-@@ -970,14 +975,12 @@ void phy_state_machine(struct work_struc
+@@ -982,14 +987,12 @@ void phy_state_machine(struct work_struc
  
  		if (phydev->link) {
  			phydev->state = PHY_RUNNING;
@@ -103,7 +103,7 @@ Signed-off-by: Russell King <[email protected]>
  		if (phy_interrupt_is_valid(phydev))
  			err = phy_config_interrupt(phydev,
  						   PHY_INTERRUPT_ENABLED);
-@@ -985,8 +988,7 @@ void phy_state_machine(struct work_struc
+@@ -997,8 +1000,7 @@ void phy_state_machine(struct work_struc
  	case PHY_HALTED:
  		if (phydev->link) {
  			phydev->link = 0;
@@ -113,7 +113,7 @@ Signed-off-by: Russell King <[email protected]>
  			do_suspend = true;
  		}
  		break;
-@@ -1006,11 +1008,11 @@ void phy_state_machine(struct work_struc
+@@ -1018,11 +1020,11 @@ void phy_state_machine(struct work_struc
  
  				if (phydev->link) {
  					phydev->state = PHY_RUNNING;
@@ -127,7 +127,7 @@ Signed-off-by: Russell King <[email protected]>
  			} else {
  				phydev->state = PHY_AN;
  				phydev->link_timeout = PHY_AN_TIMEOUT;
-@@ -1022,11 +1024,11 @@ void phy_state_machine(struct work_struc
+@@ -1034,11 +1036,11 @@ void phy_state_machine(struct work_struc
  
  			if (phydev->link) {
  				phydev->state = PHY_RUNNING;

+ 1 - 1
target/linux/mvebu/patches-4.4/128-phy-export-phy_speed_to_str-for-phylink.patch

@@ -34,7 +34,7 @@ Signed-off-by: Russell King <[email protected]>
  	case PHY_##_state:			\
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -812,6 +812,7 @@ int phy_ethtool_gset(struct phy_device *
+@@ -816,6 +816,7 @@ int phy_ethtool_gset(struct phy_device *
  int phy_ethtool_ioctl(struct phy_device *phydev, void *useraddr);
  int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
  int phy_start_interrupts(struct phy_device *phydev);