Refreshed all patches.
Fixes:
- CVE-2019-14896
- CVE-2019-14897
Remove upstreamed:
- 023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch
- 001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch
Compile-tested on: cns3xxx
Runtime-tested on: cns3xxx
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.14 = .167
+LINUX_VERSION-4.14 = .169
-LINUX_KERNEL_HASH-4.14.167 = 2bb78fc7a902faf4f5dad47fdbc2f4bf3df3cf9b41f408e7260f36656659fe43
+LINUX_KERNEL_HASH-4.14.169 = d88ea97993c56b1fa0b0a05061bcde476c6be4fc3bb2de8bd97a8f8ff7278249
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
+++ /dev/null
-From 6e88098ca43a3d80ae86908f7badba683c8a0d84 Mon Sep 17 00:00:00 2001
-From: Corentin Labbe <clabbe@baylibre.com>
-Date: Wed, 23 Jan 2019 11:24:18 +0000
-Subject: [PATCH 07/15] crypto: crypto4xx - Fix wrong
- ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments
-
-When building without CONFIG_HW_RANDOM_PPC4XX, I hit the following build failure:
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_probe':
-drivers/crypto/amcc/crypto4xx_core.c:1407:20: error: passing argument 1 of 'ppc4xx_trng_probe' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:28:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_remove':
-drivers/crypto/amcc/crypto4xx_core.c:1434:21: error: passing argument 1 of 'ppc4xx_trng_remove' from incompatible pointer type [-Werror=incompatible-pointer-types]
-In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0:
-drivers/crypto/amcc/crypto4xx_trng.h:30:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *'
-
-This patch fix the needed argument of ppc4xx_trng_probe()/ppc4xx_trng_remove() in that case.
-
-Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
-Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
-Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
----
- drivers/crypto/amcc/crypto4xx_trng.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/crypto/amcc/crypto4xx_trng.h
-+++ b/drivers/crypto/amcc/crypto4xx_trng.h
-@@ -26,9 +26,9 @@ void ppc4xx_trng_probe(struct crypto4xx_
- void ppc4xx_trng_remove(struct crypto4xx_core_device *core_dev);
- #else
- static inline void ppc4xx_trng_probe(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- static inline void ppc4xx_trng_remove(
-- struct crypto4xx_device *dev __maybe_unused) { }
-+ struct crypto4xx_core_device *dev __maybe_unused) { }
- #endif
-
- #endif
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2499,7 +2499,7 @@ static void lan78xx_init_stats(struct la
+@@ -2500,7 +2500,7 @@ static void lan78xx_init_stats(struct la
dev->stats.rollover_max.eee_tx_lpi_transitions = 0xFFFFFFFF;
dev->stats.rollover_max.eee_tx_lpi_time = 0xFFFFFFFF;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2515,6 +2515,22 @@ static int lan78xx_open(struct net_devic
+@@ -2516,6 +2516,22 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1999,6 +1999,7 @@ static int lan78xx_phy_init(struct lan78
+@@ -2000,6 +2000,7 @@ static int lan78xx_phy_init(struct lan78
{
int ret;
u32 mii_adv;
struct phy_device *phydev = dev->net->phydev;
phydev = phy_find_first(dev->mdiobus);
-@@ -2071,6 +2072,19 @@ static int lan78xx_phy_init(struct lan78
+@@ -2072,6 +2073,19 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1999,7 +1999,9 @@ static int lan78xx_phy_init(struct lan78
+@@ -2000,7 +2000,9 @@ static int lan78xx_phy_init(struct lan78
{
int ret;
u32 mii_adv;
struct phy_device *phydev = dev->net->phydev;
phydev = phy_find_first(dev->mdiobus);
-@@ -2072,18 +2074,27 @@ static int lan78xx_phy_init(struct lan78
+@@ -2073,18 +2075,27 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2195,7 +2195,7 @@ static int lan78xx_change_mtu(struct net
+@@ -2196,7 +2196,7 @@ static int lan78xx_change_mtu(struct net
if ((ll_mtu % dev->maxpacket) == 0)
return -EDOM;
netdev->mtu = new_mtu;
-@@ -2488,7 +2488,8 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2489,7 +2489,8 @@ static int lan78xx_reset(struct lan78xx_
buf |= FCT_TX_CTL_EN_;
ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2074,6 +2074,22 @@ static int lan78xx_phy_init(struct lan78
+@@ -2075,6 +2075,22 @@ static int lan78xx_phy_init(struct lan78
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
/* Set LED modes:
* led: 0=link/activity 1=link1000/activity
* 2=link100/activity 3=link10/activity
-@@ -2541,22 +2557,6 @@ static int lan78xx_open(struct net_devic
+@@ -2542,22 +2558,6 @@ static int lan78xx_open(struct net_devic
netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2959,8 +2959,12 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2960,8 +2960,12 @@ static void lan78xx_rx_csum_offload(stru
struct sk_buff *skb,
u32 rx_cmd_a, u32 rx_cmd_b)
{
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2280,7 +2280,7 @@ static int lan78xx_set_features(struct n
+@@ -2281,7 +2281,7 @@ static int lan78xx_set_features(struct n
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
}
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
else
pdata->rfe_ctl &= ~RFE_CTL_VLAN_FILTER_;
-@@ -2895,6 +2895,9 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2896,6 +2896,9 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_TSO_CSUM_ENABLE)
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -64,6 +64,7 @@
+@@ -65,6 +65,7 @@
#define DEFAULT_RX_CSUM_ENABLE (true)
#define DEFAULT_TSO_CSUM_ENABLE (true)
#define DEFAULT_VLAN_FILTER_ENABLE (true)
#define TX_OVERHEAD (8)
#define RXW_PADDING 2
-@@ -2280,6 +2281,11 @@ static int lan78xx_set_features(struct n
+@@ -2281,6 +2282,11 @@ static int lan78xx_set_features(struct n
pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
}
if (features & NETIF_F_HW_VLAN_CTAG_FILTER)
pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
else
-@@ -2895,6 +2901,9 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2896,6 +2902,9 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_TSO_CSUM_ENABLE)
dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
if (DEFAULT_VLAN_FILTER_ENABLE)
dev->net->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
-@@ -2975,6 +2984,16 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2976,6 +2985,16 @@ static void lan78xx_rx_csum_offload(stru
}
}
static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
{
int status;
-@@ -3039,6 +3058,8 @@ static int lan78xx_rx(struct lan78xx_net
+@@ -3040,6 +3059,8 @@ static int lan78xx_rx(struct lan78xx_net
if (skb->len == size) {
lan78xx_rx_csum_offload(dev, skb,
rx_cmd_a, rx_cmd_b);
skb_trim(skb, skb->len - 4); /* remove fcs */
skb->truesize = size + sizeof(struct sk_buff);
-@@ -3057,6 +3078,7 @@ static int lan78xx_rx(struct lan78xx_net
+@@ -3058,6 +3079,7 @@ static int lan78xx_rx(struct lan78xx_net
skb_set_tail_pointer(skb2, size);
lan78xx_rx_csum_offload(dev, skb2, rx_cmd_a, rx_cmd_b);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2971,12 +2971,13 @@ static void lan78xx_rx_csum_offload(stru
+@@ -2972,12 +2972,13 @@ static void lan78xx_rx_csum_offload(stru
struct sk_buff *skb,
u32 rx_cmd_a, u32 rx_cmd_b)
{
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -415,6 +415,15 @@ static int msg_level = -1;
+@@ -416,6 +416,15 @@ static int msg_level = -1;
module_param(msg_level, int, 0);
MODULE_PARM_DESC(msg_level, "Override default message level");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -2898,8 +2907,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -2899,8 +2908,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2590,6 +2590,8 @@ static int lan78xx_open(struct net_devic
+@@ -2591,6 +2591,8 @@ static int lan78xx_open(struct net_devic
dev->link_on = false;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2590,8 +2590,6 @@ static int lan78xx_open(struct net_devic
+@@ -2591,8 +2591,6 @@ static int lan78xx_open(struct net_devic
dev->link_on = false;
priv->chip_rev = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_REV);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -36,7 +36,8 @@
+@@ -37,7 +37,8 @@
#include <linux/irq.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/microchipphy.h>
#include <linux/of_net.h>
#include "lan78xx.h"
-@@ -1763,6 +1764,7 @@ done:
+@@ -1764,6 +1765,7 @@ done:
static int lan78xx_mdio_init(struct lan78xx_net *dev)
{
int ret;
dev->mdiobus = mdiobus_alloc();
-@@ -1792,7 +1794,9 @@ static int lan78xx_mdio_init(struct lan7
+@@ -1793,7 +1795,9 @@ static int lan78xx_mdio_init(struct lan7
break;
}
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -425,6 +425,11 @@ static bool enable_tso;
+@@ -426,6 +426,11 @@ static bool enable_tso;
module_param(enable_tso, bool, 0644);
MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload");
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
-@@ -3715,7 +3720,12 @@ static int lan78xx_probe(struct usb_inte
+@@ -3730,7 +3735,12 @@ static int lan78xx_probe(struct usb_inte
dev->pipe_intr = usb_rcvintpipe(dev->udev,
dev->ep_intr->desc.bEndpointAddress &
USB_ENDPOINT_NUMBER_MASK);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2463,6 +2463,15 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2464,6 +2464,15 @@ static int lan78xx_reset(struct lan78xx_
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
buf |= HW_CFG_MEF_;
+++ /dev/null
-From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski@gmail.com>
-Date: Tue, 18 Dec 2018 10:19:02 +0100
-Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device
-
-Trying to register the DSP platform device results in a null pointer
-access:
-
-[ 0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20
-[ 0.135208] Oops[#1]:
-[ 0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87
-...
-[ 0.197117] epc : 804e305c bcm63xx_dsp_register+0x80/0xa4
-[ 0.202838] ra : 804e6f20 board_register_devices+0x258/0x390
-...
-
-This happens because it tries to copy the passed platform data over the
-platform_device's unpopulated platform_data.
-
-Since this code has been broken since its submission, no driver was ever
-submitted for it, and apparently nobody was using it, just remove it
-instead of trying to fix it.
-
-Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
-Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
----
- arch/mips/bcm63xx/Makefile | 6 +--
- arch/mips/bcm63xx/boards/board_bcm963xx.c | 20 --------
- arch/mips/bcm63xx/dev-dsp.c | 56 ----------------------
- .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h | 14 ------
- .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 5 --
- 5 files changed, 3 insertions(+), 98 deletions(-)
- delete mode 100644 arch/mips/bcm63xx/dev-dsp.c
- delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-
---- a/arch/mips/bcm63xx/Makefile
-+++ b/arch/mips/bcm63xx/Makefile
-@@ -1,8 +1,8 @@
- # SPDX-License-Identifier: GPL-2.0
- obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \
-- setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \
-- dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \
-- dev-wdt.o dev-usb-usbd.o
-+ setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \
-+ dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \
-+ dev-usb-usbd.o
- obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-
- obj-y += boards/
---- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
-+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -23,7 +23,6 @@
- #include <bcm63xx_nvram.h>
- #include <bcm63xx_dev_pci.h>
- #include <bcm63xx_dev_enet.h>
--#include <bcm63xx_dev_dsp.h>
- #include <bcm63xx_dev_flash.h>
- #include <bcm63xx_dev_hsspi.h>
- #include <bcm63xx_dev_pcmcia.h>
-@@ -289,14 +288,6 @@ static struct board_info __initdata boar
- .has_pccard = 1,
- .has_ehci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .cs = 2,
-- .ext_irq = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -401,14 +392,6 @@ static struct board_info __initdata boar
-
- .has_ohci0 = 1,
-
-- .has_dsp = 1,
-- .dsp = {
-- .gpio_rst = 6,
-- .gpio_int = 34,
-- .ext_irq = 2,
-- .cs = 2,
-- },
--
- .leds = {
- {
- .name = "adsl-fail",
-@@ -898,9 +881,6 @@ int __init board_register_devices(void)
- if (board.has_usbd)
- bcm63xx_usbd_register(&board.usbd);
-
-- if (board.has_dsp)
-- bcm63xx_dsp_register(&board.dsp);
--
- /* Generate MAC address for WLAN and register our SPROM,
- * do this after registering enet devices
- */
---- a/arch/mips/bcm63xx/dev-dsp.c
-+++ /dev/null
-@@ -1,56 +0,0 @@
--/*
-- * Broadcom BCM63xx VoIP DSP registration
-- *
-- * This file is subject to the terms and conditions of the GNU General Public
-- * License. See the file "COPYING" in the main directory of this archive
-- * for more details.
-- *
-- * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org>
-- */
--
--#include <linux/init.h>
--#include <linux/kernel.h>
--#include <linux/platform_device.h>
--
--#include <bcm63xx_cpu.h>
--#include <bcm63xx_dev_dsp.h>
--#include <bcm63xx_regs.h>
--#include <bcm63xx_io.h>
--
--static struct resource voip_dsp_resources[] = {
-- {
-- .start = -1, /* filled at runtime */
-- .end = -1, /* filled at runtime */
-- .flags = IORESOURCE_MEM,
-- },
-- {
-- .start = -1, /* filled at runtime */
-- .flags = IORESOURCE_IRQ,
-- },
--};
--
--static struct platform_device bcm63xx_voip_dsp_device = {
-- .name = "bcm63xx-voip-dsp",
-- .id = -1,
-- .num_resources = ARRAY_SIZE(voip_dsp_resources),
-- .resource = voip_dsp_resources,
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd)
--{
-- struct bcm63xx_dsp_platform_data *dpd;
-- u32 val;
--
-- /* Get the memory window */
-- val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1));
-- val &= MPI_CSBASE_BASE_MASK;
-- voip_dsp_resources[0].start = val;
-- voip_dsp_resources[0].end = val + 0xFFFFFFF;
-- voip_dsp_resources[1].start = pd->ext_irq;
--
-- /* copy given platform data */
-- dpd = bcm63xx_voip_dsp_device.dev.platform_data;
-- memcpy(dpd, pd, sizeof (*pd));
--
-- return platform_device_register(&bcm63xx_voip_dsp_device);
--}
---- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h
-+++ /dev/null
-@@ -1,14 +0,0 @@
--/* SPDX-License-Identifier: GPL-2.0 */
--#ifndef __BCM63XX_DSP_H
--#define __BCM63XX_DSP_H
--
--struct bcm63xx_dsp_platform_data {
-- unsigned gpio_rst;
-- unsigned gpio_int;
-- unsigned cs;
-- unsigned ext_irq;
--};
--
--int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd);
--
--#endif /* __BCM63XX_DSP_H */
---- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-+++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
-@@ -7,7 +7,6 @@
- #include <linux/leds.h>
- #include <bcm63xx_dev_enet.h>
- #include <bcm63xx_dev_usb_usbd.h>
--#include <bcm63xx_dev_dsp.h>
-
- /*
- * flash mapping
-@@ -31,7 +30,6 @@ struct board_info {
- unsigned int has_ohci0:1;
- unsigned int has_ehci0:1;
- unsigned int has_usbd:1;
-- unsigned int has_dsp:1;
- unsigned int has_uart0:1;
- unsigned int has_uart1:1;
-
-@@ -43,9 +41,6 @@ struct board_info {
- /* USB config */
- struct bcm63xx_usbd_platform_data usbd;
-
-- /* DSP config */
-- struct bcm63xx_dsp_platform_data dsp;
--
- /* GPIO LEDs */
- struct gpio_led leds[5];
-
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1461,6 +1461,9 @@ int genphy_update_link(struct phy_device
+@@ -1462,6 +1462,9 @@ int genphy_update_link(struct phy_device
{
int status;
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
-@@ -1830,6 +1830,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1836,6 +1836,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
/*
* When we registered the protocol we saved the socket in the data
-@@ -1837,6 +1838,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1843,6 +1844,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
/*
* Yank back the headers [hope the device set this
-@@ -1849,7 +1851,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1855,7 +1857,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2076,12 +2078,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2082,12 +2084,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2207,12 +2209,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2213,12 +2215,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);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3295,6 +3297,7 @@ static int packet_create(struct net *net
+@@ -3301,6 +3303,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3908,6 +3911,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3923,6 +3926,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3960,6 +3973,13 @@ static int packet_getsockopt(struct sock
+@@ -3975,6 +3988,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
memcpy(p->name, u->name, sizeof(u->name));
}
-@@ -1922,6 +2084,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1920,6 +2082,15 @@ static int ip6_tnl_validate(struct nlatt
return 0;
}
static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
-@@ -1959,6 +2130,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1957,6 +2128,46 @@ static void ip6_tnl_netlink_parms(struct
if (data[IFLA_IPTUN_FWMARK])
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
-@@ -2074,6 +2285,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -2072,6 +2283,12 @@ static void ip6_tnl_dellink(struct net_d
static size_t ip6_tnl_get_size(const struct net_device *dev)
{
return
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
-@@ -2103,6 +2320,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -2101,6 +2318,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(0) +
/* IFLA_IPTUN_FWMARK */
nla_total_size(4) +
0;
}
-@@ -2110,6 +2345,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2108,6 +2343,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms;
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -2119,9 +2357,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -2117,9 +2355,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
-@@ -2161,6 +2417,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -2159,6 +2415,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
&changeupper_info.info);
}
-@@ -6970,6 +7017,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6961,6 +7008,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1105,6 +1105,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1106,6 +1106,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = dev->dev.parent->driver->owner;
struct mii_bus *bus;
*
* A side effect of the link creation is re-ordering of dpm_list and the
* devices_kset list by moving the consumer device and all devices depending
-@@ -182,7 +182,8 @@ struct device_link *device_link_add(stru
- struct device_link *link;
+@@ -183,7 +183,8 @@ struct device_link *device_link_add(stru
+ bool rpm_put_supplier = false;
if (!consumer || !supplier ||
- ((flags & DL_FLAG_STATELESS) && (flags & DL_FLAG_AUTOREMOVE)))
+ (flags & DL_FLAG_AUTOREMOVE_CONSUMER)))
return NULL;
- device_links_write_lock();
-@@ -200,8 +201,10 @@ struct device_link *device_link_add(stru
+ if (flags & DL_FLAG_PM_RUNTIME && flags & DL_FLAG_RPM_ACTIVE) {
+@@ -209,8 +210,10 @@ struct device_link *device_link_add(stru
}
list_for_each_entry(link, &supplier->links.consumers, s_node)
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
-@@ -233,6 +236,7 @@ struct device_link *device_link_add(stru
+@@ -237,6 +240,7 @@ struct device_link *device_link_add(stru
link->consumer = consumer;
INIT_LIST_HEAD(&link->c_node);
link->flags = flags;
/* Determine the initial link state. */
if (flags & DL_FLAG_STATELESS) {
-@@ -303,8 +307,10 @@ static void __device_link_free_srcu(stru
+@@ -311,8 +315,10 @@ static void __device_link_free_srcu(stru
device_link_free(container_of(rhead, struct device_link, rcu_head));
}
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -316,8 +322,10 @@ static void __device_link_del(struct dev
+@@ -324,8 +330,10 @@ static void __device_link_del(struct dev
call_srcu(&device_links_srcu, &link->rcu_head, __device_link_free_srcu);
}
#else /* !CONFIG_SRCU */
dev_info(link->consumer, "Dropping the link to %s\n",
dev_name(link->supplier));
-@@ -335,18 +343,50 @@ static void __device_link_del(struct dev
+@@ -343,18 +351,50 @@ static void __device_link_del(struct dev
* @link: Device link to delete.
*
* The caller must ensure proper synchronization of this function with runtime
static void device_links_missing_supplier(struct device *dev)
{
struct device_link *link;
-@@ -454,8 +494,8 @@ static void __device_links_no_driver(str
+@@ -462,8 +502,8 @@ static void __device_links_no_driver(str
if (link->flags & DL_FLAG_STATELESS)
continue;
else if (link->status != DL_STATE_SUPPLIER_UNBIND)
WRITE_ONCE(link->status, DL_STATE_AVAILABLE);
}
-@@ -490,8 +530,18 @@ void device_links_driver_cleanup(struct
+@@ -498,8 +538,18 @@ void device_links_driver_cleanup(struct
if (link->flags & DL_FLAG_STATELESS)
continue;
WRITE_ONCE(link->status, DL_STATE_DORMANT);
}
-@@ -608,13 +658,13 @@ static void device_links_purge(struct de
+@@ -616,13 +666,13 @@ static void device_links_purge(struct de
list_for_each_entry_safe_reverse(link, ln, &dev->links.suppliers, c_node) {
WARN_ON(link->status == DL_STATE_ACTIVE);
}
device_links_write_unlock();
-@@ -1036,6 +1086,34 @@ static ssize_t online_store(struct devic
+@@ -1044,6 +1094,34 @@ static ssize_t online_store(struct devic
}
static DEVICE_ATTR_RW(online);
int device_add_groups(struct device *dev, const struct attribute_group **groups)
{
return sysfs_create_groups(&dev->kobj, groups);
-@@ -1207,8 +1285,20 @@ static int device_add_attrs(struct devic
+@@ -1215,8 +1293,20 @@ static int device_add_attrs(struct devic
goto err_remove_dev_groups;
}
err_remove_dev_groups:
device_remove_groups(dev, dev->groups);
err_remove_type_groups:
-@@ -1226,6 +1316,8 @@ static void device_remove_attrs(struct d
+@@ -1234,6 +1324,8 @@ static void device_remove_attrs(struct d
struct class *class = dev->class;
const struct device_type *type = dev->type;
extern int __must_check bus_create_file(struct bus_type *,
struct bus_attribute *);
-@@ -750,14 +752,16 @@ enum device_link_state {
+@@ -751,14 +753,16 @@ enum device_link_state {
* Device link flags.
*
* STATELESS: The core won't track the presence of supplier/consumer drivers.
/**
* struct device_link - Device link representation.
-@@ -768,6 +772,7 @@ enum device_link_state {
+@@ -769,6 +773,7 @@ enum device_link_state {
* @status: The state of the link (with respect to the presence of drivers).
* @flags: Link flags.
* @rpm_active: Whether or not the consumer device is runtime-PM-active.
* @rcu_head: An RCU head to use for deferred execution of SRCU callbacks.
*/
struct device_link {
-@@ -778,6 +783,7 @@ struct device_link {
+@@ -779,6 +784,7 @@ struct device_link {
enum device_link_state status;
u32 flags;
bool rpm_active;
#ifdef CONFIG_SRCU
struct rcu_head rcu_head;
#endif
-@@ -850,6 +856,8 @@ struct dev_links_info {
+@@ -851,6 +857,8 @@ struct dev_links_info {
* @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
* hardware supports 64-bit addresses for consistent allocations
* such descriptors.
* @dma_pfn_offset: offset of DMA memory range relatively of RAM
* @dma_parms: A low level driver may set these to teach IOMMU code about
* segment limitations.
-@@ -929,6 +937,7 @@ struct device {
+@@ -930,6 +938,7 @@ struct device {
not all hardware supports
64 bit addresses for consistent
allocations such descriptors. */
unsigned long dma_pfn_offset;
struct device_dma_parameters *dma_parms;
-@@ -1267,6 +1276,7 @@ extern const char *dev_driver_string(con
+@@ -1268,6 +1277,7 @@ extern const char *dev_driver_string(con
struct device_link *device_link_add(struct device *consumer,
struct device *supplier, u32 flags);
void device_link_del(struct device_link *link);
+};
+
&enet0 {
- tbi-handle = <&tbi1>;
+ tbi-handle = <&tbi0>;
phy-handle = <&sgmii_phy2>;
-@@ -228,6 +243,10 @@
+@@ -235,6 +250,10 @@
};
};
&sai1 {
status = "okay";
};
-@@ -243,3 +262,11 @@
+@@ -250,3 +269,11 @@
&uart1 {
status = "okay";
};
dcu: dcu@2ce0000 {
compatible = "fsl,ls1021a-dcu";
reg = <0x0 0x2ce0000 0x0 0x10000>;
-@@ -684,6 +734,11 @@
+@@ -693,6 +743,11 @@
dr_mode = "host";
snps,quirk-frame-length-adjustment = <0x20>;
snps,dis_rxdet_inp3_quirk;
};
pcie@3400000 {
-@@ -691,7 +746,9 @@
+@@ -700,7 +755,9 @@
reg = <0x00 0x03400000 0x0 0x00010000 /* controller registers */
0x40 0x00000000 0x0 0x00002000>; /* configuration space */
reg-names = "regs", "config";
fsl,pcie-scfg = <&scfg 0>;
#address-cells = <3>;
#size-cells = <2>;
-@@ -707,6 +764,7 @@
+@@ -716,6 +773,7 @@
<0000 0 0 2 &gic GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
<0000 0 0 3 &gic GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
<0000 0 0 4 &gic GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
};
pcie@3500000 {
-@@ -714,7 +772,9 @@
+@@ -723,7 +781,9 @@
reg = <0x00 0x03500000 0x0 0x00010000 /* controller registers */
0x48 0x00000000 0x0 0x00002000>; /* configuration space */
reg-names = "regs", "config";
fsl,pcie-scfg = <&scfg 1>;
#address-cells = <3>;
#size-cells = <2>;
-@@ -730,6 +790,47 @@
+@@ -739,6 +799,47 @@
<0000 0 0 2 &gic GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
<0000 0 0 3 &gic GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
<0000 0 0 4 &gic GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
snprintf(pll->div[i].name, sizeof(pll->div[i].name),
"cg-pll%d-div%d", idx, i + 1);
-@@ -1417,6 +1435,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
+@@ -1418,6 +1436,7 @@ CLK_OF_DECLARE(qoriq_clockgen_ls1043a, "
CLK_OF_DECLARE(qoriq_clockgen_ls1046a, "fsl,ls1046a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls1088a, "fsl,ls1088a-clockgen", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
dev = caam_jr_alloc();
if (IS_ERR(dev)) {
-@@ -361,10 +342,3 @@ free_caam_alloc:
+@@ -364,10 +345,3 @@ free_caam_alloc:
caam_jr_free(dev);
return err;
}
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1943,7 +1943,7 @@ static struct phy_driver genphy_driver =
+@@ -1944,7 +1944,7 @@ static struct phy_driver genphy_driver =
.config_init = genphy_config_init,
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
SUPPORTED_AUI | SUPPORTED_FIBRE |
struct mtk_thermal;
struct thermal_bank_cfg {
-@@ -765,7 +758,7 @@ static struct platform_driver mtk_therma
+@@ -767,7 +760,7 @@ static struct platform_driver mtk_therma
.probe = mtk_thermal_probe,
.remove = mtk_thermal_remove,
.driver = {
/**
* raw_to_mcelsius - convert a raw ADC value to mcelsius
* @mt: The thermal controller
-@@ -631,6 +662,10 @@ static const struct of_device_id mtk_the
+@@ -633,6 +664,10 @@ static const struct of_device_id mtk_the
{
.compatible = "mediatek,mt2712-thermal",
.data = (void *)&mt2712_thermal_data,
pinctrl-0 = <&mmc2_pins>;
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -449,6 +449,26 @@
+@@ -450,6 +450,26 @@
#size-cells = <0>;
};
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -464,6 +464,7 @@
+@@ -465,6 +465,7 @@
#size-cells = <0>;
mdio: mdio {
Example:
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -537,5 +537,12 @@
+@@ -538,5 +538,12 @@
#address-cells = <1>;
#size-cells = <0>;
};
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
-@@ -325,6 +325,16 @@
+@@ -326,6 +326,16 @@
drive-strength = <40>;
};
uart0_pins_a: uart0@0 {
pins = "PB8", "PB9";
function = "uart0";
-@@ -470,6 +480,37 @@
+@@ -471,6 +481,37 @@
};
};