kernel: bump 4.14 to 4.14.93
Refresh patches.
Remove upstreamed patches:
- backport/096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch
- pending/510-f2fs-fix-sanity_check_raw_super-on-big-endian-machines.patch
- brcm2708/950-0415-qmi_wwan-apply-SET_DTR-quirk-to-the-SIMCOM-shared-de.patch
Compile-tested: ar71xx, ath79, brcm2708/bcm27{08,10}, octeon, x86/64
Runtime-tested: ar71xx, ath79, brcm2708/bcm27{08,10}, octeon, x86/64
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
			
			
This commit is contained in:
		@@ -4,12 +4,12 @@ LINUX_RELEASE?=1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LINUX_VERSION-3.18 = .131
 | 
					LINUX_VERSION-3.18 = .131
 | 
				
			||||||
LINUX_VERSION-4.9 = .148
 | 
					LINUX_VERSION-4.9 = .148
 | 
				
			||||||
LINUX_VERSION-4.14 = .91
 | 
					LINUX_VERSION-4.14 = .93
 | 
				
			||||||
LINUX_VERSION-4.19 = .9
 | 
					LINUX_VERSION-4.19 = .9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_KERNEL_HASH-3.18.131 = 04600ce96e4c7642b9eaa4814f4930c79b53010b1c155d23e5ac0aeba6f455e2
 | 
					LINUX_KERNEL_HASH-3.18.131 = 04600ce96e4c7642b9eaa4814f4930c79b53010b1c155d23e5ac0aeba6f455e2
 | 
				
			||||||
LINUX_KERNEL_HASH-4.9.148 = 6067151b0225a8de1ab79abc9be7bae237eaca0cd838eb26684169560d88a994
 | 
					LINUX_KERNEL_HASH-4.9.148 = 6067151b0225a8de1ab79abc9be7bae237eaca0cd838eb26684169560d88a994
 | 
				
			||||||
LINUX_KERNEL_HASH-4.14.91 = 6a587c8b4160918efa082b0c2eda8c2db0f50d8814ad1d1ac94be1edf66ca6a9
 | 
					LINUX_KERNEL_HASH-4.14.93 = bb125fb204f7089782e179126121dd0f0aad9f02b7517ce3744982254c221bad
 | 
				
			||||||
LINUX_KERNEL_HASH-4.19.9 = fc116cc6829c73944215d3b3ac0fc368dde9e8235b456744afffde001269dbf2
 | 
					LINUX_KERNEL_HASH-4.19.9 = fc116cc6829c73944215d3b3ac0fc368dde9e8235b456744afffde001269dbf2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 | 
					remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | 
				
			|||||||
 	clocks {
 | 
					 	clocks {
 | 
				
			||||||
--- a/drivers/bcma/main.c
 | 
					--- a/drivers/bcma/main.c
 | 
				
			||||||
+++ b/drivers/bcma/main.c
 | 
					+++ b/drivers/bcma/main.c
 | 
				
			||||||
@@ -348,14 +348,6 @@ static int bcma_register_devices(struct
 | 
					@@ -326,14 +326,6 @@ static int bcma_register_devices(struct
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -36,7 +36,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | 
				
			|||||||
 #ifdef CONFIG_BCMA_NFLASH
 | 
					 #ifdef CONFIG_BCMA_NFLASH
 | 
				
			||||||
 	if (bus->drv_cc.nflash.present) {
 | 
					 	if (bus->drv_cc.nflash.present) {
 | 
				
			||||||
 		err = platform_device_register(&bcma_nflash_dev);
 | 
					 		err = platform_device_register(&bcma_nflash_dev);
 | 
				
			||||||
@@ -436,6 +428,14 @@ int bcma_bus_register(struct bcma_bus *b
 | 
					@@ -411,6 +403,14 @@ int bcma_bus_register(struct bcma_bus *b
 | 
				
			||||||
 			bcma_register_core(bus, core);
 | 
					 			bcma_register_core(bus, core);
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -688,6 +688,8 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -686,6 +686,8 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int err;
 | 
					 	int err;
 | 
				
			||||||
 	struct gpio_chip *chip;
 | 
					 	struct gpio_chip *chip;
 | 
				
			||||||
@@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 	/*
 | 
					 	/*
 | 
				
			||||||
 	 * sanity checking the native-chipselects
 | 
					 	 * sanity checking the native-chipselects
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
@@ -704,15 +706,42 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -702,15 +704,42 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 			"setup: only two native chip-selects are supported\n");
 | 
					 			"setup: only two native chip-selects are supported\n");
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -705,6 +705,7 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -24,7 +24,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 	/* now translate native cs to GPIO */
 | 
					 	/* now translate native cs to GPIO */
 | 
				
			||||||
 	/* first look for chip select pins in the devices pin groups */
 | 
					 	/* first look for chip select pins in the devices pin groups */
 | 
				
			||||||
 	for (pingroup_index = 0;
 | 
					 	for (pingroup_index = 0;
 | 
				
			||||||
@@ -756,6 +757,7 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -754,6 +755,7 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 			spi->chip_select, spi->cs_gpio, err);
 | 
					 			spi->chip_select, spi->cs_gpio, err);
 | 
				
			||||||
 		return err;
 | 
					 		return err;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ Subject: [PATCH 014/454] spi-bcm2835: Remove unused code
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -679,17 +679,8 @@ static void bcm2835_spi_set_cs(struct sp
 | 
					@@ -677,17 +677,8 @@ static void bcm2835_spi_set_cs(struct sp
 | 
				
			||||||
 	bcm2835_wr(bs, BCM2835_SPI_CS, cs);
 | 
					 	bcm2835_wr(bs, BCM2835_SPI_CS, cs);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -27,7 +27,7 @@ Subject: [PATCH 014/454] spi-bcm2835: Remove unused code
 | 
				
			|||||||
 	/*
 | 
					 	/*
 | 
				
			||||||
 	 * sanity checking the native-chipselects
 | 
					 	 * sanity checking the native-chipselects
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
@@ -707,58 +698,6 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -705,58 +696,6 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ Fixes: 98830d91da08 ("drm/vc4: Add T-format scanout support.")
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
@@ -546,14 +546,24 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -547,14 +547,24 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 		tiling = SCALER_CTL0_TILING_LINEAR;
 | 
					 		tiling = SCALER_CTL0_TILING_LINEAR;
 | 
				
			||||||
 		pitch0 = VC4_SET_FIELD(fb->pitches[0], SCALER_SRC_PITCH);
 | 
					 		pitch0 = VC4_SET_FIELD(fb->pitches[0], SCALER_SRC_PITCH);
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/kernel/cgroup/cgroup.c
 | 
					--- a/kernel/cgroup/cgroup.c
 | 
				
			||||||
+++ b/kernel/cgroup/cgroup.c
 | 
					+++ b/kernel/cgroup/cgroup.c
 | 
				
			||||||
@@ -5154,6 +5154,8 @@ int __init cgroup_init_early(void)
 | 
					@@ -5159,6 +5159,8 @@ int __init cgroup_init_early(void)
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static u16 cgroup_disable_mask __initdata;
 | 
					 static u16 cgroup_disable_mask __initdata;
 | 
				
			||||||
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 /**
 | 
					 /**
 | 
				
			||||||
  * cgroup_init - cgroup initialization
 | 
					  * cgroup_init - cgroup initialization
 | 
				
			||||||
@@ -5192,6 +5194,12 @@ int __init cgroup_init(void)
 | 
					@@ -5197,6 +5199,12 @@ int __init cgroup_init(void)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	mutex_unlock(&cgroup_mutex);
 | 
					 	mutex_unlock(&cgroup_mutex);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 	for_each_subsys(ss, ssid) {
 | 
					 	for_each_subsys(ss, ssid) {
 | 
				
			||||||
 		if (ss->early_init) {
 | 
					 		if (ss->early_init) {
 | 
				
			||||||
 			struct cgroup_subsys_state *css =
 | 
					 			struct cgroup_subsys_state *css =
 | 
				
			||||||
@@ -5572,6 +5580,28 @@ static int __init cgroup_disable(char *s
 | 
					@@ -5577,6 +5585,28 @@ static int __init cgroup_disable(char *s
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 __setup("cgroup_disable=", cgroup_disable);
 | 
					 __setup("cgroup_disable=", cgroup_disable);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2494,7 +2494,7 @@ static void lan78xx_init_stats(struct la
 | 
					@@ -2498,7 +2498,7 @@ static void lan78xx_init_stats(struct la
 | 
				
			||||||
 	dev->stats.rollover_max.eee_tx_lpi_transitions = 0xFFFFFFFF;
 | 
					 	dev->stats.rollover_max.eee_tx_lpi_transitions = 0xFFFFFFFF;
 | 
				
			||||||
 	dev->stats.rollover_max.eee_tx_lpi_time = 0xFFFFFFFF;
 | 
					 	dev->stats.rollover_max.eee_tx_lpi_time = 0xFFFFFFFF;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -778,7 +778,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20171019125748.3152-1-boris.
 | 
				
			|||||||
 #include "vc4_drv.h"
 | 
					 #include "vc4_drv.h"
 | 
				
			||||||
 #include "vc4_regs.h"
 | 
					 #include "vc4_regs.h"
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -776,21 +777,40 @@ static int vc4_prepare_fb(struct drm_pla
 | 
					@@ -777,21 +778,40 @@ static int vc4_prepare_fb(struct drm_pla
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct vc4_bo *bo;
 | 
					 	struct vc4_bo *bo;
 | 
				
			||||||
 	struct dma_fence *fence;
 | 
					 	struct dma_fence *fence;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/563872b69c1e5df142cb15ebfca7
 | 
				
			|||||||
 	},
 | 
					 	},
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -624,15 +627,8 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -625,15 +628,8 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 	 * The pointers may be any byte address.
 | 
					 	 * The pointers may be any byte address.
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
 	vc4_state->ptr0_offset = vc4_state->dlist_count;
 | 
					 	vc4_state->ptr0_offset = vc4_state->dlist_count;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2510,6 +2510,22 @@ static int lan78xx_open(struct net_devic
 | 
					@@ -2514,6 +2514,22 @@ static int lan78xx_open(struct net_devic
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
 | 
					 	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	netdev->mtu = new_mtu;
 | 
					 	netdev->mtu = new_mtu;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2483,7 +2483,8 @@ static int lan78xx_reset(struct lan78xx_
 | 
					@@ -2487,7 +2487,8 @@ static int lan78xx_reset(struct lan78xx_
 | 
				
			||||||
 	buf |= FCT_TX_CTL_EN_;
 | 
					 	buf |= FCT_TX_CTL_EN_;
 | 
				
			||||||
 	ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
 | 
					 	ret = lan78xx_write_reg(dev, FCT_TX_CTL, buf);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 	/* Set LED modes:
 | 
					 	/* Set LED modes:
 | 
				
			||||||
 	 * led: 0=link/activity          1=link1000/activity
 | 
					 	 * led: 0=link/activity          1=link1000/activity
 | 
				
			||||||
 	 *      2=link100/activity       3=link10/activity
 | 
					 	 *      2=link100/activity       3=link10/activity
 | 
				
			||||||
@@ -2536,22 +2552,6 @@ static int lan78xx_open(struct net_devic
 | 
					@@ -2540,22 +2556,6 @@ static int lan78xx_open(struct net_devic
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
 | 
					 	netif_dbg(dev, ifup, dev->net, "phy initialised successfully");
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2952,8 +2952,12 @@ static void lan78xx_rx_csum_offload(stru
 | 
					@@ -2956,8 +2956,12 @@ static void lan78xx_rx_csum_offload(stru
 | 
				
			||||||
 				    struct sk_buff *skb,
 | 
					 				    struct sk_buff *skb,
 | 
				
			||||||
 				    u32 rx_cmd_a, u32 rx_cmd_b)
 | 
					 				    u32 rx_cmd_a, u32 rx_cmd_b)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2275,7 +2275,7 @@ static int lan78xx_set_features(struct n
 | 
					@@ -2279,7 +2279,7 @@ static int lan78xx_set_features(struct n
 | 
				
			||||||
 		pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
 | 
					 		pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 		pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
 | 
					 		pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
 | 
				
			||||||
 	else
 | 
					 	else
 | 
				
			||||||
 		pdata->rfe_ctl &= ~RFE_CTL_VLAN_FILTER_;
 | 
					 		pdata->rfe_ctl &= ~RFE_CTL_VLAN_FILTER_;
 | 
				
			||||||
@@ -2888,6 +2888,9 @@ static int lan78xx_bind(struct lan78xx_n
 | 
					@@ -2892,6 +2892,9 @@ static int lan78xx_bind(struct lan78xx_n
 | 
				
			||||||
 	if (DEFAULT_TSO_CSUM_ENABLE)
 | 
					 	if (DEFAULT_TSO_CSUM_ENABLE)
 | 
				
			||||||
 		dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
 | 
					 		dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 #define TX_OVERHEAD			(8)
 | 
					 #define TX_OVERHEAD			(8)
 | 
				
			||||||
 #define RXW_PADDING			2
 | 
					 #define RXW_PADDING			2
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2275,6 +2276,11 @@ static int lan78xx_set_features(struct n
 | 
					@@ -2279,6 +2280,11 @@ static int lan78xx_set_features(struct n
 | 
				
			||||||
 		pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
 | 
					 		pdata->rfe_ctl &= ~(RFE_CTL_ICMP_COE_ | RFE_CTL_IGMP_COE_);
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -36,7 +36,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 	if (features & NETIF_F_HW_VLAN_CTAG_FILTER)
 | 
					 	if (features & NETIF_F_HW_VLAN_CTAG_FILTER)
 | 
				
			||||||
 		pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
 | 
					 		pdata->rfe_ctl |= RFE_CTL_VLAN_FILTER_;
 | 
				
			||||||
 	else
 | 
					 	else
 | 
				
			||||||
@@ -2888,6 +2894,9 @@ static int lan78xx_bind(struct lan78xx_n
 | 
					@@ -2892,6 +2898,9 @@ static int lan78xx_bind(struct lan78xx_n
 | 
				
			||||||
 	if (DEFAULT_TSO_CSUM_ENABLE)
 | 
					 	if (DEFAULT_TSO_CSUM_ENABLE)
 | 
				
			||||||
 		dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
 | 
					 		dev->net->features |= NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_SG;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 	if (DEFAULT_VLAN_FILTER_ENABLE)
 | 
					 	if (DEFAULT_VLAN_FILTER_ENABLE)
 | 
				
			||||||
 		dev->net->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
 | 
					 		dev->net->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2968,6 +2977,16 @@ static void lan78xx_rx_csum_offload(stru
 | 
					@@ -2972,6 +2981,16 @@ static void lan78xx_rx_csum_offload(stru
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -63,7 +63,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
 | 
					 static void lan78xx_skb_return(struct lan78xx_net *dev, struct sk_buff *skb)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int		status;
 | 
					 	int		status;
 | 
				
			||||||
@@ -3032,6 +3051,8 @@ static int lan78xx_rx(struct lan78xx_net
 | 
					@@ -3036,6 +3055,8 @@ static int lan78xx_rx(struct lan78xx_net
 | 
				
			||||||
 			if (skb->len == size) {
 | 
					 			if (skb->len == size) {
 | 
				
			||||||
 				lan78xx_rx_csum_offload(dev, skb,
 | 
					 				lan78xx_rx_csum_offload(dev, skb,
 | 
				
			||||||
 							rx_cmd_a, rx_cmd_b);
 | 
					 							rx_cmd_a, rx_cmd_b);
 | 
				
			||||||
@@ -72,7 +72,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 				skb_trim(skb, skb->len - 4); /* remove fcs */
 | 
					 				skb_trim(skb, skb->len - 4); /* remove fcs */
 | 
				
			||||||
 				skb->truesize = size + sizeof(struct sk_buff);
 | 
					 				skb->truesize = size + sizeof(struct sk_buff);
 | 
				
			||||||
@@ -3050,6 +3071,7 @@ static int lan78xx_rx(struct lan78xx_net
 | 
					@@ -3054,6 +3075,7 @@ static int lan78xx_rx(struct lan78xx_net
 | 
				
			||||||
 			skb_set_tail_pointer(skb2, size);
 | 
					 			skb_set_tail_pointer(skb2, size);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 			lan78xx_rx_csum_offload(dev, skb2, rx_cmd_a, rx_cmd_b);
 | 
					 			lan78xx_rx_csum_offload(dev, skb2, rx_cmd_a, rx_cmd_b);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2964,12 +2964,13 @@ static void lan78xx_rx_csum_offload(stru
 | 
					@@ -2968,12 +2968,13 @@ static void lan78xx_rx_csum_offload(stru
 | 
				
			||||||
 				    struct sk_buff *skb,
 | 
					 				    struct sk_buff *skb,
 | 
				
			||||||
 				    u32 rx_cmd_a, u32 rx_cmd_b)
 | 
					 				    u32 rx_cmd_a, u32 rx_cmd_b)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
 | 
				
			|||||||
 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
 | 
					 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
 | 
					 	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
 | 
				
			||||||
@@ -2891,8 +2900,14 @@ static int lan78xx_bind(struct lan78xx_n
 | 
					@@ -2895,8 +2904,14 @@ static int lan78xx_bind(struct lan78xx_n
 | 
				
			||||||
 	if (DEFAULT_RX_CSUM_ENABLE)
 | 
					 	if (DEFAULT_RX_CSUM_ENABLE)
 | 
				
			||||||
 		dev->net->features |= NETIF_F_RXCSUM;
 | 
					 		dev->net->features |= NETIF_F_RXCSUM;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/1520556817-97297-2-git-send-
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
@@ -618,13 +618,14 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -619,13 +619,14 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 					      SCALER_POS1_SCL_HEIGHT));
 | 
					 					      SCALER_POS1_SCL_HEIGHT));
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/1520556817-97297-3-git-send-
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static inline struct vc4_plane_state *
 | 
					 static inline struct vc4_plane_state *
 | 
				
			||||||
@@ -521,6 +527,7 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -522,6 +528,7 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 	u32 ctl0_offset = vc4_state->dlist_count;
 | 
					 	u32 ctl0_offset = vc4_state->dlist_count;
 | 
				
			||||||
 	const struct hvs_format *format = vc4_get_hvs_format(fb->format->format);
 | 
					 	const struct hvs_format *format = vc4_get_hvs_format(fb->format->format);
 | 
				
			||||||
 	int num_planes = drm_format_num_planes(format->drm);
 | 
					 	int num_planes = drm_format_num_planes(format->drm);
 | 
				
			||||||
@@ -44,7 +44,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/1520556817-97297-3-git-send-
 | 
				
			|||||||
 	u32 scl0, scl1, pitch0;
 | 
					 	u32 scl0, scl1, pitch0;
 | 
				
			||||||
 	u32 lbm_size, tiling;
 | 
					 	u32 lbm_size, tiling;
 | 
				
			||||||
 	unsigned long irqflags;
 | 
					 	unsigned long irqflags;
 | 
				
			||||||
@@ -704,6 +711,16 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -705,6 +712,16 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 	vc4_state->dlist[ctl0_offset] |=
 | 
					 	vc4_state->dlist[ctl0_offset] |=
 | 
				
			||||||
 		VC4_SET_FIELD(vc4_state->dlist_count, SCALER_CTL0_SIZE);
 | 
					 		VC4_SET_FIELD(vc4_state->dlist_count, SCALER_CTL0_SIZE);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ Link: https://patchwork.freedesktop.org/patch/170828/
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
@@ -867,6 +867,32 @@ out:
 | 
					@@ -868,6 +868,32 @@ out:
 | 
				
			||||||
 					      ctx);
 | 
					 					      ctx);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -66,7 +66,7 @@ Link: https://patchwork.freedesktop.org/patch/170828/
 | 
				
			|||||||
 static const struct drm_plane_funcs vc4_plane_funcs = {
 | 
					 static const struct drm_plane_funcs vc4_plane_funcs = {
 | 
				
			||||||
 	.update_plane = vc4_update_plane,
 | 
					 	.update_plane = vc4_update_plane,
 | 
				
			||||||
 	.disable_plane = drm_atomic_helper_disable_plane,
 | 
					 	.disable_plane = drm_atomic_helper_disable_plane,
 | 
				
			||||||
@@ -875,6 +901,7 @@ static const struct drm_plane_funcs vc4_
 | 
					@@ -876,6 +902,7 @@ static const struct drm_plane_funcs vc4_
 | 
				
			||||||
 	.reset = vc4_plane_reset,
 | 
					 	.reset = vc4_plane_reset,
 | 
				
			||||||
 	.atomic_duplicate_state = vc4_plane_duplicate_state,
 | 
					 	.atomic_duplicate_state = vc4_plane_duplicate_state,
 | 
				
			||||||
 	.atomic_destroy_state = vc4_plane_destroy_state,
 | 
					 	.atomic_destroy_state = vc4_plane_destroy_state,
 | 
				
			||||||
@@ -74,7 +74,7 @@ Link: https://patchwork.freedesktop.org/patch/170828/
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 struct drm_plane *vc4_plane_init(struct drm_device *dev,
 | 
					 struct drm_plane *vc4_plane_init(struct drm_device *dev,
 | 
				
			||||||
@@ -886,6 +913,11 @@ struct drm_plane *vc4_plane_init(struct
 | 
					@@ -887,6 +914,11 @@ struct drm_plane *vc4_plane_init(struct
 | 
				
			||||||
 	u32 num_formats = 0;
 | 
					 	u32 num_formats = 0;
 | 
				
			||||||
 	int ret = 0;
 | 
					 	int ret = 0;
 | 
				
			||||||
 	unsigned i;
 | 
					 	unsigned i;
 | 
				
			||||||
@@ -86,7 +86,7 @@ Link: https://patchwork.freedesktop.org/patch/170828/
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	vc4_plane = devm_kzalloc(dev->dev, sizeof(*vc4_plane),
 | 
					 	vc4_plane = devm_kzalloc(dev->dev, sizeof(*vc4_plane),
 | 
				
			||||||
 				 GFP_KERNEL);
 | 
					 				 GFP_KERNEL);
 | 
				
			||||||
@@ -906,7 +938,7 @@ struct drm_plane *vc4_plane_init(struct
 | 
					@@ -907,7 +939,7 @@ struct drm_plane *vc4_plane_init(struct
 | 
				
			||||||
 	ret = drm_universal_plane_init(dev, plane, 0,
 | 
					 	ret = drm_universal_plane_init(dev, plane, 0,
 | 
				
			||||||
 				       &vc4_plane_funcs,
 | 
					 				       &vc4_plane_funcs,
 | 
				
			||||||
 				       formats, num_formats,
 | 
					 				       formats, num_formats,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-2-eric@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
@@ -887,7 +887,9 @@ static bool vc4_format_mod_supported(str
 | 
					@@ -888,7 +888,9 @@ static bool vc4_format_mod_supported(str
 | 
				
			||||||
 	case DRM_FORMAT_YUV420:
 | 
					 	case DRM_FORMAT_YUV420:
 | 
				
			||||||
 	case DRM_FORMAT_YVU420:
 | 
					 	case DRM_FORMAT_YVU420:
 | 
				
			||||||
 	case DRM_FORMAT_NV12:
 | 
					 	case DRM_FORMAT_NV12:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					--- a/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
					+++ b/drivers/gpu/drm/vc4/vc4_plane.c
 | 
				
			||||||
@@ -466,11 +466,13 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -467,11 +467,13 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 	struct drm_framebuffer *fb = state->fb;
 | 
					 	struct drm_framebuffer *fb = state->fb;
 | 
				
			||||||
 	u32 ctl0_offset = vc4_state->dlist_count;
 | 
					 	u32 ctl0_offset = vc4_state->dlist_count;
 | 
				
			||||||
 	const struct hvs_format *format = vc4_get_hvs_format(fb->format->format);
 | 
					 	const struct hvs_format *format = vc4_get_hvs_format(fb->format->format);
 | 
				
			||||||
@@ -46,7 +46,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 	int ret, i;
 | 
					 	int ret, i;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	ret = vc4_plane_setup_clipping_and_scaling(state);
 | 
					 	ret = vc4_plane_setup_clipping_and_scaling(state);
 | 
				
			||||||
@@ -510,7 +512,7 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -511,7 +513,7 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 		scl1 = vc4_get_scl_field(state, 0);
 | 
					 		scl1 = vc4_get_scl_field(state, 0);
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -55,7 +55,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 	case DRM_FORMAT_MOD_LINEAR:
 | 
					 	case DRM_FORMAT_MOD_LINEAR:
 | 
				
			||||||
 		tiling = SCALER_CTL0_TILING_LINEAR;
 | 
					 		tiling = SCALER_CTL0_TILING_LINEAR;
 | 
				
			||||||
 		pitch0 = VC4_SET_FIELD(fb->pitches[0], SCALER_SRC_PITCH);
 | 
					 		pitch0 = VC4_SET_FIELD(fb->pitches[0], SCALER_SRC_PITCH);
 | 
				
			||||||
@@ -533,6 +535,49 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -534,6 +536,49 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -105,7 +105,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		DRM_DEBUG_KMS("Unsupported FB tiling flag 0x%16llx",
 | 
					 		DRM_DEBUG_KMS("Unsupported FB tiling flag 0x%16llx",
 | 
				
			||||||
 			      (long long)fb->modifier);
 | 
					 			      (long long)fb->modifier);
 | 
				
			||||||
@@ -543,7 +588,7 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -544,7 +589,7 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 	vc4_dlist_write(vc4_state,
 | 
					 	vc4_dlist_write(vc4_state,
 | 
				
			||||||
 			SCALER_CTL0_VALID |
 | 
					 			SCALER_CTL0_VALID |
 | 
				
			||||||
 			(format->pixel_order << SCALER_CTL0_ORDER_SHIFT) |
 | 
					 			(format->pixel_order << SCALER_CTL0_ORDER_SHIFT) |
 | 
				
			||||||
@@ -114,7 +114,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 			VC4_SET_FIELD(tiling, SCALER_CTL0_TILING) |
 | 
					 			VC4_SET_FIELD(tiling, SCALER_CTL0_TILING) |
 | 
				
			||||||
 			(vc4_state->is_unity ? SCALER_CTL0_UNITY : 0) |
 | 
					 			(vc4_state->is_unity ? SCALER_CTL0_UNITY : 0) |
 | 
				
			||||||
 			VC4_SET_FIELD(scl0, SCALER_CTL0_SCL0) |
 | 
					 			VC4_SET_FIELD(scl0, SCALER_CTL0_SCL0) |
 | 
				
			||||||
@@ -597,8 +642,13 @@ static int vc4_plane_mode_set(struct drm
 | 
					@@ -598,8 +643,13 @@ static int vc4_plane_mode_set(struct drm
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	/* Pitch word 1/2 */
 | 
					 	/* Pitch word 1/2 */
 | 
				
			||||||
 	for (i = 1; i < num_planes; i++) {
 | 
					 	for (i = 1; i < num_planes; i++) {
 | 
				
			||||||
@@ -130,7 +130,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	/* Colorspace conversion words */
 | 
					 	/* Colorspace conversion words */
 | 
				
			||||||
@@ -881,13 +931,30 @@ static bool vc4_format_mod_supported(str
 | 
					@@ -882,13 +932,30 @@ static bool vc4_format_mod_supported(str
 | 
				
			||||||
 	case DRM_FORMAT_BGR565:
 | 
					 	case DRM_FORMAT_BGR565:
 | 
				
			||||||
 	case DRM_FORMAT_ARGB1555:
 | 
					 	case DRM_FORMAT_ARGB1555:
 | 
				
			||||||
 	case DRM_FORMAT_XRGB1555:
 | 
					 	case DRM_FORMAT_XRGB1555:
 | 
				
			||||||
@@ -164,7 +164,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20180316220435.31416-3-eric@
 | 
				
			|||||||
 	case DRM_FORMAT_NV16:
 | 
					 	case DRM_FORMAT_NV16:
 | 
				
			||||||
 	case DRM_FORMAT_NV61:
 | 
					 	case DRM_FORMAT_NV61:
 | 
				
			||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
@@ -917,6 +984,9 @@ struct drm_plane *vc4_plane_init(struct
 | 
					@@ -918,6 +985,9 @@ struct drm_plane *vc4_plane_init(struct
 | 
				
			||||||
 	unsigned i;
 | 
					 	unsigned i;
 | 
				
			||||||
 	static const uint64_t modifiers[] = {
 | 
					 	static const uint64_t modifiers[] = {
 | 
				
			||||||
 		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
 | 
					 		DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2585,6 +2585,8 @@ static int lan78xx_open(struct net_devic
 | 
					@@ -2589,6 +2589,8 @@ static int lan78xx_open(struct net_devic
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	dev->link_on = false;
 | 
					 	dev->link_on = false;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2585,8 +2585,6 @@ static int lan78xx_open(struct net_devic
 | 
					@@ -2589,8 +2589,6 @@ static int lan78xx_open(struct net_devic
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	dev->link_on = false;
 | 
					 	dev->link_on = false;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,45 +0,0 @@
 | 
				
			|||||||
From d0b55a012bbf2ffe4307f2632165dc1f8cdc351f Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
 | 
					 | 
				
			||||||
Date: Fri, 25 May 2018 15:00:20 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH 415/454] qmi_wwan: apply SET_DTR quirk to the SIMCOM shared
 | 
					 | 
				
			||||||
 device ID
 | 
					 | 
				
			||||||
MIME-Version: 1.0
 | 
					 | 
				
			||||||
Content-Type: text/plain; charset=UTF-8
 | 
					 | 
				
			||||||
Content-Transfer-Encoding: 8bit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
commit 102cd909635612c0be784a519651954a7924c786 upstream.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SIMCOM are reusing a single device ID for many (all of their?)
 | 
					 | 
				
			||||||
different modems, based on different chipsets and firmwares. Newer
 | 
					 | 
				
			||||||
Qualcomm chipset generations require setting DTR to wake the QMI
 | 
					 | 
				
			||||||
function.  The SIM7600E modem is using such a chipset, making it
 | 
					 | 
				
			||||||
fail to work with this driver despite the device ID match.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fix by unconditionally enabling the SET_DTR quirk for all SIMCOM
 | 
					 | 
				
			||||||
modems using this specific device ID.  This is similar to what
 | 
					 | 
				
			||||||
we already have done for another case of device IDs recycled over
 | 
					 | 
				
			||||||
multiple chipset generations: 14cf4a771b30 ("drivers: net: usb:
 | 
					 | 
				
			||||||
qmi_wwan: add QMI_QUIRK_SET_DTR for Telit PID 0x1201")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Initial testing on an older SIM7100 modem shows no immediate side
 | 
					 | 
				
			||||||
effects.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reported-by: Sebastian Sjoholm <sebastian.sjoholm@gmail.com>
 | 
					 | 
				
			||||||
Cc: Reinhard Speyerer <rspmn@arcor.de>
 | 
					 | 
				
			||||||
Signed-off-by: Bjørn Mork <bjorn@mork.no>
 | 
					 | 
				
			||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 drivers/net/usb/qmi_wwan.c | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/drivers/net/usb/qmi_wwan.c
 | 
					 | 
				
			||||||
+++ b/drivers/net/usb/qmi_wwan.c
 | 
					 | 
				
			||||||
@@ -1250,7 +1250,7 @@ static const struct usb_device_id produc
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)},	/* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)},	/* HP lt4120 Snapdragon X5 LTE */
 | 
					 | 
				
			||||||
 	{QMI_FIXED_INTF(0x22de, 0x9061, 3)},	/* WeTelecom WPD-600N */
 | 
					 | 
				
			||||||
-	{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)},	/* SIMCom 7230E */
 | 
					 | 
				
			||||||
+	{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)},	/* SIMCom 7100E, 7230E, 7600E ++ */
 | 
					 | 
				
			||||||
 	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)},	/* Quectel EC25, EC20 R2.0  Mini PCIe */
 | 
					 | 
				
			||||||
 	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)},	/* Quectel EC21 Mini PCIe */
 | 
					 | 
				
			||||||
 	{QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)},	/* Quectel EG91 */
 | 
					 | 
				
			||||||
@@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447
 | 
				
			|||||||
 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
 | 
					 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
 | 
					 	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL);
 | 
				
			||||||
@@ -3707,7 +3712,12 @@ static int lan78xx_probe(struct usb_inte
 | 
					@@ -3711,7 +3716,12 @@ static int lan78xx_probe(struct usb_inte
 | 
				
			||||||
 	dev->pipe_intr = usb_rcvintpipe(dev->udev,
 | 
					 	dev->pipe_intr = usb_rcvintpipe(dev->udev,
 | 
				
			||||||
 					dev->ep_intr->desc.bEndpointAddress &
 | 
					 					dev->ep_intr->desc.bEndpointAddress &
 | 
				
			||||||
 					USB_ENDPOINT_NUMBER_MASK);
 | 
					 					USB_ENDPOINT_NUMBER_MASK);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/drivers/net/usb/lan78xx.c
 | 
					--- a/drivers/net/usb/lan78xx.c
 | 
				
			||||||
+++ b/drivers/net/usb/lan78xx.c
 | 
					+++ b/drivers/net/usb/lan78xx.c
 | 
				
			||||||
@@ -2458,6 +2458,15 @@ static int lan78xx_reset(struct lan78xx_
 | 
					@@ -2462,6 +2462,15 @@ static int lan78xx_reset(struct lan78xx_
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
 | 
					 	ret = lan78xx_read_reg(dev, HW_CFG, &buf);
 | 
				
			||||||
 	buf |= HW_CFG_MEF_;
 | 
					 	buf |= HW_CFG_MEF_;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/mips/include/asm/r4kcache.h
 | 
					--- a/arch/mips/include/asm/r4kcache.h
 | 
				
			||||||
+++ b/arch/mips/include/asm/r4kcache.h
 | 
					+++ b/arch/mips/include/asm/r4kcache.h
 | 
				
			||||||
@@ -25,6 +25,38 @@
 | 
					@@ -26,6 +26,38 @@
 | 
				
			||||||
 extern void (*r4k_blast_dcache)(void);
 | 
					 extern void (*r4k_blast_dcache)(void);
 | 
				
			||||||
 extern void (*r4k_blast_icache)(void);
 | 
					 extern void (*r4k_blast_icache)(void);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -39,7 +39,7 @@
 | 
				
			|||||||
 /*
 | 
					 /*
 | 
				
			||||||
  * This macro return a properly sign-extended address suitable as base address
 | 
					  * This macro return a properly sign-extended address suitable as base address
 | 
				
			||||||
  * for indexed cache operations.  Two issues here:
 | 
					  * for indexed cache operations.  Two issues here:
 | 
				
			||||||
@@ -98,6 +130,7 @@ static inline void flush_icache_line_ind
 | 
					@@ -99,6 +131,7 @@ static inline void flush_icache_line_ind
 | 
				
			||||||
 static inline void flush_dcache_line_indexed(unsigned long addr)
 | 
					 static inline void flush_dcache_line_indexed(unsigned long addr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	__dflush_prologue
 | 
					 	__dflush_prologue
 | 
				
			||||||
@@ -47,7 +47,7 @@
 | 
				
			|||||||
 	cache_op(Index_Writeback_Inv_D, addr);
 | 
					 	cache_op(Index_Writeback_Inv_D, addr);
 | 
				
			||||||
 	__dflush_epilogue
 | 
					 	__dflush_epilogue
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -125,6 +158,7 @@ static inline void flush_icache_line(uns
 | 
					@@ -126,6 +159,7 @@ static inline void flush_icache_line(uns
 | 
				
			||||||
 static inline void flush_dcache_line(unsigned long addr)
 | 
					 static inline void flush_dcache_line(unsigned long addr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	__dflush_prologue
 | 
					 	__dflush_prologue
 | 
				
			||||||
@@ -55,7 +55,7 @@
 | 
				
			|||||||
 	cache_op(Hit_Writeback_Inv_D, addr);
 | 
					 	cache_op(Hit_Writeback_Inv_D, addr);
 | 
				
			||||||
 	__dflush_epilogue
 | 
					 	__dflush_epilogue
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -132,6 +166,7 @@ static inline void flush_dcache_line(uns
 | 
					@@ -133,6 +167,7 @@ static inline void flush_dcache_line(uns
 | 
				
			||||||
 static inline void invalidate_dcache_line(unsigned long addr)
 | 
					 static inline void invalidate_dcache_line(unsigned long addr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	__dflush_prologue
 | 
					 	__dflush_prologue
 | 
				
			||||||
@@ -63,7 +63,7 @@
 | 
				
			|||||||
 	cache_op(Hit_Invalidate_D, addr);
 | 
					 	cache_op(Hit_Invalidate_D, addr);
 | 
				
			||||||
 	__dflush_epilogue
 | 
					 	__dflush_epilogue
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -205,6 +240,7 @@ static inline int protected_flush_icache
 | 
					@@ -206,6 +241,7 @@ static inline int protected_flush_icache
 | 
				
			||||||
 #ifdef CONFIG_EVA
 | 
					 #ifdef CONFIG_EVA
 | 
				
			||||||
 		return protected_cachee_op(Hit_Invalidate_I, addr);
 | 
					 		return protected_cachee_op(Hit_Invalidate_I, addr);
 | 
				
			||||||
 #else
 | 
					 #else
 | 
				
			||||||
@@ -71,7 +71,7 @@
 | 
				
			|||||||
 		return protected_cache_op(Hit_Invalidate_I, addr);
 | 
					 		return protected_cache_op(Hit_Invalidate_I, addr);
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -218,6 +254,7 @@ static inline int protected_flush_icache
 | 
					@@ -219,6 +255,7 @@ static inline int protected_flush_icache
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 static inline int protected_writeback_dcache_line(unsigned long addr)
 | 
					 static inline int protected_writeback_dcache_line(unsigned long addr)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -79,7 +79,7 @@
 | 
				
			|||||||
 #ifdef CONFIG_EVA
 | 
					 #ifdef CONFIG_EVA
 | 
				
			||||||
 	return protected_cachee_op(Hit_Writeback_Inv_D, addr);
 | 
					 	return protected_cachee_op(Hit_Writeback_Inv_D, addr);
 | 
				
			||||||
 #else
 | 
					 #else
 | 
				
			||||||
@@ -575,8 +612,51 @@ static inline void invalidate_tcache_pag
 | 
					@@ -576,8 +613,51 @@ static inline void invalidate_tcache_pag
 | 
				
			||||||
 		: "r" (base),						\
 | 
					 		: "r" (base),						\
 | 
				
			||||||
 		  "i" (op));
 | 
					 		  "i" (op));
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -132,7 +132,7 @@
 | 
				
			|||||||
 static inline void extra##blast_##pfx##cache##lsize(void)		\
 | 
					 static inline void extra##blast_##pfx##cache##lsize(void)		\
 | 
				
			||||||
 {									\
 | 
					 {									\
 | 
				
			||||||
 	unsigned long start = INDEX_BASE;				\
 | 
					 	unsigned long start = INDEX_BASE;				\
 | 
				
			||||||
@@ -588,6 +668,7 @@ static inline void extra##blast_##pfx##c
 | 
					@@ -589,6 +669,7 @@ static inline void extra##blast_##pfx##c
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
 	__##pfx##flush_prologue						\
 | 
					 	__##pfx##flush_prologue						\
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
@@ -140,7 +140,7 @@
 | 
				
			|||||||
 	for (ws = 0; ws < ws_end; ws += ws_inc)				\
 | 
					 	for (ws = 0; ws < ws_end; ws += ws_inc)				\
 | 
				
			||||||
 		for (addr = start; addr < end; addr += lsize * 32)	\
 | 
					 		for (addr = start; addr < end; addr += lsize * 32)	\
 | 
				
			||||||
 			cache##lsize##_unroll32(addr|ws, indexop);	\
 | 
					 			cache##lsize##_unroll32(addr|ws, indexop);	\
 | 
				
			||||||
@@ -602,6 +683,7 @@ static inline void extra##blast_##pfx##c
 | 
					@@ -603,6 +684,7 @@ static inline void extra##blast_##pfx##c
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
 	__##pfx##flush_prologue						\
 | 
					 	__##pfx##flush_prologue						\
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
@@ -148,7 +148,7 @@
 | 
				
			|||||||
 	do {								\
 | 
					 	do {								\
 | 
				
			||||||
 		cache##lsize##_unroll32(start, hitop);			\
 | 
					 		cache##lsize##_unroll32(start, hitop);			\
 | 
				
			||||||
 		start += lsize * 32;					\
 | 
					 		start += lsize * 32;					\
 | 
				
			||||||
@@ -620,6 +702,8 @@ static inline void extra##blast_##pfx##c
 | 
					@@ -621,6 +703,8 @@ static inline void extra##blast_##pfx##c
 | 
				
			||||||
 			       current_cpu_data.desc.waybit;		\
 | 
					 			       current_cpu_data.desc.waybit;		\
 | 
				
			||||||
 	unsigned long ws, addr;						\
 | 
					 	unsigned long ws, addr;						\
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
@@ -157,7 +157,7 @@
 | 
				
			|||||||
 	__##pfx##flush_prologue						\
 | 
					 	__##pfx##flush_prologue						\
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
 	for (ws = 0; ws < ws_end; ws += ws_inc)				\
 | 
					 	for (ws = 0; ws < ws_end; ws += ws_inc)				\
 | 
				
			||||||
@@ -629,26 +713,26 @@ static inline void extra##blast_##pfx##c
 | 
					@@ -630,26 +714,26 @@ static inline void extra##blast_##pfx##c
 | 
				
			||||||
 	__##pfx##flush_epilogue						\
 | 
					 	__##pfx##flush_epilogue						\
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -204,7 +204,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #define __BUILD_BLAST_USER_CACHE(pfx, desc, indexop, hitop, lsize) \
 | 
					 #define __BUILD_BLAST_USER_CACHE(pfx, desc, indexop, hitop, lsize) \
 | 
				
			||||||
 static inline void blast_##pfx##cache##lsize##_user_page(unsigned long page) \
 | 
					 static inline void blast_##pfx##cache##lsize##_user_page(unsigned long page) \
 | 
				
			||||||
@@ -677,53 +761,23 @@ __BUILD_BLAST_USER_CACHE(d, dcache, Inde
 | 
					@@ -678,53 +762,23 @@ __BUILD_BLAST_USER_CACHE(d, dcache, Inde
 | 
				
			||||||
 __BUILD_BLAST_USER_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64)
 | 
					 __BUILD_BLAST_USER_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /* build blast_xxx_range, protected_blast_xxx_range */
 | 
					 /* build blast_xxx_range, protected_blast_xxx_range */
 | 
				
			||||||
@@ -266,7 +266,7 @@
 | 
				
			|||||||
 	}								\
 | 
					 	}								\
 | 
				
			||||||
 									\
 | 
					 									\
 | 
				
			||||||
 	__##pfx##flush_epilogue						\
 | 
					 	__##pfx##flush_epilogue						\
 | 
				
			||||||
@@ -731,8 +785,8 @@ static inline void prot##extra##blast_##
 | 
					@@ -732,8 +786,8 @@ static inline void prot##extra##blast_##
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #ifndef CONFIG_EVA
 | 
					 #ifndef CONFIG_EVA
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -277,7 +277,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 #else
 | 
					 #else
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -769,14 +823,14 @@ __BUILD_PROT_BLAST_CACHE_RANGE(d, dcache
 | 
					@@ -770,15 +824,15 @@ __BUILD_PROT_BLAST_CACHE_RANGE(d, dcache
 | 
				
			||||||
 __BUILD_PROT_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I)
 | 
					 __BUILD_PROT_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
@@ -298,7 +298,8 @@
 | 
				
			|||||||
+__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , , , BCM4710_DUMMY_RREG();)
 | 
					+__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , , , BCM4710_DUMMY_RREG();)
 | 
				
			||||||
+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, , , , )
 | 
					+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, , , , )
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #endif /* _ASM_R4KCACHE_H */
 | 
					 /* Currently, this is very specific to Loongson-3 */
 | 
				
			||||||
 | 
					 #define __BUILD_BLAST_CACHE_NODE(pfx, desc, indexop, hitop, lsize)	\
 | 
				
			||||||
--- a/arch/mips/include/asm/stackframe.h
 | 
					--- a/arch/mips/include/asm/stackframe.h
 | 
				
			||||||
+++ b/arch/mips/include/asm/stackframe.h
 | 
					+++ b/arch/mips/include/asm/stackframe.h
 | 
				
			||||||
@@ -428,6 +428,10 @@
 | 
					@@ -428,6 +428,10 @@
 | 
				
			||||||
@@ -396,7 +397,7 @@
 | 
				
			|||||||
 	if (dc_lsize == 0)
 | 
					 	if (dc_lsize == 0)
 | 
				
			||||||
 		r4k_blast_dcache = (void *)cache_noop;
 | 
					 		r4k_blast_dcache = (void *)cache_noop;
 | 
				
			||||||
 	else if (dc_lsize == 16)
 | 
					 	else if (dc_lsize == 16)
 | 
				
			||||||
@@ -957,6 +969,8 @@ static void local_r4k_flush_cache_sigtra
 | 
					@@ -986,6 +998,8 @@ static void local_r4k_flush_cache_sigtra
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	R4600_HIT_CACHEOP_WAR_IMPL;
 | 
					 	R4600_HIT_CACHEOP_WAR_IMPL;
 | 
				
			||||||
@@ -405,7 +406,7 @@
 | 
				
			|||||||
 	if (!cpu_has_ic_fills_f_dc) {
 | 
					 	if (!cpu_has_ic_fills_f_dc) {
 | 
				
			||||||
 		if (dc_lsize)
 | 
					 		if (dc_lsize)
 | 
				
			||||||
 			vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1))
 | 
					 			vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1))
 | 
				
			||||||
@@ -1851,6 +1865,17 @@ static void coherency_setup(void)
 | 
					@@ -1880,6 +1894,17 @@ static void coherency_setup(void)
 | 
				
			||||||
 	 * silly idea of putting something else there ...
 | 
					 	 * silly idea of putting something else there ...
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
 	switch (current_cpu_type()) {
 | 
					 	switch (current_cpu_type()) {
 | 
				
			||||||
@@ -423,7 +424,7 @@
 | 
				
			|||||||
 	case CPU_R4000PC:
 | 
					 	case CPU_R4000PC:
 | 
				
			||||||
 	case CPU_R4000SC:
 | 
					 	case CPU_R4000SC:
 | 
				
			||||||
 	case CPU_R4000MC:
 | 
					 	case CPU_R4000MC:
 | 
				
			||||||
@@ -1897,6 +1922,15 @@ void r4k_cache_init(void)
 | 
					@@ -1926,6 +1951,15 @@ void r4k_cache_init(void)
 | 
				
			||||||
 	extern void build_copy_page(void);
 | 
					 	extern void build_copy_page(void);
 | 
				
			||||||
 	struct cpuinfo_mips *c = ¤t_cpu_data;
 | 
					 	struct cpuinfo_mips *c = ¤t_cpu_data;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -439,7 +440,7 @@
 | 
				
			|||||||
 	probe_pcache();
 | 
					 	probe_pcache();
 | 
				
			||||||
 	probe_vcache();
 | 
					 	probe_vcache();
 | 
				
			||||||
 	setup_scache();
 | 
					 	setup_scache();
 | 
				
			||||||
@@ -1974,7 +2008,15 @@ void r4k_cache_init(void)
 | 
					@@ -2004,7 +2038,15 @@ void r4k_cache_init(void)
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
 	local_r4k___flush_cache_all(NULL);
 | 
					 	local_r4k___flush_cache_all(NULL);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ This fixes OpenWrt ticket #1485: https://dev.openwrt.org/ticket/1485
 | 
				
			|||||||
 #endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */
 | 
					 #endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */
 | 
				
			||||||
--- a/arch/mips/mm/c-r4k.c
 | 
					--- a/arch/mips/mm/c-r4k.c
 | 
				
			||||||
+++ b/arch/mips/mm/c-r4k.c
 | 
					+++ b/arch/mips/mm/c-r4k.c
 | 
				
			||||||
@@ -672,7 +672,7 @@ static inline void local_r4k_flush_cache
 | 
					@@ -694,7 +694,7 @@ static inline void local_r4k_flush_cache
 | 
				
			||||||
 		map_coherent = (cpu_has_dc_aliases &&
 | 
					 		map_coherent = (cpu_has_dc_aliases &&
 | 
				
			||||||
 				page_mapcount(page) &&
 | 
					 				page_mapcount(page) &&
 | 
				
			||||||
 				!Page_dcache_dirty(page));
 | 
					 				!Page_dcache_dirty(page));
 | 
				
			||||||
@@ -38,7 +38,7 @@ This fixes OpenWrt ticket #1485: https://dev.openwrt.org/ticket/1485
 | 
				
			|||||||
 			vaddr = kmap_coherent(page, addr);
 | 
					 			vaddr = kmap_coherent(page, addr);
 | 
				
			||||||
 		else
 | 
					 		else
 | 
				
			||||||
 			vaddr = kmap_atomic(page);
 | 
					 			vaddr = kmap_atomic(page);
 | 
				
			||||||
@@ -697,7 +697,7 @@ static inline void local_r4k_flush_cache
 | 
					@@ -719,7 +719,7 @@ static inline void local_r4k_flush_cache
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (vaddr) {
 | 
					 	if (vaddr) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@
 | 
				
			|||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -95,6 +168,11 @@ static int cns3xxx_pci_read_config(struc
 | 
					@@ -95,6 +168,11 @@ static int cns3xxx_pci_read_config(struc
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	ret = pci_generic_config_read32(bus, devfn, where, size, val);
 | 
					 	ret = pci_generic_config_read(bus, devfn, where, size, val);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+	if (check_master_abort(bus, devfn, where)) {
 | 
					+	if (check_master_abort(bus, devfn, where)) {
 | 
				
			||||||
+		printk(KERN_ERR "pci error: %04d:%02x:%02x.%02x %02x(%d)= master_abort on read\n", pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size);
 | 
					+		printk(KERN_ERR "pci error: %04d:%02x:%02x.%02x %02x(%d)= master_abort on read\n", pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
 | 
				
			|||||||
   *	@sk_lingertime: %SO_LINGER l_linger setting
 | 
					   *	@sk_lingertime: %SO_LINGER l_linger setting
 | 
				
			||||||
   *	@sk_backlog: always used with the per-socket spinlock held
 | 
					   *	@sk_backlog: always used with the per-socket spinlock held
 | 
				
			||||||
   *	@sk_callback_lock: used with the callbacks in the end of this struct
 | 
					   *	@sk_callback_lock: used with the callbacks in the end of this struct
 | 
				
			||||||
@@ -445,6 +446,8 @@ struct sock {
 | 
					@@ -446,6 +447,8 @@ struct sock {
 | 
				
			||||||
 				sk_type      : 16;
 | 
					 				sk_type      : 16;
 | 
				
			||||||
 #define SK_PROTOCOL_MAX U8_MAX
 | 
					 #define SK_PROTOCOL_MAX U8_MAX
 | 
				
			||||||
 	u16			sk_gso_max_segs;
 | 
					 	u16			sk_gso_max_segs;
 | 
				
			||||||
@@ -55,7 +55,7 @@ Cc: Kir Kolyshkin <kir@openvz.org>
 | 
				
			|||||||
 	rwlock_t		sk_callback_lock;
 | 
					 	rwlock_t		sk_callback_lock;
 | 
				
			||||||
--- a/net/core/sock.c
 | 
					--- a/net/core/sock.c
 | 
				
			||||||
+++ b/net/core/sock.c
 | 
					+++ b/net/core/sock.c
 | 
				
			||||||
@@ -2739,6 +2739,7 @@ void sock_init_data(struct socket *sock,
 | 
					@@ -2742,6 +2742,7 @@ void sock_init_data(struct socket *sock,
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	sk->sk_max_pacing_rate = ~0U;
 | 
					 	sk->sk_max_pacing_rate = ~0U;
 | 
				
			||||||
 	sk->sk_pacing_rate = ~0U;
 | 
					 	sk->sk_pacing_rate = ~0U;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,119 +0,0 @@
 | 
				
			|||||||
From adcc81f148d733b7e8e641300c5590a2cdc13bf3 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Paul Burton <paul.burton@mips.com>
 | 
					 | 
				
			||||||
Date: Thu, 20 Dec 2018 17:45:43 +0000
 | 
					 | 
				
			||||||
Subject: MIPS: math-emu: Write-protect delay slot emulation pages
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Mapping the delay slot emulation page as both writeable & executable
 | 
					 | 
				
			||||||
presents a security risk, in that if an exploit can write to & jump into
 | 
					 | 
				
			||||||
the page then it can be used as an easy way to execute arbitrary code.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Prevent this by mapping the page read-only for userland, and using
 | 
					 | 
				
			||||||
access_process_vm() with the FOLL_FORCE flag to write to it from
 | 
					 | 
				
			||||||
mips_dsemul().
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This will likely be less efficient due to copy_to_user_page() performing
 | 
					 | 
				
			||||||
cache maintenance on a whole page, rather than a single line as in the
 | 
					 | 
				
			||||||
previous use of flush_cache_sigtramp(). However this delay slot
 | 
					 | 
				
			||||||
emulation code ought not to be running in any performance critical paths
 | 
					 | 
				
			||||||
anyway so this isn't really a problem, and we can probably do better in
 | 
					 | 
				
			||||||
copy_to_user_page() anyway in future.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
A major advantage of this approach is that the fix is small & simple to
 | 
					 | 
				
			||||||
backport to stable kernels.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reported-by: Andy Lutomirski <luto@kernel.org>
 | 
					 | 
				
			||||||
Signed-off-by: Paul Burton <paul.burton@mips.com>
 | 
					 | 
				
			||||||
Fixes: 432c6bacbd0c ("MIPS: Use per-mm page to execute branch delay slot instructions")
 | 
					 | 
				
			||||||
Cc: stable@vger.kernel.org # v4.8+
 | 
					 | 
				
			||||||
Cc: linux-mips@vger.kernel.org
 | 
					 | 
				
			||||||
Cc: linux-kernel@vger.kernel.org
 | 
					 | 
				
			||||||
Cc: Rich Felker <dalias@libc.org>
 | 
					 | 
				
			||||||
Cc: David Daney <david.daney@cavium.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 arch/mips/kernel/vdso.c     |  4 ++--
 | 
					 | 
				
			||||||
 arch/mips/math-emu/dsemul.c | 38 ++++++++++++++++++++------------------
 | 
					 | 
				
			||||||
 2 files changed, 22 insertions(+), 20 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/arch/mips/kernel/vdso.c
 | 
					 | 
				
			||||||
+++ b/arch/mips/kernel/vdso.c
 | 
					 | 
				
			||||||
@@ -126,8 +126,8 @@ int arch_setup_additional_pages(struct l
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* Map delay slot emulation page */
 | 
					 | 
				
			||||||
 	base = mmap_region(NULL, STACK_TOP, PAGE_SIZE,
 | 
					 | 
				
			||||||
-			   VM_READ|VM_WRITE|VM_EXEC|
 | 
					 | 
				
			||||||
-			   VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC,
 | 
					 | 
				
			||||||
+			   VM_READ | VM_EXEC |
 | 
					 | 
				
			||||||
+			   VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
 | 
					 | 
				
			||||||
 			   0, NULL);
 | 
					 | 
				
			||||||
 	if (IS_ERR_VALUE(base)) {
 | 
					 | 
				
			||||||
 		ret = base;
 | 
					 | 
				
			||||||
--- a/arch/mips/math-emu/dsemul.c
 | 
					 | 
				
			||||||
+++ b/arch/mips/math-emu/dsemul.c
 | 
					 | 
				
			||||||
@@ -214,8 +214,9 @@ int mips_dsemul(struct pt_regs *regs, mi
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
 	int isa16 = get_isa16_mode(regs->cp0_epc);
 | 
					 | 
				
			||||||
 	mips_instruction break_math;
 | 
					 | 
				
			||||||
-	struct emuframe __user *fr;
 | 
					 | 
				
			||||||
-	int err, fr_idx;
 | 
					 | 
				
			||||||
+	unsigned long fr_uaddr;
 | 
					 | 
				
			||||||
+	struct emuframe fr;
 | 
					 | 
				
			||||||
+	int fr_idx, ret;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* NOP is easy */
 | 
					 | 
				
			||||||
 	if (ir == 0)
 | 
					 | 
				
			||||||
@@ -250,27 +251,31 @@ int mips_dsemul(struct pt_regs *regs, mi
 | 
					 | 
				
			||||||
 		fr_idx = alloc_emuframe();
 | 
					 | 
				
			||||||
 	if (fr_idx == BD_EMUFRAME_NONE)
 | 
					 | 
				
			||||||
 		return SIGBUS;
 | 
					 | 
				
			||||||
-	fr = &dsemul_page()[fr_idx];
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* Retrieve the appropriately encoded break instruction */
 | 
					 | 
				
			||||||
 	break_math = BREAK_MATH(isa16);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* Write the instructions to the frame */
 | 
					 | 
				
			||||||
 	if (isa16) {
 | 
					 | 
				
			||||||
-		err = __put_user(ir >> 16,
 | 
					 | 
				
			||||||
-				 (u16 __user *)(&fr->emul));
 | 
					 | 
				
			||||||
-		err |= __put_user(ir & 0xffff,
 | 
					 | 
				
			||||||
-				  (u16 __user *)((long)(&fr->emul) + 2));
 | 
					 | 
				
			||||||
-		err |= __put_user(break_math >> 16,
 | 
					 | 
				
			||||||
-				  (u16 __user *)(&fr->badinst));
 | 
					 | 
				
			||||||
-		err |= __put_user(break_math & 0xffff,
 | 
					 | 
				
			||||||
-				  (u16 __user *)((long)(&fr->badinst) + 2));
 | 
					 | 
				
			||||||
+		union mips_instruction _emul = {
 | 
					 | 
				
			||||||
+			.halfword = { ir >> 16, ir }
 | 
					 | 
				
			||||||
+		};
 | 
					 | 
				
			||||||
+		union mips_instruction _badinst = {
 | 
					 | 
				
			||||||
+			.halfword = { break_math >> 16, break_math }
 | 
					 | 
				
			||||||
+		};
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		fr.emul = _emul.word;
 | 
					 | 
				
			||||||
+		fr.badinst = _badinst.word;
 | 
					 | 
				
			||||||
 	} else {
 | 
					 | 
				
			||||||
-		err = __put_user(ir, &fr->emul);
 | 
					 | 
				
			||||||
-		err |= __put_user(break_math, &fr->badinst);
 | 
					 | 
				
			||||||
+		fr.emul = ir;
 | 
					 | 
				
			||||||
+		fr.badinst = break_math;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-	if (unlikely(err)) {
 | 
					 | 
				
			||||||
+	/* Write the frame to user memory */
 | 
					 | 
				
			||||||
+	fr_uaddr = (unsigned long)&dsemul_page()[fr_idx];
 | 
					 | 
				
			||||||
+	ret = access_process_vm(current, fr_uaddr, &fr, sizeof(fr),
 | 
					 | 
				
			||||||
+				FOLL_FORCE | FOLL_WRITE);
 | 
					 | 
				
			||||||
+	if (unlikely(ret != sizeof(fr))) {
 | 
					 | 
				
			||||||
 		MIPS_FPU_EMU_INC_STATS(errors);
 | 
					 | 
				
			||||||
 		free_emuframe(fr_idx, current->mm);
 | 
					 | 
				
			||||||
 		return SIGBUS;
 | 
					 | 
				
			||||||
@@ -282,10 +287,7 @@ int mips_dsemul(struct pt_regs *regs, mi
 | 
					 | 
				
			||||||
 	atomic_set(¤t->thread.bd_emu_frame, fr_idx);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* Change user register context to execute the frame */
 | 
					 | 
				
			||||||
-	regs->cp0_epc = (unsigned long)&fr->emul | isa16;
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-	/* Ensure the icache observes our newly written frame */
 | 
					 | 
				
			||||||
-	flush_cache_sigtramp((unsigned long)&fr->emul);
 | 
					 | 
				
			||||||
+	regs->cp0_epc = fr_uaddr | isa16;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	return 0;
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
@@ -33,11 +33,9 @@ CC: stable@vger.kernel.org # v4.0+
 | 
				
			|||||||
 arch/arm/mach-cns3xxx/pcie.c | 2 +-
 | 
					 arch/arm/mach-cns3xxx/pcie.c | 2 +-
 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
 | 
					 | 
				
			||||||
index 5e11ad3164e0..95a11d5b3587 100644
 | 
					 | 
				
			||||||
--- a/arch/arm/mach-cns3xxx/pcie.c
 | 
					--- a/arch/arm/mach-cns3xxx/pcie.c
 | 
				
			||||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
 | 
					+++ b/arch/arm/mach-cns3xxx/pcie.c
 | 
				
			||||||
@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
 | 
					@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struc
 | 
				
			||||||
 	u32 mask = (0x1ull << (size * 8)) - 1;
 | 
					 	u32 mask = (0x1ull << (size * 8)) - 1;
 | 
				
			||||||
 	int shift = (where % 4) * 8;
 | 
					 	int shift = (where % 4) * 8;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -46,6 +44,3 @@ index 5e11ad3164e0..95a11d5b3587 100644
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
 | 
					 	if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
 | 
				
			||||||
 	    (where & 0xffc) == PCI_CLASS_REVISION)
 | 
					 	    (where & 0xffc) == PCI_CLASS_REVISION)
 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
2.17.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/Makefile
 | 
					--- a/Makefile
 | 
				
			||||||
+++ b/Makefile
 | 
					+++ b/Makefile
 | 
				
			||||||
@@ -1237,7 +1237,6 @@ all: modules
 | 
					@@ -1240,7 +1240,6 @@ all: modules
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 PHONY += modules
 | 
					 PHONY += modules
 | 
				
			||||||
 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
 | 
					 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
 | 
				
			||||||
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	@$(kecho) '  Building modules, stage 2.';
 | 
					 	@$(kecho) '  Building modules, stage 2.';
 | 
				
			||||||
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 | 
					 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1266,7 +1265,6 @@ _modinst_:
 | 
					@@ -1269,7 +1268,6 @@ _modinst_:
 | 
				
			||||||
 		rm -f $(MODLIB)/build ; \
 | 
					 		rm -f $(MODLIB)/build ; \
 | 
				
			||||||
 		ln -s $(CURDIR) $(MODLIB)/build ; \
 | 
					 		ln -s $(CURDIR) $(MODLIB)/build ; \
 | 
				
			||||||
 	fi
 | 
					 	fi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
--- a/arch/mips/include/asm/r4kcache.h
 | 
					--- a/arch/mips/include/asm/r4kcache.h
 | 
				
			||||||
+++ b/arch/mips/include/asm/r4kcache.h
 | 
					+++ b/arch/mips/include/asm/r4kcache.h
 | 
				
			||||||
@@ -682,16 +682,48 @@ static inline void prot##extra##blast_##
 | 
					@@ -683,16 +683,48 @@ static inline void prot##extra##blast_##
 | 
				
			||||||
 						    unsigned long end)	\
 | 
					 						    unsigned long end)	\
 | 
				
			||||||
 {									\
 | 
					 {									\
 | 
				
			||||||
 	unsigned long lsize = cpu_##desc##_line_size();			\
 | 
					 	unsigned long lsize = cpu_##desc##_line_size();			\
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/drivers/net/phy/phy_device.c
 | 
					--- a/drivers/net/phy/phy_device.c
 | 
				
			||||||
+++ b/drivers/net/phy/phy_device.c
 | 
					+++ b/drivers/net/phy/phy_device.c
 | 
				
			||||||
@@ -1458,6 +1458,9 @@ int genphy_update_link(struct phy_device
 | 
					@@ -1455,6 +1455,9 @@ int genphy_update_link(struct phy_device
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int status;
 | 
					 	int status;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/net/core/sock.c
 | 
					--- a/net/core/sock.c
 | 
				
			||||||
+++ b/net/core/sock.c
 | 
					+++ b/net/core/sock.c
 | 
				
			||||||
@@ -3378,6 +3378,8 @@ static __net_initdata struct pernet_oper
 | 
					@@ -3381,6 +3381,8 @@ static __net_initdata struct pernet_oper
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static int __init proto_init(void)
 | 
					 static int __init proto_init(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 static int absolute_percpu = 0;
 | 
					 static int absolute_percpu = 0;
 | 
				
			||||||
 static char symbol_prefix_char = '\0';
 | 
					 static char symbol_prefix_char = '\0';
 | 
				
			||||||
 static int base_relative = 0;
 | 
					 static int base_relative = 0;
 | 
				
			||||||
@@ -457,6 +458,9 @@ static void write_src(void)
 | 
					@@ -458,6 +459,9 @@ static void write_src(void)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	free(markers);
 | 
					 	free(markers);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	output_label("kallsyms_token_table");
 | 
					 	output_label("kallsyms_token_table");
 | 
				
			||||||
 	off = 0;
 | 
					 	off = 0;
 | 
				
			||||||
 	for (i = 0; i < 256; i++) {
 | 
					 	for (i = 0; i < 256; i++) {
 | 
				
			||||||
@@ -515,6 +519,9 @@ static void *find_token(unsigned char *s
 | 
					@@ -516,6 +520,9 @@ static void *find_token(unsigned char *s
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int i;
 | 
					 	int i;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	for (i = 0; i < len - 1; i++) {
 | 
					 	for (i = 0; i < len - 1; i++) {
 | 
				
			||||||
 		if (str[i] == token[0] && str[i+1] == token[1])
 | 
					 		if (str[i] == token[0] && str[i+1] == token[1])
 | 
				
			||||||
 			return &str[i];
 | 
					 			return &str[i];
 | 
				
			||||||
@@ -587,6 +594,9 @@ static void optimize_result(void)
 | 
					@@ -588,6 +595,9 @@ static void optimize_result(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int i, best;
 | 
					 	int i, best;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	/* using the '\0' symbol last allows compress_symbols to use standard
 | 
					 	/* using the '\0' symbol last allows compress_symbols to use standard
 | 
				
			||||||
 	 * fast string functions */
 | 
					 	 * fast string functions */
 | 
				
			||||||
 	for (i = 255; i >= 0; i--) {
 | 
					 	for (i = 255; i >= 0; i--) {
 | 
				
			||||||
@@ -775,6 +785,8 @@ int main(int argc, char **argv)
 | 
					@@ -776,6 +786,8 @@ int main(int argc, char **argv)
 | 
				
			||||||
 				symbol_prefix_char = *p;
 | 
					 				symbol_prefix_char = *p;
 | 
				
			||||||
 			} else if (strcmp(argv[i], "--base-relative") == 0)
 | 
					 			} else if (strcmp(argv[i], "--base-relative") == 0)
 | 
				
			||||||
 				base_relative = 1;
 | 
					 				base_relative = 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
+
 | 
					+
 | 
				
			||||||
 config SPI_ATMEL_QUADSPI
 | 
					 config SPI_ATMEL_QUADSPI
 | 
				
			||||||
 	tristate "Atmel Quad SPI Controller"
 | 
					 	tristate "Atmel Quad SPI Controller"
 | 
				
			||||||
 	depends on ARCH_AT91 || (ARM && COMPILE_TEST)
 | 
					 	depends on ARCH_AT91 || (ARM && COMPILE_TEST && !ARCH_EBSA110)
 | 
				
			||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
 | 
					--- a/drivers/mtd/spi-nor/spi-nor.c
 | 
				
			||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
 | 
					+++ b/drivers/mtd/spi-nor/spi-nor.c
 | 
				
			||||||
@@ -2561,10 +2561,12 @@ static int spi_nor_select_erase(struct s
 | 
					@@ -2561,10 +2561,12 @@ static int spi_nor_select_erase(struct s
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,51 +0,0 @@
 | 
				
			|||||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
 | 
					 | 
				
			||||||
To: linux-f2fs-devel@lists.sourceforge.net, yuchao0@huawei.com,
 | 
					 | 
				
			||||||
        jaegeuk@kernel.org
 | 
					 | 
				
			||||||
Subject: [PATCH v2 1/1] f2fs: fix validation of the block count in
 | 
					 | 
				
			||||||
 sanity_check_raw_super
 | 
					 | 
				
			||||||
Date: Sat, 22 Dec 2018 11:22:26 +0100
 | 
					 | 
				
			||||||
Message-Id: <20181222102226.10050-2-martin.blumenstingl@googlemail.com>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Treat "block_count" from struct f2fs_super_block as 64-bit little endian
 | 
					 | 
				
			||||||
value in sanity_check_raw_super() because struct f2fs_super_block
 | 
					 | 
				
			||||||
declares "block_count" as "__le64".
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This fixes a bug where the superblock validation fails on big endian
 | 
					 | 
				
			||||||
devices with the following error:
 | 
					 | 
				
			||||||
  F2FS-fs (sda1): Wrong segment_count / block_count (61439 > 0)
 | 
					 | 
				
			||||||
  F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock
 | 
					 | 
				
			||||||
  F2FS-fs (sda1): Wrong segment_count / block_count (61439 > 0)
 | 
					 | 
				
			||||||
  F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock
 | 
					 | 
				
			||||||
As result of this the partition cannot be mounted.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
With this patch applied the superblock validation works fine and the
 | 
					 | 
				
			||||||
partition can be mounted again:
 | 
					 | 
				
			||||||
  F2FS-fs (sda1): Mounted with checkpoint version = 7c84
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
My little endian x86-64 hardware was able to mount the partition without
 | 
					 | 
				
			||||||
this fix.
 | 
					 | 
				
			||||||
To confirm that mounting f2fs filesystems works on big endian machines
 | 
					 | 
				
			||||||
again I tested this on a 32-bit MIPS big endian (lantiq) device.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fixes: 0cfe75c5b01199 ("f2fs: enhance sanity_check_raw_super() to avoid potential overflows")
 | 
					 | 
				
			||||||
Cc: stable@vger.kernel.org
 | 
					 | 
				
			||||||
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
 | 
					 | 
				
			||||||
Reviewed-by: Chao Yu <yuchao0@huawei.com>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/fs/f2fs/super.c
 | 
					 | 
				
			||||||
+++ b/fs/f2fs/super.c
 | 
					 | 
				
			||||||
@@ -1897,10 +1897,10 @@ static int sanity_check_raw_super(struct
 | 
					 | 
				
			||||||
 		return 1;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-	if (segment_count > (le32_to_cpu(raw_super->block_count) >> 9)) {
 | 
					 | 
				
			||||||
+	if (segment_count > (le64_to_cpu(raw_super->block_count) >> 9)) {
 | 
					 | 
				
			||||||
 		f2fs_msg(sb, KERN_INFO,
 | 
					 | 
				
			||||||
-			"Wrong segment_count / block_count (%u > %u)",
 | 
					 | 
				
			||||||
-			segment_count, le32_to_cpu(raw_super->block_count));
 | 
					 | 
				
			||||||
+			"Wrong segment_count / block_count (%u > %llu)",
 | 
					 | 
				
			||||||
+			segment_count, le64_to_cpu(raw_super->block_count));
 | 
					 | 
				
			||||||
 		return 1;
 | 
					 | 
				
			||||||
 	}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	if (!net_eq(dev_net(dev), sock_net(sk)))
 | 
					 	if (!net_eq(dev_net(dev), sock_net(sk)))
 | 
				
			||||||
 		goto drop;
 | 
					 		goto drop;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -3265,6 +3267,7 @@ static int packet_create(struct net *net
 | 
					@@ -3269,6 +3271,7 @@ static int packet_create(struct net *net
 | 
				
			||||||
 	mutex_init(&po->pg_vec_lock);
 | 
					 	mutex_init(&po->pg_vec_lock);
 | 
				
			||||||
 	po->rollover = NULL;
 | 
					 	po->rollover = NULL;
 | 
				
			||||||
 	po->prot_hook.func = packet_rcv;
 | 
					 	po->prot_hook.func = packet_rcv;
 | 
				
			||||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (sock->type == SOCK_PACKET)
 | 
					 	if (sock->type == SOCK_PACKET)
 | 
				
			||||||
 		po->prot_hook.func = packet_rcv_spkt;
 | 
					 		po->prot_hook.func = packet_rcv_spkt;
 | 
				
			||||||
@@ -3878,6 +3881,16 @@ packet_setsockopt(struct socket *sock, i
 | 
					@@ -3882,6 +3885,16 @@ packet_setsockopt(struct socket *sock, i
 | 
				
			||||||
 		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
 | 
					 		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
 | 
				
			||||||
 		return 0;
 | 
					 		return 0;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		return -ENOPROTOOPT;
 | 
					 		return -ENOPROTOOPT;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -3930,6 +3943,13 @@ static int packet_getsockopt(struct sock
 | 
					@@ -3934,6 +3947,13 @@ static int packet_getsockopt(struct sock
 | 
				
			||||||
 	case PACKET_VNET_HDR:
 | 
					 	case PACKET_VNET_HDR:
 | 
				
			||||||
 		val = po->has_vnet_hdr;
 | 
					 		val = po->has_vnet_hdr;
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
 | 
					 	__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
 | 
					 	err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
 | 
				
			||||||
@@ -962,6 +1101,7 @@ static void init_tel_txopt(struct ipv6_t
 | 
					@@ -963,6 +1102,7 @@ static void init_tel_txopt(struct ipv6_t
 | 
				
			||||||
 	opt->ops.opt_nflen = 8;
 | 
					 	opt->ops.opt_nflen = 8;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 /**
 | 
					 /**
 | 
				
			||||||
  * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
 | 
					  * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
 | 
				
			||||||
  *   @t: the outgoing tunnel device
 | 
					  *   @t: the outgoing tunnel device
 | 
				
			||||||
@@ -1305,6 +1445,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
 | 
					@@ -1306,6 +1446,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct ip6_tnl *t = netdev_priv(dev);
 | 
					 	struct ip6_tnl *t = netdev_priv(dev);
 | 
				
			||||||
 	struct ipv6hdr *ipv6h;
 | 
					 	struct ipv6hdr *ipv6h;
 | 
				
			||||||
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	int encap_limit = -1;
 | 
					 	int encap_limit = -1;
 | 
				
			||||||
 	__u16 offset;
 | 
					 	__u16 offset;
 | 
				
			||||||
 	struct flowi6 fl6;
 | 
					 	struct flowi6 fl6;
 | 
				
			||||||
@@ -1371,6 +1512,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
 | 
					@@ -1372,6 +1513,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
 | 
					 	fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
 | 
					 	if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
 | 
				
			||||||
 		return -1;
 | 
					 		return -1;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1499,6 +1652,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
 | 
					@@ -1500,6 +1653,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
 | 
				
			||||||
 	t->parms.link = p->link;
 | 
					 	t->parms.link = p->link;
 | 
				
			||||||
 	t->parms.proto = p->proto;
 | 
					 	t->parms.proto = p->proto;
 | 
				
			||||||
 	t->parms.fwmark = p->fwmark;
 | 
					 	t->parms.fwmark = p->fwmark;
 | 
				
			||||||
@@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	dst_cache_reset(&t->dst_cache);
 | 
					 	dst_cache_reset(&t->dst_cache);
 | 
				
			||||||
 	ip6_tnl_link_config(t);
 | 
					 	ip6_tnl_link_config(t);
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
@@ -1537,6 +1698,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
 | 
					@@ -1538,6 +1699,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
 | 
				
			||||||
 	p->flowinfo = u->flowinfo;
 | 
					 	p->flowinfo = u->flowinfo;
 | 
				
			||||||
 	p->link = u->link;
 | 
					 	p->link = u->link;
 | 
				
			||||||
 	p->proto = u->proto;
 | 
					 	p->proto = u->proto;
 | 
				
			||||||
@@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	memcpy(p->name, u->name, sizeof(u->name));
 | 
					 	memcpy(p->name, u->name, sizeof(u->name));
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1923,6 +2085,15 @@ static int ip6_tnl_validate(struct nlatt
 | 
					@@ -1924,6 +2086,15 @@ static int ip6_tnl_validate(struct nlatt
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 static void ip6_tnl_netlink_parms(struct nlattr *data[],
 | 
					 static void ip6_tnl_netlink_parms(struct nlattr *data[],
 | 
				
			||||||
 				  struct __ip6_tnl_parm *parms)
 | 
					 				  struct __ip6_tnl_parm *parms)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -1960,6 +2131,46 @@ static void ip6_tnl_netlink_parms(struct
 | 
					@@ -1961,6 +2132,46 @@ static void ip6_tnl_netlink_parms(struct
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (data[IFLA_IPTUN_FWMARK])
 | 
					 	if (data[IFLA_IPTUN_FWMARK])
 | 
				
			||||||
 		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
 | 
					 		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
 | 
				
			||||||
@@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
 | 
					 static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
 | 
				
			||||||
@@ -2075,6 +2286,12 @@ static void ip6_tnl_dellink(struct net_d
 | 
					@@ -2076,6 +2287,12 @@ static void ip6_tnl_dellink(struct net_d
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static size_t ip6_tnl_get_size(const struct net_device *dev)
 | 
					 static size_t ip6_tnl_get_size(const struct net_device *dev)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	return
 | 
					 	return
 | 
				
			||||||
 		/* IFLA_IPTUN_LINK */
 | 
					 		/* IFLA_IPTUN_LINK */
 | 
				
			||||||
 		nla_total_size(4) +
 | 
					 		nla_total_size(4) +
 | 
				
			||||||
@@ -2104,6 +2321,24 @@ static size_t ip6_tnl_get_size(const str
 | 
					@@ -2105,6 +2322,24 @@ static size_t ip6_tnl_get_size(const str
 | 
				
			||||||
 		nla_total_size(0) +
 | 
					 		nla_total_size(0) +
 | 
				
			||||||
 		/* IFLA_IPTUN_FWMARK */
 | 
					 		/* IFLA_IPTUN_FWMARK */
 | 
				
			||||||
 		nla_total_size(4) +
 | 
					 		nla_total_size(4) +
 | 
				
			||||||
@@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 		0;
 | 
					 		0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2111,6 +2346,9 @@ static int ip6_tnl_fill_info(struct sk_b
 | 
					@@ -2112,6 +2347,9 @@ static int ip6_tnl_fill_info(struct sk_b
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct ip6_tnl *tunnel = netdev_priv(dev);
 | 
					 	struct ip6_tnl *tunnel = netdev_priv(dev);
 | 
				
			||||||
 	struct __ip6_tnl_parm *parm = &tunnel->parms;
 | 
					 	struct __ip6_tnl_parm *parm = &tunnel->parms;
 | 
				
			||||||
@@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
 | 
					 	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
 | 
				
			||||||
 	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
 | 
					 	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
 | 
				
			||||||
@@ -2120,9 +2358,27 @@ static int ip6_tnl_fill_info(struct sk_b
 | 
					@@ -2121,9 +2359,27 @@ static int ip6_tnl_fill_info(struct sk_b
 | 
				
			||||||
 	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
 | 
					 	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
 | 
				
			||||||
 	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
 | 
					 	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
 | 
				
			||||||
 	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
 | 
					 	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
 | 
				
			||||||
@@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 | 
				
			|||||||
 	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
 | 
					 	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_SPORT, tunnel->encap.sport) ||
 | 
				
			||||||
 	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
 | 
					 	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
 | 
				
			||||||
@@ -2162,6 +2418,7 @@ static const struct nla_policy ip6_tnl_p
 | 
					@@ -2163,6 +2419,7 @@ static const struct nla_policy ip6_tnl_p
 | 
				
			||||||
 	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
 | 
					 	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 },
 | 
				
			||||||
 	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
 | 
					 	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG },
 | 
				
			||||||
 	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
 | 
					 	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
 | 
					 static inline const char *rtn_type(char *buf, size_t len, unsigned int t)
 | 
				
			||||||
--- a/net/ipv4/ipmr.c
 | 
					--- a/net/ipv4/ipmr.c
 | 
				
			||||||
+++ b/net/ipv4/ipmr.c
 | 
					+++ b/net/ipv4/ipmr.c
 | 
				
			||||||
@@ -161,6 +161,7 @@ static int ipmr_rule_action(struct fib_r
 | 
					@@ -163,6 +163,7 @@ static int ipmr_rule_action(struct fib_r
 | 
				
			||||||
 	case FR_ACT_UNREACHABLE:
 | 
					 	case FR_ACT_UNREACHABLE:
 | 
				
			||||||
 		return -ENETUNREACH;
 | 
					 		return -ENETUNREACH;
 | 
				
			||||||
 	case FR_ACT_PROHIBIT:
 | 
					 	case FR_ACT_PROHIBIT:
 | 
				
			||||||
@@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 	tb_id = fib_rule_get_table(rule, arg);
 | 
					 	tb_id = fib_rule_get_table(rule, arg);
 | 
				
			||||||
--- a/net/ipv6/ip6mr.c
 | 
					--- a/net/ipv6/ip6mr.c
 | 
				
			||||||
+++ b/net/ipv6/ip6mr.c
 | 
					+++ b/net/ipv6/ip6mr.c
 | 
				
			||||||
@@ -168,6 +168,8 @@ static int ip6mr_rule_action(struct fib_
 | 
					@@ -170,6 +170,8 @@ static int ip6mr_rule_action(struct fib_
 | 
				
			||||||
 		return -ENETUNREACH;
 | 
					 		return -ENETUNREACH;
 | 
				
			||||||
 	case FR_ACT_PROHIBIT:
 | 
					 	case FR_ACT_PROHIBIT:
 | 
				
			||||||
 		return -EACCES;
 | 
					 		return -EACCES;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/phy/phy_device.c
 | 
					--- a/drivers/net/phy/phy_device.c
 | 
				
			||||||
+++ b/drivers/net/phy/phy_device.c
 | 
					+++ b/drivers/net/phy/phy_device.c
 | 
				
			||||||
@@ -1102,6 +1102,9 @@ void phy_detach(struct phy_device *phyde
 | 
					@@ -1099,6 +1099,9 @@ void phy_detach(struct phy_device *phyde
 | 
				
			||||||
 	struct module *ndev_owner = dev->dev.parent->driver->owner;
 | 
					 	struct module *ndev_owner = dev->dev.parent->driver->owner;
 | 
				
			||||||
 	struct mii_bus *bus;
 | 
					 	struct mii_bus *bus;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/phy/phy_device.c
 | 
					--- a/drivers/net/phy/phy_device.c
 | 
				
			||||||
+++ b/drivers/net/phy/phy_device.c
 | 
					+++ b/drivers/net/phy/phy_device.c
 | 
				
			||||||
@@ -1940,7 +1940,7 @@ static struct phy_driver genphy_driver =
 | 
					@@ -1937,7 +1937,7 @@ static struct phy_driver genphy_driver =
 | 
				
			||||||
 	.config_init	= genphy_config_init,
 | 
					 	.config_init	= genphy_config_init,
 | 
				
			||||||
 	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
 | 
					 	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
 | 
				
			||||||
 			  SUPPORTED_AUI | SUPPORTED_FIBRE |
 | 
					 			  SUPPORTED_AUI | SUPPORTED_FIBRE |
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/arch/powerpc/boot/Makefile
 | 
					--- a/arch/powerpc/boot/Makefile
 | 
				
			||||||
+++ b/arch/powerpc/boot/Makefile
 | 
					+++ b/arch/powerpc/boot/Makefile
 | 
				
			||||||
@@ -151,6 +151,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
 | 
					@@ -156,6 +156,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
 | 
				
			||||||
 src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
 | 
					 src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
 | 
				
			||||||
 src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
 | 
					 src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
 | 
				
			||||||
 src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
 | 
					 src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
 | 
				
			||||||
@@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 src-wlib := $(sort $(src-wlib-y))
 | 
					 src-wlib := $(sort $(src-wlib-y))
 | 
				
			||||||
 src-plat := $(sort $(src-plat-y))
 | 
					 src-plat := $(sort $(src-plat-y))
 | 
				
			||||||
@@ -330,7 +331,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
 | 
					@@ -335,7 +336,7 @@ image-$(CONFIG_TQM8555)			+= cuImage.tqm
 | 
				
			||||||
 image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
 | 
					 image-$(CONFIG_TQM8560)			+= cuImage.tqm8560
 | 
				
			||||||
 image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
 | 
					 image-$(CONFIG_SBC8548)			+= cuImage.sbc8548
 | 
				
			||||||
 image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
 | 
					 image-$(CONFIG_KSI8560)			+= cuImage.ksi8560
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user