From: Stijn Tintel Date: Wed, 16 Jan 2019 23:01:18 +0000 (+0200) Subject: kernel: bump 4.19 to 4.19.16 X-Git-Tag: v19.07.0-rc1~1582 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a37098a2d013f89a97ee001d5fb0980e538d2dee;p=oweals%2Fopenwrt.git kernel: bump 4.19 to 4.19.16 Refresh patches. Remove upstreamed patches: - backport/096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch - backport/096-v4.20-netfilter-ipv6-Preserve-link-scope-traffic-original-.patch - backport/424-v4.20-net-dsa-fix-88e6060-roaming.patch - hack/100-mtd-rawnand-qcom-fix-memory-corruption-that-causes-p.patch - pending/510-f2fs-fix-sanity_check_raw_super-on-big-endian-machines.patch Update patch that no longer applies: - backport/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch Compile-tested: mesongx Runtime-tested: mesongx Signed-off-by: Stijn Tintel --- diff --git a/include/kernel-version.mk b/include/kernel-version.mk index d534eeef0f..0f4788af83 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -5,12 +5,12 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .132 LINUX_VERSION-4.9 = .150 LINUX_VERSION-4.14 = .93 -LINUX_VERSION-4.19 = .9 +LINUX_VERSION-4.19 = .16 LINUX_KERNEL_HASH-3.18.132 = c187bd0322372bd34c862cbb06a1996a63524ccb401466362b57ede45901a879 LINUX_KERNEL_HASH-4.9.150 = 94cc177ba2b433e4e30fefef38de33248ba1e2499ebda905096a8822097117e4 LINUX_KERNEL_HASH-4.14.93 = bb125fb204f7089782e179126121dd0f0aad9f02b7517ce3744982254c221bad -LINUX_KERNEL_HASH-4.19.9 = fc116cc6829c73944215d3b3ac0fc368dde9e8235b456744afffde001269dbf2 +LINUX_KERNEL_HASH-4.19.16 = d8a088381fe3e7e5484c060dabcdda4b053ef7114f91cfd56db003a89bb11bdf remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/apm821xx/patches-4.19/010-dmaengine-dw-dmac-implement-dma-prot.patch b/target/linux/apm821xx/patches-4.19/010-dmaengine-dw-dmac-implement-dma-prot.patch index 3c4edff3eb..86da6fcd89 100644 --- a/target/linux/apm821xx/patches-4.19/010-dmaengine-dw-dmac-implement-dma-prot.patch +++ b/target/linux/apm821xx/patches-4.19/010-dmaengine-dw-dmac-implement-dma-prot.patch @@ -55,11 +55,9 @@ Signed-off-by: Christian Lamparter Signed-off-by: Vinod Koul --- -diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c -index d0c3e50b39fb..2c5ca1961256 100644 --- a/drivers/dma/dw/core.c +++ b/drivers/dma/dw/core.c -@@ -160,12 +160,14 @@ static void dwc_initialize_chan_idma32(struct dw_dma_chan *dwc) +@@ -160,12 +160,14 @@ static void dwc_initialize_chan_idma32(s static void dwc_initialize_chan_dw(struct dw_dma_chan *dwc) { @@ -74,11 +72,9 @@ index d0c3e50b39fb..2c5ca1961256 100644 /* Set polarity of handshake interface */ cfglo |= hs_polarity ? DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL : 0; -diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c -index f01b2c173fa6..31ff8113c3de 100644 --- a/drivers/dma/dw/platform.c +++ b/drivers/dma/dw/platform.c -@@ -162,6 +162,12 @@ dw_dma_parse_dt(struct platform_device *pdev) +@@ -162,6 +162,12 @@ dw_dma_parse_dt(struct platform_device * pdata->multi_block[tmp] = 1; } @@ -91,8 +87,6 @@ index f01b2c173fa6..31ff8113c3de 100644 return pdata; } #else -diff --git a/drivers/dma/dw/regs.h b/drivers/dma/dw/regs.h -index 09e7dfdbb790..646c9c960c07 100644 --- a/drivers/dma/dw/regs.h +++ b/drivers/dma/dw/regs.h @@ -200,6 +200,10 @@ enum dw_dma_msize { @@ -106,11 +100,9 @@ index 09e7dfdbb790..646c9c960c07 100644 #define DWC_CFGH_DS_UPD_EN (1 << 5) #define DWC_CFGH_SS_UPD_EN (1 << 6) #define DWC_CFGH_SRC_PER(x) ((x) << 7) -diff --git a/include/linux/platform_data/dma-dw.h b/include/linux/platform_data/dma-dw.h -index 896cb71a382c..1a1d58ebffbf 100644 --- a/include/linux/platform_data/dma-dw.h +++ b/include/linux/platform_data/dma-dw.h -@@ -49,6 +49,7 @@ struct dw_dma_slave { +@@ -49,6 +49,7 @@ struct dw_dma_slave { * @data_width: Maximum data width supported by hardware per AHB master * (in bytes, power of 2) * @multi_block: Multi block transfers supported by hardware per channel. @@ -118,7 +110,7 @@ index 896cb71a382c..1a1d58ebffbf 100644 */ struct dw_dma_platform_data { unsigned int nr_channels; -@@ -65,6 +66,11 @@ struct dw_dma_platform_data { +@@ -65,6 +66,11 @@ struct dw_dma_platform_data { unsigned char nr_masters; unsigned char data_width[DW_DMA_MAX_NR_MASTERS]; unsigned char multi_block[DW_DMA_MAX_NR_CHANNELS]; @@ -130,12 +122,9 @@ index 896cb71a382c..1a1d58ebffbf 100644 }; #endif /* _PLATFORM_DATA_DMA_DW_H */ -diff --git a/include/dt-bindings/dma/dw-dmac.h b/include/dt-bindings/dma/dw-dmac.h -new file mode 100644 -index 000000000000..d1ca705c95b3 --- /dev/null +++ b/include/dt-bindings/dma/dw-dmac.h -@@ -0,0 +1,14 @@ +@@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */ + +#ifndef __DT_BINDINGS_DMA_DW_DMAC_H__ @@ -150,6 +139,3 @@ index 000000000000..d1ca705c95b3 +#define DW_DMAC_HPROT3_CACHEABLE (1 << 2) /* DMA is cacheable */ + +#endif /* __DT_BINDINGS_DMA_DW_DMAC_H__ */ --- -cgit 1.2-0.3.lf.el7 - diff --git a/target/linux/apm821xx/patches-4.19/201-add-amcc-apollo3g-support.patch b/target/linux/apm821xx/patches-4.19/201-add-amcc-apollo3g-support.patch index 18982392d4..18f4c72de8 100644 --- a/target/linux/apm821xx/patches-4.19/201-add-amcc-apollo3g-support.patch +++ b/target/linux/apm821xx/patches-4.19/201-add-amcc-apollo3g-support.patch @@ -1,6 +1,6 @@ --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig -@@ -144,6 +144,17 @@ config CANYONLANDS +@@ -131,6 +131,17 @@ config CANYONLANDS help This option enables support for the AMCC PPC460EX evaluation board. diff --git a/target/linux/apm821xx/patches-4.19/202-add-netgear-wndr4700-support.patch b/target/linux/apm821xx/patches-4.19/202-add-netgear-wndr4700-support.patch index 77294a8cbd..536a74ef00 100644 --- a/target/linux/apm821xx/patches-4.19/202-add-netgear-wndr4700-support.patch +++ b/target/linux/apm821xx/patches-4.19/202-add-netgear-wndr4700-support.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_WARP) += warp.o --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig -@@ -273,6 +273,19 @@ config ICON +@@ -260,6 +260,19 @@ config ICON help This option enables support for the AMCC PPC440SPe evaluation board. diff --git a/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch b/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch index b892674c66..630aaca7e0 100644 --- a/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch +++ b/target/linux/apm821xx/patches-4.19/801-usb-xhci-add-firmware-loader-for-uPD720201-and-uPD72.patch @@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter #include "xhci.h" #include "xhci-trace.h" -@@ -248,6 +250,458 @@ static void xhci_pme_acpi_rtd3_enable(st +@@ -261,6 +263,458 @@ static void xhci_pme_acpi_rtd3_enable(st static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { } #endif /* CONFIG_ACPI */ @@ -503,7 +503,7 @@ Signed-off-by: Christian Lamparter /* called during probe() after chip reset completes */ static int xhci_pci_setup(struct usb_hcd *hcd) { -@@ -286,6 +740,22 @@ static int xhci_pci_probe(struct pci_dev +@@ -299,6 +753,22 @@ static int xhci_pci_probe(struct pci_dev struct hc_driver *driver; struct usb_hcd *hcd; @@ -526,7 +526,7 @@ Signed-off-by: Christian Lamparter driver = (struct hc_driver *)id->driver_data; /* Prevent runtime suspending between USB-2 and USB-3 initialization */ -@@ -347,6 +817,16 @@ static void xhci_pci_remove(struct pci_d +@@ -360,6 +830,16 @@ static void xhci_pci_remove(struct pci_d { struct xhci_hcd *xhci; diff --git a/target/linux/apm821xx/patches-4.19/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-4.19/802-usb-xhci-force-msi-renesas-xhci.patch index 2fba6dcca1..90fb27935a 100644 --- a/target/linux/apm821xx/patches-4.19/802-usb-xhci-force-msi-renesas-xhci.patch +++ b/target/linux/apm821xx/patches-4.19/802-usb-xhci-force-msi-renesas-xhci.patch @@ -13,7 +13,7 @@ produce a noisy warning. --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -206,6 +206,7 @@ static void xhci_pci_quirks(struct devic +@@ -214,6 +214,7 @@ static void xhci_pci_quirks(struct devic pdev->device == 0x0015) { xhci->quirks |= XHCI_RESET_ON_RESUME; xhci->quirks |= XHCI_ZERO_64B_REGS; @@ -43,11 +43,11 @@ produce a noisy warning. hcd->msi_enabled = 1; --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1857,6 +1857,7 @@ struct xhci_hcd { +@@ -1859,6 +1859,7 @@ struct xhci_hcd { /* support xHCI 0.96 spec USB2 software LPM */ unsigned sw_lpm_support:1; /* support xHCI 1.0 spec USB2 hardware LPM */ +#define XHCI_FORCE_MSI (1 << 24) unsigned hw_lpm_support:1; - /* cached usb2 extened protocol capabilites */ - u32 *ext_caps; + /* Broken Suspend flag for SNPS Suspend resume issue */ + unsigned broken_suspend:1; diff --git a/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch b/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch index b23dae5026..b05749f72d 100644 --- a/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch +++ b/target/linux/bcm53xx/patches-4.19/400-mtd-spi-nor-detect-JEDEC-incompatible-w25q128-using-.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1294,6 +1294,18 @@ static const struct flash_info *spi_nor_ +@@ -1295,6 +1295,18 @@ static const struct flash_info *spi_nor_ } dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", id[0], id[1], id[2]); diff --git a/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch index 8f4b3ac694..773197d8d1 100644 --- a/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch +++ b/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch @@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki clocks { --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c -@@ -348,14 +348,6 @@ static int bcma_register_devices(struct +@@ -330,14 +330,6 @@ static int bcma_register_devices(struct } #endif @@ -36,7 +36,7 @@ Signed-off-by: Rafał Miłecki #ifdef CONFIG_BCMA_NFLASH if (bus->drv_cc.nflash.present) { err = platform_device_register(&bcma_nflash_dev); -@@ -436,6 +428,14 @@ int bcma_bus_register(struct bcma_bus *b +@@ -415,6 +407,14 @@ int bcma_bus_register(struct bcma_bus *b bcma_register_core(bus, core); } diff --git a/target/linux/brcm47xx/patches-4.19/159-cpu_fixes.patch b/target/linux/brcm47xx/patches-4.19/159-cpu_fixes.patch index f3415b5c8e..68fdc50664 100644 --- a/target/linux/brcm47xx/patches-4.19/159-cpu_fixes.patch +++ b/target/linux/brcm47xx/patches-4.19/159-cpu_fixes.patch @@ -1,6 +1,6 @@ --- a/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_icache)(void); @@ -39,7 +39,7 @@ /* * This macro return a properly sign-extended address suitable as base address * 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) { __dflush_prologue @@ -47,7 +47,7 @@ cache_op(Index_Writeback_Inv_D, addr); __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) { __dflush_prologue @@ -55,7 +55,7 @@ cache_op(Hit_Writeback_Inv_D, addr); __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) { __dflush_prologue @@ -63,7 +63,7 @@ cache_op(Hit_Invalidate_D, addr); __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 return protected_cachee_op(Hit_Invalidate_I, addr); #else @@ -71,7 +71,7 @@ return protected_cache_op(Hit_Invalidate_I, addr); #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) { @@ -79,7 +79,7 @@ #ifdef CONFIG_EVA return protected_cachee_op(Hit_Writeback_Inv_D, addr); #else -@@ -575,8 +612,51 @@ static inline void invalidate_tcache_pag +@@ -576,8 +613,51 @@ static inline void invalidate_tcache_pag : "r" (base), \ "i" (op)); @@ -132,7 +132,7 @@ static inline void extra##blast_##pfx##cache##lsize(void) \ { \ 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 \ \ @@ -140,7 +140,7 @@ for (ws = 0; ws < ws_end; ws += ws_inc) \ for (addr = start; addr < end; addr += lsize * 32) \ 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 \ \ @@ -148,7 +148,7 @@ do { \ cache##lsize##_unroll32(start, hitop); \ 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; \ unsigned long ws, addr; \ \ @@ -157,7 +157,7 @@ __##pfx##flush_prologue \ \ 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 \ } @@ -204,7 +204,7 @@ #define __BUILD_BLAST_USER_CACHE(pfx, desc, indexop, hitop, lsize) \ 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_xxx_range, protected_blast_xxx_range */ @@ -266,7 +266,7 @@ } \ \ __##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 @@ -277,7 +277,7 @@ #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) #endif @@ -298,7 +298,8 @@ +__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , , , BCM4710_DUMMY_RREG();) +__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 +++ b/arch/mips/include/asm/stackframe.h @@ -428,6 +428,10 @@ @@ -396,7 +397,7 @@ if (dc_lsize == 0) r4k_blast_dcache = (void *)cache_noop; 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; @@ -405,7 +406,7 @@ if (!cpu_has_ic_fills_f_dc) { if (dc_lsize) vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1)) -@@ -1859,6 +1873,17 @@ static void coherency_setup(void) +@@ -1888,6 +1902,17 @@ static void coherency_setup(void) * silly idea of putting something else there ... */ switch (current_cpu_type()) { @@ -423,7 +424,7 @@ case CPU_R4000PC: case CPU_R4000SC: case CPU_R4000MC: -@@ -1905,6 +1930,15 @@ void r4k_cache_init(void) +@@ -1934,6 +1959,15 @@ void r4k_cache_init(void) extern void build_copy_page(void); struct cpuinfo_mips *c = ¤t_cpu_data; @@ -439,7 +440,7 @@ probe_pcache(); probe_vcache(); setup_scache(); -@@ -1982,7 +2016,15 @@ void r4k_cache_init(void) +@@ -2012,7 +2046,15 @@ void r4k_cache_init(void) */ local_r4k___flush_cache_all(NULL); diff --git a/target/linux/brcm47xx/patches-4.19/160-kmap_coherent.patch b/target/linux/brcm47xx/patches-4.19/160-kmap_coherent.patch index f7f4d3eaa5..db5660bc32 100644 --- a/target/linux/brcm47xx/patches-4.19/160-kmap_coherent.patch +++ b/target/linux/brcm47xx/patches-4.19/160-kmap_coherent.patch @@ -29,7 +29,7 @@ This fixes OpenWrt ticket #1485: https://dev.openwrt.org/ticket/1485 #endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */ --- a/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 && page_mapcount(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); else 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) { diff --git a/target/linux/generic/backport-4.19/096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch b/target/linux/generic/backport-4.19/096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch deleted file mode 100644 index f428285a64..0000000000 --- a/target/linux/generic/backport-4.19/096-mips-math-emu-Write-protect-delay-slot-emulation-pages.patch +++ /dev/null @@ -1,119 +0,0 @@ -From adcc81f148d733b7e8e641300c5590a2cdc13bf3 Mon Sep 17 00:00:00 2001 -From: Paul Burton -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 -Signed-off-by: Paul Burton -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 -Cc: David Daney ---- - 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; - } diff --git a/target/linux/generic/backport-4.19/096-v4.20-netfilter-ipv6-Preserve-link-scope-traffic-original-.patch b/target/linux/generic/backport-4.19/096-v4.20-netfilter-ipv6-Preserve-link-scope-traffic-original-.patch deleted file mode 100644 index 3f5267eb75..0000000000 --- a/target/linux/generic/backport-4.19/096-v4.20-netfilter-ipv6-Preserve-link-scope-traffic-original-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 508b09046c0f21678652fb66fd1e9959d55591d2 Mon Sep 17 00:00:00 2001 -From: Alin Nastac -Date: Wed, 21 Nov 2018 14:00:30 +0100 -Subject: [PATCH] netfilter: ipv6: Preserve link scope traffic original oif - -When ip6_route_me_harder is invoked, it resets outgoing interface of: - - link-local scoped packets sent by neighbor discovery - - multicast packets sent by MLD host - - multicast packets send by MLD proxy daemon that sets outgoing - interface through IPV6_PKTINFO ipi6_ifindex - -Link-local and multicast packets must keep their original oif after -ip6_route_me_harder is called. - -Signed-off-by: Alin Nastac -Signed-off-by: Pablo Neira Ayuso ---- - net/ipv6/netfilter.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/net/ipv6/netfilter.c -+++ b/net/ipv6/netfilter.c -@@ -24,7 +24,8 @@ int ip6_route_me_harder(struct net *net, - unsigned int hh_len; - struct dst_entry *dst; - struct flowi6 fl6 = { -- .flowi6_oif = sk ? sk->sk_bound_dev_if : 0, -+ .flowi6_oif = sk && sk->sk_bound_dev_if ? sk->sk_bound_dev_if : -+ rt6_need_strict(&iph->daddr) ? skb_dst(skb)->dev->ifindex : 0, - .flowi6_mark = skb->mark, - .flowi6_uid = sock_net_uid(net, sk), - .daddr = iph->daddr, diff --git a/target/linux/generic/backport-4.19/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch b/target/linux/generic/backport-4.19/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch index 458515a0b5..faeb3e4170 100644 --- a/target/linux/generic/backport-4.19/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch +++ b/target/linux/generic/backport-4.19/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch @@ -61,11 +61,9 @@ CC: stable@vger.kernel.org # v4.0+ arch/arm/mach-cns3xxx/pcie.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c -index 318394ed5c7a..5e11ad3164e0 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c -@@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus(struct pci_bus *bus, +@@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus } else /* remote PCI bus */ base = cnspci->cfg1_regs + ((busno & 0xf) << 20); @@ -74,6 +72,3 @@ index 318394ed5c7a..5e11ad3164e0 100644 } static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn, --- -2.17.1 - diff --git a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch index 0badce1b73..51c9e488e9 100644 --- a/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch +++ b/target/linux/generic/backport-4.19/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch @@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso MODULE_AUTHOR("Pablo Neira Ayuso "); --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c -@@ -193,44 +193,14 @@ static struct nft_expr_type nft_flow_off +@@ -193,47 +193,14 @@ static struct nft_expr_type nft_flow_off .owner = THIS_MODULE, }; @@ -73,7 +73,9 @@ Signed-off-by: Pablo Neira Ayuso { - int err; - -- register_netdevice_notifier(&flow_offload_netdev_notifier); +- err = register_netdevice_notifier(&flow_offload_netdev_notifier); +- if (err) +- goto err; - - err = nft_register_expr(&nft_flow_offload_type); - if (err < 0) @@ -83,6 +85,7 @@ Signed-off-by: Pablo Neira Ayuso - -register_expr: - unregister_netdevice_notifier(&flow_offload_netdev_notifier); +-err: - return err; + return nft_register_expr(&nft_flow_offload_type); } diff --git a/target/linux/generic/backport-4.19/424-v4.20-net-dsa-fix-88e6060-roaming.patch b/target/linux/generic/backport-4.19/424-v4.20-net-dsa-fix-88e6060-roaming.patch deleted file mode 100644 index a242623983..0000000000 --- a/target/linux/generic/backport-4.19/424-v4.20-net-dsa-fix-88e6060-roaming.patch +++ /dev/null @@ -1,44 +0,0 @@ -From a74515604a7b171f2702bdcbd1e231225fb456d0 Mon Sep 17 00:00:00 2001 -From: Anderson Luiz Alves -Date: Fri, 30 Nov 2018 21:58:36 -0200 -Subject: [PATCH] mv88e6060: disable hardware level MAC learning - -Disable hardware level MAC learning because it breaks station roaming. -When enabled it drops all frames that arrive from a MAC address -that is on a different port at learning table. - -Signed-off-by: Anderson Luiz Alves -Reviewed-by: Andrew Lunn -Signed-off-by: David S. Miller ---- - drivers/net/dsa/mv88e6060.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - ---- a/drivers/net/dsa/mv88e6060.c -+++ b/drivers/net/dsa/mv88e6060.c -@@ -116,8 +116,7 @@ static int mv88e6060_switch_reset(struct - /* Reset the switch. */ - REG_WRITE(REG_GLOBAL, GLOBAL_ATU_CONTROL, - GLOBAL_ATU_CONTROL_SWRESET | -- GLOBAL_ATU_CONTROL_ATUSIZE_1024 | -- GLOBAL_ATU_CONTROL_ATE_AGE_5MIN); -+ GLOBAL_ATU_CONTROL_LEARNDIS); - - /* Wait up to one second for reset to complete. */ - timeout = jiffies + 1 * HZ; -@@ -142,13 +141,10 @@ static int mv88e6060_setup_global(struct - */ - REG_WRITE(REG_GLOBAL, GLOBAL_CONTROL, GLOBAL_CONTROL_MAX_FRAME_1536); - -- /* Enable automatic address learning, set the address -- * database size to 1024 entries, and set the default aging -- * time to 5 minutes. -+ /* Disable automatic address learning. - */ - REG_WRITE(REG_GLOBAL, GLOBAL_ATU_CONTROL, -- GLOBAL_ATU_CONTROL_ATUSIZE_1024 | -- GLOBAL_ATU_CONTROL_ATE_AGE_5MIN); -+ GLOBAL_ATU_CONTROL_LEARNDIS); - - return 0; - } diff --git a/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch b/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch index 345a73cf46..53e2c2aaba 100644 --- a/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch +++ b/target/linux/generic/backport-4.19/500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch @@ -36,7 +36,7 @@ Signed-off-by: Richard Weinberger --- a/fs/ubifs/replay.c +++ b/fs/ubifs/replay.c -@@ -210,6 +210,38 @@ static int trun_remove_range(struct ubif +@@ -242,6 +242,38 @@ static bool inode_still_linked(struct ub } /** @@ -75,15 +75,15 @@ Signed-off-by: Richard Weinberger * apply_replay_entry - apply a replay entry to the TNC. * @c: UBIFS file-system description object * @r: replay entry to apply -@@ -236,6 +268,11 @@ static int apply_replay_entry(struct ubi - { - ino_t inum = key_inum(c, &r->key); +@@ -270,6 +302,11 @@ static int apply_replay_entry(struct ubi -+ if (inode_still_linked(c, r)) { -+ err = 0; + if (inode_still_linked(c, r)) { + err = 0; + break; + } + - err = ubifs_tnc_remove_ino(c, inum); - break; - } ++ if (inode_still_linked(c, r)) { ++ err = 0; + break; + } + diff --git a/target/linux/generic/hack-4.19/100-mtd-rawnand-qcom-fix-memory-corruption-that-causes-p.patch b/target/linux/generic/hack-4.19/100-mtd-rawnand-qcom-fix-memory-corruption-that-causes-p.patch deleted file mode 100644 index 9f48ba1cff..0000000000 --- a/target/linux/generic/hack-4.19/100-mtd-rawnand-qcom-fix-memory-corruption-that-causes-p.patch +++ /dev/null @@ -1,83 +0,0 @@ -From c942c462411e4757aafba73bf13b5e5c7a4b62ca Mon Sep 17 00:00:00 2001 -From: Christian Lamparter -Date: Sun, 23 Dec 2018 00:38:55 +0100 -Subject: [PATCH] mtd: rawnand: qcom: fix memory corruption that causes panic - -This patch fixes a memory corruption that occured in the -qcom-nandc driver since it was converted to nand_scan(). - -On boot, an affected device will panic from a NPE at a weird place: -| Unable to handle kernel NULL pointer dereference at virtual address 00000000 -| pgd = (ptrval) -| [00000000] *pgd=00000000 -| Internal error: Oops: 80000005 [#1] SMP ARM -| CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.9 #0 -| Hardware name: Generic DT based system -| PC is at (null) -| LR is at nand_block_isbad+0x90/0xa4 -| pc : [<00000000>] lr : [] psr: 80000013 -| sp : cf839d40 ip : 00000000 fp : cfae9e20 -| r10: cf815810 r9 : 00000000 r8 : 00000000 -| r7 : 00000000 r6 : 00000000 r5 : 00000001 r4 : cf815810 -| r3 : 00000000 r2 : cfae9810 r1 : ffffffff r0 : cf815810 -| Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none -| Control: 10c5387d Table: 8020406a DAC: 00000051 -| Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) -| [] (nand_block_isbad) from [] (allocate_partition+0x7a0/0x7dc) -| [] (allocate_partition) from [] (add_mtd_partitions+0x58/0x10c) -| [] (add_mtd_partitions) from [] (parse_mtd_partitions+0x310/0x338) -| [] (parse_mtd_partitions) from [] (mtd_device_parse_register+0x60/0x15c) -| [] (mtd_device_parse_register) from [] (qcom_nandc_probe+0x770/0x8f4) -| [] (qcom_nandc_probe) from [] (platform_drv_probe+0x34/0x70) - -The problem is that the nand_scan()'s qcom_nand_attach_chip callback -is updating the nandc->max_cwperpage from 1 to 4. This causes the -sg_init_table of clear_bam_transaction() in the driver's -qcom_nandc_block_bad() to memset much more than what was initially -allocated by alloc_bam_transaction(). - -Hence, this patch restores the old behavior by performing the -alloc_bam_transaction() after the chip was identified. - -Fixes: 6a3cec64f18c ("mtd: rawnand: qcom: convert driver to nand_scan()") -Signed-off-by: Christian Lamparter ---- - drivers/mtd/nand/raw/qcom_nandc.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - ---- a/drivers/mtd/nand/raw/qcom_nandc.c -+++ b/drivers/mtd/nand/raw/qcom_nandc.c -@@ -2839,6 +2839,16 @@ static int qcom_nand_host_init_and_regis - if (ret) - return ret; - -+ if (nandc->props->is_bam) { -+ free_bam_transaction(nandc); -+ nandc->bam_txn = alloc_bam_transaction(nandc); -+ if (!nandc->bam_txn) { -+ dev_err(nandc->dev, -+ "failed to allocate bam transaction\n"); -+ return -ENOMEM; -+ } -+ } -+ - ret = mtd_device_register(mtd, NULL, 0); - if (ret) - nand_cleanup(chip); -@@ -2853,16 +2863,6 @@ static int qcom_probe_nand_devices(struc - struct qcom_nand_host *host; - int ret; - -- if (nandc->props->is_bam) { -- free_bam_transaction(nandc); -- nandc->bam_txn = alloc_bam_transaction(nandc); -- if (!nandc->bam_txn) { -- dev_err(nandc->dev, -- "failed to allocate bam transaction\n"); -- return -ENOMEM; -- } -- } -- - for_each_available_child_of_node(dn, child) { - host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL); - if (!host) { diff --git a/target/linux/generic/hack-4.19/160-leds-fix-regression-in-usbport-led-trigger.patch b/target/linux/generic/hack-4.19/160-leds-fix-regression-in-usbport-led-trigger.patch index c0eb5a78aa..e24cac3ddd 100644 --- a/target/linux/generic/hack-4.19/160-leds-fix-regression-in-usbport-led-trigger.patch +++ b/target/linux/generic/hack-4.19/160-leds-fix-regression-in-usbport-led-trigger.patch @@ -27,11 +27,9 @@ Signed-off-by: Christian Lamparter drivers/leds/led-triggers.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) -diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c -index 17d73db1456e..08e7c724a9dc 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c -@@ -134,6 +134,12 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) +@@ -134,6 +134,12 @@ int led_trigger_set(struct led_classdev led_set_brightness(led_cdev, LED_OFF); } if (trig) { @@ -44,7 +42,7 @@ index 17d73db1456e..08e7c724a9dc 100644 write_lock_irqsave(&trig->leddev_list_lock, flags); list_add_tail(&led_cdev->trig_list, &trig->led_cdevs); write_unlock_irqrestore(&trig->leddev_list_lock, flags); -@@ -146,12 +152,6 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) +@@ -146,12 +152,6 @@ int led_trigger_set(struct led_classdev if (ret) goto err_activate; @@ -57,7 +55,7 @@ index 17d73db1456e..08e7c724a9dc 100644 } if (event) { -@@ -165,17 +165,18 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) +@@ -165,17 +165,18 @@ int led_trigger_set(struct led_classdev return 0; @@ -79,6 +77,3 @@ index 17d73db1456e..08e7c724a9dc 100644 led_set_brightness(led_cdev, LED_OFF); return ret; --- -2.20.1 - diff --git a/target/linux/generic/hack-4.19/204-module_strip.patch b/target/linux/generic/hack-4.19/204-module_strip.patch index c30bfd5c9b..9a62a812cd 100644 --- a/target/linux/generic/hack-4.19/204-module_strip.patch +++ b/target/linux/generic/hack-4.19/204-module_strip.patch @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau --- a/init/Kconfig +++ b/init/Kconfig -@@ -1988,6 +1988,13 @@ config TRIM_UNUSED_KSYMS +@@ -1993,6 +1993,13 @@ config TRIM_UNUSED_KSYMS If unsure, or if you need to build out-of-tree modules, say N. diff --git a/target/linux/generic/hack-4.19/207-disable-modorder.patch b/target/linux/generic/hack-4.19/207-disable-modorder.patch index 7d7b6a8dfb..92c3343dd3 100644 --- a/target/linux/generic/hack-4.19/207-disable-modorder.patch +++ b/target/linux/generic/hack-4.19/207-disable-modorder.patch @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau --- a/Makefile +++ b/Makefile -@@ -1224,7 +1224,6 @@ all: modules +@@ -1227,7 +1227,6 @@ all: modules PHONY += modules modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau @$(kecho) ' Building modules, stage 2.'; $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost -@@ -1253,7 +1252,6 @@ _modinst_: +@@ -1256,7 +1255,6 @@ _modinst_: rm -f $(MODLIB)/build ; \ ln -s $(CURDIR) $(MODLIB)/build ; \ fi diff --git a/target/linux/generic/hack-4.19/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch b/target/linux/generic/hack-4.19/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch index 860a7e03c5..c07ccf9474 100644 --- a/target/linux/generic/hack-4.19/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch +++ b/target/linux/generic/hack-4.19/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- --- a/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 lsize = cpu_##desc##_line_size(); \ diff --git a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch index 31efb35a97..85ffa1ac1b 100644 --- a/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch +++ b/target/linux/generic/hack-4.19/702-phy_add_aneg_done_function.patch @@ -15,7 +15,7 @@ --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c -@@ -1509,6 +1509,9 @@ int genphy_update_link(struct phy_device +@@ -1506,6 +1506,9 @@ int genphy_update_link(struct phy_device { int status; diff --git a/target/linux/generic/hack-4.19/721-phy_packets.patch b/target/linux/generic/hack-4.19/721-phy_packets.patch index 77a573446d..108aba121d 100644 --- a/target/linux/generic/hack-4.19/721-phy_packets.patch +++ b/target/linux/generic/hack-4.19/721-phy_packets.patch @@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2516,6 +2516,10 @@ static inline int pskb_trim(struct sk_bu +@@ -2527,6 +2527,10 @@ static inline int pskb_trim(struct sk_bu return (len < skb->len) ? __pskb_trim(skb, len) : 0; } @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau /** * pskb_trim_unique - remove end from a paged unique (not cloned) buffer * @skb: buffer to alter -@@ -2646,16 +2650,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -2657,16 +2661,6 @@ static inline struct sk_buff *dev_alloc_ } @@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau help --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3233,10 +3233,20 @@ static int xmit_one(struct sk_buff *skb, +@@ -3238,10 +3238,20 @@ static int xmit_one(struct sk_buff *skb, if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all)) dev_queue_xmit_nit(skb, dev); diff --git a/target/linux/generic/hack-4.19/902-debloat_proc.patch b/target/linux/generic/hack-4.19/902-debloat_proc.patch index 6f4d264f35..b4eccd3a41 100644 --- a/target/linux/generic/hack-4.19/902-debloat_proc.patch +++ b/target/linux/generic/hack-4.19/902-debloat_proc.patch @@ -327,7 +327,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -3477,6 +3477,8 @@ static __net_initdata struct pernet_oper +@@ -3482,6 +3482,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch b/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch index 20e1c9f7b5..9b686be77d 100644 --- a/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch +++ b/target/linux/generic/hack-4.19/904-debloat_dma_buf.patch @@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau +MODULE_LICENSE("GPL"); --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2128,6 +2128,7 @@ int wake_up_state(struct task_struct *p, +@@ -2127,6 +2127,7 @@ int wake_up_state(struct task_struct *p, { return try_to_wake_up(p, state, 0); } diff --git a/target/linux/generic/hack-4.19/930-crashlog.patch b/target/linux/generic/hack-4.19/930-crashlog.patch index 3bb3e77778..4f303f9b8c 100644 --- a/target/linux/generic/hack-4.19/930-crashlog.patch +++ b/target/linux/generic/hack-4.19/930-crashlog.patch @@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau +#endif --- a/init/Kconfig +++ b/init/Kconfig -@@ -1041,6 +1041,10 @@ config RELAY +@@ -1046,6 +1046,10 @@ config RELAY If unsure, say N. diff --git a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch index 9f13539fde..bb65da973f 100644 --- a/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch +++ b/target/linux/generic/pending-4.19/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch @@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -6370,7 +6370,7 @@ static void __ref alloc_node_mem_map(str +@@ -6384,7 +6384,7 @@ static void __ref alloc_node_mem_map(str mem_map = NODE_DATA(0)->node_mem_map; #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM) if (page_to_pfn(mem_map) != pgdat->node_start_pfn) diff --git a/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch b/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch index 074f0c45ed..9b3892de28 100644 --- a/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch +++ b/target/linux/generic/pending-4.19/203-kallsyms_uncompressed.patch @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau --- a/init/Kconfig +++ b/init/Kconfig -@@ -1140,6 +1140,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW +@@ -1145,6 +1145,17 @@ config SYSCTL_ARCH_UNALIGN_ALLOW the unaligned access emulation. see arch/parisc/kernel/unaligned.c for reference diff --git a/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch b/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch index 2f6ef14b04..a2ab6f3da5 100644 --- a/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch +++ b/target/linux/generic/pending-4.19/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch @@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau + config SPI_ATMEL_QUADSPI 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 +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -2647,10 +2647,12 @@ static int spi_nor_select_erase(struct s diff --git a/target/linux/generic/pending-4.19/510-f2fs-fix-sanity_check_raw_super-on-big-endian-machines.patch b/target/linux/generic/pending-4.19/510-f2fs-fix-sanity_check_raw_super-on-big-endian-machines.patch deleted file mode 100644 index 5a272b40ba..0000000000 --- a/target/linux/generic/pending-4.19/510-f2fs-fix-sanity_check_raw_super-on-big-endian-machines.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Martin Blumenstingl -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 -Reviewed-by: Chao Yu ---- - ---- a/fs/f2fs/super.c -+++ b/fs/f2fs/super.c -@@ -2267,10 +2267,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; - } - diff --git a/target/linux/generic/pending-4.19/630-packet_socket_type.patch b/target/linux/generic/pending-4.19/630-packet_socket_type.patch index 5834ab14c1..273e7ff0a8 100644 --- a/target/linux/generic/pending-4.19/630-packet_socket_type.patch +++ b/target/linux/generic/pending-4.19/630-packet_socket_type.patch @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -3228,6 +3230,7 @@ static int packet_create(struct net *net +@@ -3232,6 +3234,7 @@ static int packet_create(struct net *net mutex_init(&po->pg_vec_lock); po->rollover = NULL; po->prot_hook.func = packet_rcv; @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3839,6 +3842,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3843,6 +3846,16 @@ packet_setsockopt(struct socket *sock, i po->xmit = val ? packet_direct_xmit : dev_queue_xmit; return 0; } @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau default: return -ENOPROTOOPT; } -@@ -3891,6 +3904,13 @@ static int packet_getsockopt(struct sock +@@ -3895,6 +3908,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; diff --git a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch index 6126436b99..0ac545c51c 100644 --- a/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch +++ b/target/linux/generic/pending-4.19/640-netfilter-nf_flow_table-add-hardware-offload-support.patch @@ -506,7 +506,7 @@ Signed-off-by: Pablo Neira Ayuso +MODULE_ALIAS("nf-flow-table-hw"); --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c -@@ -5396,6 +5396,13 @@ static int nf_tables_flowtable_parse_hoo +@@ -5394,6 +5394,13 @@ static int nf_tables_flowtable_parse_hoo if (err < 0) return err; @@ -520,7 +520,7 @@ Signed-off-by: Pablo Neira Ayuso ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL); if (!ops) return -ENOMEM; -@@ -5527,10 +5534,19 @@ static int nf_tables_newflowtable(struct +@@ -5525,10 +5532,19 @@ static int nf_tables_newflowtable(struct } flowtable->data.type = type; @@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK], flowtable); if (err < 0) -@@ -5656,7 +5672,8 @@ static int nf_tables_fill_flowtable_info +@@ -5654,7 +5670,8 @@ static int nf_tables_fill_flowtable_info nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), diff --git a/target/linux/generic/pending-4.19/655-increase_skb_pad.patch b/target/linux/generic/pending-4.19/655-increase_skb_pad.patch index c19290f8d8..20b0fd894f 100644 --- a/target/linux/generic/pending-4.19/655-increase_skb_pad.patch +++ b/target/linux/generic/pending-4.19/655-increase_skb_pad.patch @@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2480,7 +2480,7 @@ static inline int pskb_network_may_pull( +@@ -2491,7 +2491,7 @@ static inline int pskb_network_may_pull( * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD diff --git a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 40f7962b67..e21f510fee 100644 --- a/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/pending-4.19/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -292,7 +292,7 @@ Signed-off-by: Steven Barth __skb_tunnel_rx(skb, tunnel->dev, tunnel->net); err = dscp_ecn_decapsulate(tunnel, ipv6h, skb); -@@ -955,6 +1094,7 @@ static void init_tel_txopt(struct ipv6_t +@@ -956,6 +1095,7 @@ static void init_tel_txopt(struct ipv6_t opt->ops.opt_nflen = 8; } @@ -300,7 +300,7 @@ Signed-off-by: Steven Barth /** * ip6_tnl_addr_conflict - compare packet addresses to tunnel's own * @t: the outgoing tunnel device -@@ -1312,6 +1452,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1309,6 +1449,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str { struct ip6_tnl *t = netdev_priv(dev); struct ipv6hdr *ipv6h; @@ -308,7 +308,7 @@ Signed-off-by: Steven Barth int encap_limit = -1; __u16 offset; struct flowi6 fl6; -@@ -1379,6 +1520,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1373,6 +1514,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL); @@ -327,7 +327,7 @@ Signed-off-by: Steven Barth if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6)) return -1; -@@ -1507,6 +1660,14 @@ ip6_tnl_change(struct ip6_tnl *t, const +@@ -1504,6 +1657,14 @@ ip6_tnl_change(struct ip6_tnl *t, const t->parms.link = p->link; t->parms.proto = p->proto; t->parms.fwmark = p->fwmark; @@ -342,7 +342,7 @@ Signed-off-by: Steven Barth dst_cache_reset(&t->dst_cache); ip6_tnl_link_config(t); return 0; -@@ -1545,6 +1706,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ +@@ -1542,6 +1703,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ p->flowinfo = u->flowinfo; p->link = u->link; p->proto = u->proto; @@ -350,7 +350,7 @@ Signed-off-by: Steven Barth memcpy(p->name, u->name, sizeof(u->name)); } -@@ -1931,6 +2093,15 @@ static int ip6_tnl_validate(struct nlatt +@@ -1928,6 +2090,15 @@ static int ip6_tnl_validate(struct nlatt return 0; } @@ -366,7 +366,7 @@ Signed-off-by: Steven Barth static void ip6_tnl_netlink_parms(struct nlattr *data[], struct __ip6_tnl_parm *parms) { -@@ -1968,6 +2139,46 @@ static void ip6_tnl_netlink_parms(struct +@@ -1965,6 +2136,46 @@ static void ip6_tnl_netlink_parms(struct if (data[IFLA_IPTUN_FWMARK]) parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]); @@ -413,7 +413,7 @@ Signed-off-by: Steven Barth } static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[], -@@ -2083,6 +2294,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -2080,6 +2291,12 @@ static void ip6_tnl_dellink(struct net_d static size_t ip6_tnl_get_size(const struct net_device *dev) { @@ -426,7 +426,7 @@ Signed-off-by: Steven Barth return /* IFLA_IPTUN_LINK */ nla_total_size(4) + -@@ -2112,6 +2329,24 @@ static size_t ip6_tnl_get_size(const str +@@ -2109,6 +2326,24 @@ static size_t ip6_tnl_get_size(const str nla_total_size(0) + /* IFLA_IPTUN_FWMARK */ nla_total_size(4) + @@ -451,7 +451,7 @@ Signed-off-by: Steven Barth 0; } -@@ -2119,6 +2354,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2116,6 +2351,9 @@ static int ip6_tnl_fill_info(struct sk_b { struct ip6_tnl *tunnel = netdev_priv(dev); struct __ip6_tnl_parm *parm = &tunnel->parms; @@ -461,7 +461,7 @@ Signed-off-by: Steven Barth if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || -@@ -2128,9 +2366,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2125,9 +2363,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) || @@ -490,7 +490,7 @@ Signed-off-by: Steven Barth 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) || -@@ -2170,6 +2426,7 @@ static const struct nla_policy ip6_tnl_p +@@ -2167,6 +2423,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 }, diff --git a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index a022c2c556..485fb3e130 100644 --- a/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-4.19/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -76,7 +76,7 @@ Signed-off-by: Jonas Gorski static inline const char *rtn_type(char *buf, size_t len, unsigned int t) --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c -@@ -177,6 +177,7 @@ static int ipmr_rule_action(struct fib_r +@@ -179,6 +179,7 @@ static int ipmr_rule_action(struct fib_r case FR_ACT_UNREACHABLE: return -ENETUNREACH; case FR_ACT_PROHIBIT: @@ -99,7 +99,7 @@ Signed-off-by: Jonas Gorski tb_id = fib_rule_get_table(rule, arg); --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c -@@ -159,6 +159,8 @@ static int ip6mr_rule_action(struct fib_ +@@ -162,6 +162,8 @@ static int ip6mr_rule_action(struct fib_ return -ENETUNREACH; case FR_ACT_PROHIBIT: return -EACCES; @@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski static void ip6_link_failure(struct sk_buff *skb); static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk, struct sk_buff *skb, u32 mtu); -@@ -324,6 +326,18 @@ static const struct rt6_info ip6_prohibi +@@ -326,6 +328,18 @@ static const struct rt6_info ip6_prohibi .rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP), }; @@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__refcnt = ATOMIC_INIT(1), -@@ -901,6 +915,7 @@ static const int fib6_prop[RTN_MAX + 1] +@@ -903,6 +917,7 @@ static const int fib6_prop[RTN_MAX + 1] [RTN_BLACKHOLE] = -EINVAL, [RTN_UNREACHABLE] = -EHOSTUNREACH, [RTN_PROHIBIT] = -EACCES, @@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski [RTN_THROW] = -EAGAIN, [RTN_NAT] = -EINVAL, [RTN_XRESOLVE] = -EINVAL, -@@ -938,6 +953,10 @@ static void ip6_rt_init_dst_reject(struc +@@ -940,6 +955,10 @@ static void ip6_rt_init_dst_reject(struc rt->dst.output = ip6_pkt_prohibit_out; rt->dst.input = ip6_pkt_prohibit; break; @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -3745,6 +3764,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -3747,6 +3766,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -4192,7 +4222,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -4194,7 +4224,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -5031,6 +5062,8 @@ static int ip6_route_dev_notify(struct n +@@ -5033,6 +5064,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -5042,6 +5075,7 @@ static int ip6_route_dev_notify(struct n +@@ -5044,6 +5077,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -5236,6 +5270,15 @@ static int __net_init ip6_route_net_init +@@ -5238,6 +5272,15 @@ static int __net_init ip6_route_net_init net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); @@ -218,7 +218,7 @@ Signed-off-by: Jonas Gorski #endif net->ipv6.sysctl.flush_delay = 0; -@@ -5254,6 +5297,8 @@ out: +@@ -5256,6 +5299,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -227,7 +227,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -5274,6 +5319,7 @@ static void __net_exit ip6_route_net_exi +@@ -5276,6 +5321,7 @@ static void __net_exit ip6_route_net_exi #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_blk_hole_entry); @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -5350,6 +5396,9 @@ void __init ip6_route_init_special_entri +@@ -5352,6 +5398,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 9ea7612123..4bac6f7ef9 100644 --- a/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-4.19/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau __u16 tc_index; /* traffic control index */ --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5447,6 +5447,9 @@ static enum gro_result dev_gro_receive(s +@@ -5452,6 +5452,9 @@ static enum gro_result dev_gro_receive(s int same_flow; int grow; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau if (netif_elide_gro(skb->dev)) goto normal; -@@ -6941,6 +6944,48 @@ static void __netdev_adjacent_dev_unlink +@@ -6946,6 +6949,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info, -@@ -6988,6 +7033,7 @@ static int __netdev_upper_dev_link(struc +@@ -6993,6 +7038,7 @@ static int __netdev_upper_dev_link(struc if (ret) return ret; @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); ret = notifier_to_errno(ret); -@@ -7074,6 +7120,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -7079,6 +7125,7 @@ void netdev_upper_dev_unlink(struct net_ __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, &changeupper_info.info); } -@@ -7697,6 +7744,7 @@ int dev_set_mac_address(struct net_devic +@@ -7702,6 +7749,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; diff --git a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch index bc45d4ed68..0cf187a491 100644 --- a/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch +++ b/target/linux/generic/pending-4.19/703-phy-add-detach-callback-to-struct-phy_driver.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c -@@ -1133,6 +1133,9 @@ void phy_detach(struct phy_device *phyde +@@ -1130,6 +1130,9 @@ void phy_detach(struct phy_device *phyde struct module *ndev_owner = dev->dev.parent->driver->owner; struct mii_bus *bus; diff --git a/target/linux/generic/pending-4.19/834-ledtrig-libata.patch b/target/linux/generic/pending-4.19/834-ledtrig-libata.patch index d89bfec897..16855201f3 100644 --- a/target/linux/generic/pending-4.19/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-4.19/834-ledtrig-libata.patch @@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -5129,6 +5142,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -5130,6 +5143,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (tag < 0) return NULL; } @@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle qc = __ata_qc_from_tag(ap, tag); qc->tag = qc->hw_tag = tag; -@@ -6039,6 +6055,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -6040,6 +6056,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle ata_sff_port_init(ap); return ap; -@@ -6074,6 +6093,12 @@ static void ata_host_release(struct kref +@@ -6075,6 +6094,12 @@ static void ata_host_release(struct kref kfree(ap->pmp_link); kfree(ap->slave_link); @@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle kfree(ap); host->ports[i] = NULL; } -@@ -6537,7 +6562,23 @@ int ata_host_register(struct ata_host *h +@@ -6538,7 +6563,23 @@ int ata_host_register(struct ata_host *h host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->local_port_no = i + 1; } diff --git a/target/linux/generic/pending-4.19/920-mangle_bootargs.patch b/target/linux/generic/pending-4.19/920-mangle_bootargs.patch index 85e6b97bb1..a2aeaf34ab 100644 --- a/target/linux/generic/pending-4.19/920-mangle_bootargs.patch +++ b/target/linux/generic/pending-4.19/920-mangle_bootargs.patch @@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz --- a/init/Kconfig +++ b/init/Kconfig -@@ -1522,6 +1522,15 @@ config EMBEDDED +@@ -1527,6 +1527,15 @@ config EMBEDDED an embedded system so certain expert options are available for configuration. diff --git a/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch b/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch index eae2fd9470..bcc6f65661 100644 --- a/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch +++ b/target/linux/ipq40xx/patches-4.19/303-spi-nor-enable-4B-opcodes-for-mx25l25635f.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -1091,6 +1091,7 @@ static const struct flash_info spi_nor_i +@@ -1092,6 +1092,7 @@ static const struct flash_info spi_nor_i { "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) }, { "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) }, { "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, @@ -8,7 +8,7 @@ { "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, -@@ -1273,11 +1274,12 @@ static const struct flash_info spi_nor_i +@@ -1274,11 +1275,12 @@ static const struct flash_info spi_nor_i { }, }; @@ -23,7 +23,7 @@ tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN); if (tmp < 0) { -@@ -1288,10 +1290,16 @@ static const struct flash_info *spi_nor_ +@@ -1289,10 +1291,16 @@ static const struct flash_info *spi_nor_ for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) { info = &spi_nor_ids[tmp]; if (info->id_len) { @@ -42,7 +42,7 @@ dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", id[0], id[1], id[2]); return ERR_PTR(-ENODEV); -@@ -2825,7 +2833,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2826,7 +2834,7 @@ int spi_nor_scan(struct spi_nor *nor, co info = spi_nor_match_id(name); /* Try to auto-detect if chip name wasn't specified or not found */ if (!info) @@ -51,7 +51,7 @@ if (IS_ERR_OR_NULL(info)) return -ENOENT; -@@ -2836,7 +2844,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -2837,7 +2845,7 @@ int spi_nor_scan(struct spi_nor *nor, co if (name && info->id_len) { const struct flash_info *jinfo; diff --git a/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch index ddcc7f363c..6d76ebc32c 100644 --- a/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch +++ b/target/linux/mpc85xx/patches-4.19/100-powerpc-85xx-tl-wdr4900-v1-support.patch @@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile -@@ -159,6 +159,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie +@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c @@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos src-wlib := $(sort $(src-wlib-y)) src-plat := $(sort $(src-plat-y)) -@@ -338,7 +338,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm +@@ -343,7 +344,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm image-$(CONFIG_TQM8560) += cuImage.tqm8560 image-$(CONFIG_SBC8548) += cuImage.sbc8548 image-$(CONFIG_KSI8560) += cuImage.ksi8560 @@ -49,10 +49,10 @@ Signed-off-by: Gabor Juhos ;; --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig -@@ -170,6 +181,18 @@ config STX_GP3 - select CPM2 - select DEFAULT_UIMAGE - +@@ -170,6 +170,18 @@ config STX_GP3 + select CPM2 + select DEFAULT_UIMAGE + +config TL_WDR4900_V1 + bool "TP-Link TL-WDR4900 v1" + select DEFAULT_UIMAGE @@ -66,8 +66,8 @@ Signed-off-by: Gabor Juhos + Freescale P1014 SoC. + config TQM8540 - bool "TQ Components TQM8540" - help + bool "TQ Components TQM8540" + help --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_CORENET_GENERIC) += coren