From cb90c7faf5248dcce9096cc66932f2c9eeee1182 Mon Sep 17 00:00:00 2001 From: ElonH Date: Thu, 13 Feb 2020 17:46:25 +0800 Subject: [PATCH 1/7] v2ray-plugin: fix host dependence missing (#3068) --- package/lean/v2ray-plugin/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/lean/v2ray-plugin/Makefile b/package/lean/v2ray-plugin/Makefile index 67d5532604..b93daf3a84 100644 --- a/package/lean/v2ray-plugin/Makefile +++ b/package/lean/v2ray-plugin/Makefile @@ -20,6 +20,8 @@ PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=madeye +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 GO_PKG:=github.com/shadowsocks/v2ray-plugin From 0625c87abb6d3370f6cb48c55cd2c858af85be29 Mon Sep 17 00:00:00 2001 From: CN_SZTL <22235437+1715173329@users.noreply.github.com> Date: Thu, 13 Feb 2020 18:00:21 +0800 Subject: [PATCH 2/7] kernel: bump 4.9 to 4.9.212 (#2964) * kernel: bump 4.9 to 4.9.212 Refreshed all patches. Fixes: - CVE-2019-14896 - CVE-2019-14897 Compile-tested on: x86_64 Runtime-tested on: none Signed-off-by: CN_SZTL * kernel4.9: remove patches for layerscape --- include/kernel-version.mk | 6 +- .../310-lib-add-rle-decompression.patch | 2 +- ...mtd-cfi_cmdset_0002-force-word-write.patch | 6 +- ...50-gpio-nxp-74hc153-gpio-chip-driver.patch | 2 +- ...x164-improve-platform-device-support.patch | 2 +- .../452-gpio-add-gpio-latch-driver.patch | 2 +- .../patches-4.9/500-MIPS-fw-myloader.patch | 2 +- ...MIPS-ath79-add-more-register-defines.patch | 4 +- .../patches-4.9/604-MIPS-ath79-no-of.patch | 2 +- ...PS-ath79-add-support-for-QCA953x-SoC.patch | 8 +- ...PS-ath79-add-support-for-QCA956x-SoC.patch | 6 +- ...0-MIPS-ath79-fix-chained-irq-disable.patch | 10 +-- .../910-unaligned_access_hacks.patch | 10 +-- .../patches-4.9/930-chipidea-pullup.patch | 2 +- ...x-fix-potential-missing-irq-dispatch.patch | 27 +++++++ ...rsion-of-alloc_etherdev_mqs-function.patch | 2 +- ...ove-tsq_flags-close-to-sk_wmem_alloc.patch | 2 +- ...90-net-generalize-napi_complete_done.patch | 2 +- .../hack-4.9/202-reduce_module_size.patch | 24 ++++++ .../generic/hack-4.9/220-gc_sections.patch | 2 +- .../generic/hack-4.9/259-regmap_dynamic.patch | 14 ++-- .../hack-4.9/420-allow-ubi-mlc-support.patch | 13 ++++ .../640-bridge-only-accept-EAP-locally.patch | 59 +------------- .../700-swconfig_switch_drivers.patch | 12 --- .../702-phy_add_aneg_done_function.patch | 2 +- .../911-kobject_add_broadcast_uevent.patch | 2 +- ...e_mem_map-with-ARCH_PFN_OFFSET-calcu.patch | 2 +- ...0-add-linux-spidev-compatible-si3210.patch | 2 +- .../332-arc-add-OWRTDTB-section.patch | 20 ++--- ...otentially-missed-IRQ-handling-durin.patch | 52 +++++++++++++ .../400-mtd-add-rootfs-split-support.patch | 28 +++++-- ...for-different-partition-parser-types.patch | 78 ++++++------------- ...arsers-for-rootfs-and-firmware-split.patch | 51 ++++++++++-- .../404-mtd-add-more-helper-functions.patch | 26 ++++++- .../411-mtd-partial_eraseblock_write.patch | 6 +- .../412-mtd-partial_eraseblock_unlock.patch | 2 +- .../pending-4.9/420-mtd-redboot_space.patch | 2 +- .../pending-4.9/630-packet_socket_type.patch | 16 ++-- ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 14 ++-- .../pending-4.9/701-phy_extension.patch | 2 +- ...detach-callback-to-struct-phy_driver.patch | 2 +- .../pending-4.9/831-ledtrig_netdev.patch | 74 ++++++++++++++++++ .../200-pcengines-apu2-reboot.patch | 2 +- 43 files changed, 386 insertions(+), 218 deletions(-) create mode 100644 target/linux/ar71xx/patches-4.9/955-qca953x-fix-potential-missing-irq-dispatch.patch create mode 100644 target/linux/generic/hack-4.9/202-reduce_module_size.patch create mode 100644 target/linux/generic/hack-4.9/420-allow-ubi-mlc-support.patch create mode 100644 target/linux/generic/pending-4.9/343-MIPS-ath79-Fix-potentially-missed-IRQ-handling-durin.patch create mode 100644 target/linux/generic/pending-4.9/831-ledtrig_netdev.patch diff --git a/include/kernel-version.mk b/include/kernel-version.mk index ea8f041358..90c0fc0a74 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,11 +6,11 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.9 = .208 +LINUX_VERSION-4.9 = .212 LINUX_VERSION-4.14 = .169 LINUX_VERSION-4.19 = .101 -LINUX_KERNEL_HASH-4.9.208 = b7ad1c9841d671d026c55a4c91c77205f8b488ca5f980f838591c68662e0525a +LINUX_KERNEL_HASH-4.9.212 = ade738a606c9b52ecf764e94b4e77116caa3a2b8abd30f4534d220ac6894be30 LINUX_KERNEL_HASH-4.14.169 = d88ea97993c56b1fa0b0a05061bcde476c6be4fc3bb2de8bd97a8f8ff7278249 LINUX_KERNEL_HASH-4.19.101 = be26156abdb38ac0576a34a235ef456bb8ca67fbbe56fc6649b8d069159f8bc4 @@ -40,4 +40,4 @@ KERNEL_PATCHVER ?= $(KERNEL) # disable the md5sum check for unknown kernel versions LINUX_KERNEL_HASH:=$(LINUX_KERNEL_HASH-$(strip $(LINUX_VERSION))) -LINUX_KERNEL_HASH?=x \ No newline at end of file +LINUX_KERNEL_HASH?=x diff --git a/target/linux/ar71xx/patches-4.9/310-lib-add-rle-decompression.patch b/target/linux/ar71xx/patches-4.9/310-lib-add-rle-decompression.patch index d8480125a9..fa92646baa 100644 --- a/target/linux/ar71xx/patches-4.9/310-lib-add-rle-decompression.patch +++ b/target/linux/ar71xx/patches-4.9/310-lib-add-rle-decompression.patch @@ -12,7 +12,7 @@ # ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.) --- a/lib/Makefile +++ b/lib/Makefile -@@ -120,6 +120,7 @@ obj-$(CONFIG_XZ_DEC) += xz/ +@@ -122,6 +122,7 @@ obj-$(CONFIG_XZ_DEC) += xz/ obj-$(CONFIG_RAID6_PQ) += raid6/ obj-$(CONFIG_LZMA_COMPRESS) += lzma/ obj-$(CONFIG_LZMA_DECOMPRESS) += lzma/ diff --git a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch index aa708e01af..6185651ee8 100644 --- a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch +++ b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch @@ -35,7 +35,7 @@ /* Atmel chips don't use the same PRI format as AMD chips */ static void fixup_convert_atmel_pri(struct mtd_info *mtd) -@@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct +@@ -1796,6 +1800,7 @@ static int cfi_amdstd_write_words(struct /* * FIXME: interleaved mode not tested, and probably not supported! */ @@ -43,7 +43,7 @@ static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip, unsigned long adr, const u_char *buf, int len) -@@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru +@@ -1924,7 +1929,6 @@ static int __xipram do_write_buffer(stru return ret; } @@ -51,7 +51,7 @@ static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf) { -@@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru +@@ -1999,6 +2003,7 @@ static int cfi_amdstd_write_buffers(stru return 0; } diff --git a/target/linux/ar71xx/patches-4.9/450-gpio-nxp-74hc153-gpio-chip-driver.patch b/target/linux/ar71xx/patches-4.9/450-gpio-nxp-74hc153-gpio-chip-driver.patch index 7ffdc769e3..30d7b2f6bd 100644 --- a/target/linux/ar71xx/patches-4.9/450-gpio-nxp-74hc153-gpio-chip-driver.patch +++ b/target/linux/ar71xx/patches-4.9/450-gpio-nxp-74hc153-gpio-chip-driver.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -1213,4 +1213,12 @@ config GPIO_VIPERBOARD +@@ -1214,4 +1214,12 @@ config GPIO_VIPERBOARD endmenu diff --git a/target/linux/ar71xx/patches-4.9/451-gpio-74x164-improve-platform-device-support.patch b/target/linux/ar71xx/patches-4.9/451-gpio-74x164-improve-platform-device-support.patch index a3d752e9a4..87cdcc8d08 100644 --- a/target/linux/ar71xx/patches-4.9/451-gpio-74x164-improve-platform-device-support.patch +++ b/target/linux/ar71xx/patches-4.9/451-gpio-74x164-improve-platform-device-support.patch @@ -109,7 +109,7 @@ +#endif --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -1154,7 +1154,6 @@ menu "SPI GPIO expanders" +@@ -1155,7 +1155,6 @@ menu "SPI GPIO expanders" config GPIO_74X164 tristate "74x164 serial-in/parallel-out 8-bits shift register" diff --git a/target/linux/ar71xx/patches-4.9/452-gpio-add-gpio-latch-driver.patch b/target/linux/ar71xx/patches-4.9/452-gpio-add-gpio-latch-driver.patch index a56226f095..feb5ab43a4 100644 --- a/target/linux/ar71xx/patches-4.9/452-gpio-add-gpio-latch-driver.patch +++ b/target/linux/ar71xx/patches-4.9/452-gpio-add-gpio-latch-driver.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -1220,4 +1220,9 @@ config GPIO_NXP_74HC153 +@@ -1221,4 +1221,9 @@ config GPIO_NXP_74HC153 Platform driver for NXP 74HC153 Dual 4-input Multiplexer. This provides a GPIO interface supporting input mode only. diff --git a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch index c80a0e2471..96a853e7f5 100644 --- a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch +++ b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch @@ -10,7 +10,7 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1153,6 +1153,9 @@ config MIPS_MSC +@@ -1152,6 +1152,9 @@ config MIPS_MSC config MIPS_NILE4 bool diff --git a/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch b/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch index 77a646378e..d0f5b78901 100644 --- a/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch +++ b/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch @@ -217,7 +217,7 @@ #define AR71XX_GPIO_COUNT 16 #define AR7240_GPIO_COUNT 18 #define AR7241_GPIO_COUNT 20 -@@ -570,4 +681,237 @@ +@@ -570,4 +681,235 @@ #define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13 #define AR934X_SRIF_DPLL2_OUTDIV_MASK 0x7 @@ -433,8 +433,6 @@ +#define QCA955X_GMAC_REG_ETH_CFG 0x00 + +#define QCA955X_ETH_CFG_RGMII_EN BIT(0) -+#define QCA955X_ETH_CFG_GE0_MII_EN BIT(1) -+#define QCA955X_ETH_CFG_GE0_MII_SLAVE BIT(4) +#define QCA955X_ETH_CFG_MII_GE0 BIT(1) +#define QCA955X_ETH_CFG_GMII_GE0 BIT(2) +#define QCA955X_ETH_CFG_MII_GE0_MASTER BIT(3) diff --git a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch index 89dd32a7c1..b555504ec4 100644 --- a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch +++ b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch @@ -1,6 +1,6 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -196,7 +196,6 @@ config ATH79 +@@ -197,7 +197,6 @@ config ATH79 select SYS_SUPPORTS_BIG_ENDIAN select SYS_SUPPORTS_MIPS16 select SYS_SUPPORTS_ZBOOT_UART_PROM diff --git a/target/linux/ar71xx/patches-4.9/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch b/target/linux/ar71xx/patches-4.9/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch index ed887cc500..e3b5d48d74 100644 --- a/target/linux/ar71xx/patches-4.9/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch +++ b/target/linux/ar71xx/patches-4.9/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch @@ -307,7 +307,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. return; --- a/arch/mips/ath79/irq.c +++ b/arch/mips/ath79/irq.c -@@ -56,6 +56,34 @@ static void ar934x_ip2_irq_init(void) +@@ -62,6 +62,34 @@ static void ar934x_ip2_irq_init(void) irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch); } @@ -342,7 +342,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. static void qca955x_ip2_irq_dispatch(struct irq_desc *desc) { u32 status; -@@ -143,7 +171,7 @@ void __init arch_init_irq(void) +@@ -149,7 +177,7 @@ void __init arch_init_irq(void) soc_is_ar913x() || soc_is_ar933x()) { irq_wb_chan2 = 3; irq_wb_chan3 = 2; @@ -351,7 +351,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. irq_wb_chan3 = 2; } -@@ -154,6 +182,7 @@ void __init arch_init_irq(void) +@@ -160,6 +188,7 @@ void __init arch_init_irq(void) else if (soc_is_ar724x() || soc_is_ar933x() || soc_is_ar934x() || @@ -359,7 +359,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. soc_is_qca955x()) misc_is_ar71xx = false; else -@@ -164,6 +193,8 @@ void __init arch_init_irq(void) +@@ -170,6 +199,8 @@ void __init arch_init_irq(void) if (soc_is_ar934x()) ar934x_ip2_irq_init(); diff --git a/target/linux/ar71xx/patches-4.9/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch b/target/linux/ar71xx/patches-4.9/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch index 03bb9c31f6..20aa7ea27e 100644 --- a/target/linux/ar71xx/patches-4.9/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch +++ b/target/linux/ar71xx/patches-4.9/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch @@ -291,7 +291,7 @@ return; --- a/arch/mips/ath79/irq.c +++ b/arch/mips/ath79/irq.c -@@ -156,6 +156,87 @@ static void qca955x_irq_init(void) +@@ -162,6 +162,87 @@ static void qca955x_irq_init(void) irq_set_chained_handler(ATH79_CPU_IRQ(3), qca955x_ip3_irq_dispatch); } @@ -379,7 +379,7 @@ void __init arch_init_irq(void) { unsigned irq_wb_chan2 = -1; -@@ -183,7 +264,9 @@ void __init arch_init_irq(void) +@@ -189,7 +270,9 @@ void __init arch_init_irq(void) soc_is_ar933x() || soc_is_ar934x() || soc_is_qca953x() || @@ -390,7 +390,7 @@ misc_is_ar71xx = false; else BUG(); -@@ -197,4 +280,6 @@ void __init arch_init_irq(void) +@@ -203,4 +286,6 @@ void __init arch_init_irq(void) qca953x_irq_init(); else if (soc_is_qca955x()) qca955x_irq_init(); diff --git a/target/linux/ar71xx/patches-4.9/630-MIPS-ath79-fix-chained-irq-disable.patch b/target/linux/ar71xx/patches-4.9/630-MIPS-ath79-fix-chained-irq-disable.patch index 2b92b88d03..a74eb4f43e 100644 --- a/target/linux/ar71xx/patches-4.9/630-MIPS-ath79-fix-chained-irq-disable.patch +++ b/target/linux/ar71xx/patches-4.9/630-MIPS-ath79-fix-chained-irq-disable.patch @@ -10,7 +10,7 @@ static void ar934x_ip2_irq_dispatch(struct irq_desc *desc) { u32 status; -@@ -50,8 +53,7 @@ static void ar934x_ip2_irq_init(void) +@@ -56,8 +59,7 @@ static void ar934x_ip2_irq_init(void) for (i = ATH79_IP2_IRQ_BASE; i < ATH79_IP2_IRQ_BASE + ATH79_IP2_IRQ_COUNT; i++) @@ -20,7 +20,7 @@ irq_set_chained_handler(ATH79_CPU_IRQ(2), ar934x_ip2_irq_dispatch); } -@@ -79,7 +81,7 @@ static void qca953x_irq_init(void) +@@ -85,7 +87,7 @@ static void qca953x_irq_init(void) for (i = ATH79_IP2_IRQ_BASE; i < ATH79_IP2_IRQ_BASE + ATH79_IP2_IRQ_COUNT; i++) @@ -29,7 +29,7 @@ irq_set_chained_handler(ATH79_CPU_IRQ(2), qca953x_ip2_irq_dispatch); } -@@ -143,15 +145,13 @@ static void qca955x_irq_init(void) +@@ -149,15 +151,13 @@ static void qca955x_irq_init(void) for (i = ATH79_IP2_IRQ_BASE; i < ATH79_IP2_IRQ_BASE + ATH79_IP2_IRQ_COUNT; i++) @@ -47,7 +47,7 @@ irq_set_chained_handler(ATH79_CPU_IRQ(3), qca955x_ip3_irq_dispatch); } -@@ -222,13 +222,13 @@ static void qca956x_irq_init(void) +@@ -228,13 +228,13 @@ static void qca956x_irq_init(void) for (i = ATH79_IP2_IRQ_BASE; i < ATH79_IP2_IRQ_BASE + ATH79_IP2_IRQ_COUNT; i++) @@ -63,7 +63,7 @@ irq_set_chained_handler(ATH79_CPU_IRQ(3), qca956x_ip3_irq_dispatch); -@@ -237,12 +237,40 @@ static void qca956x_irq_init(void) +@@ -243,12 +243,40 @@ static void qca956x_irq_init(void) late_time_init = &qca956x_enable_timer_cb; } diff --git a/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch index 2a30108ee8..5e03ad3211 100644 --- a/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch @@ -448,7 +448,7 @@ memcpy(p, foc->val, foc->len); --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c -@@ -537,7 +537,7 @@ static struct sk_buff *add_grec(struct s +@@ -548,7 +548,7 @@ static struct sk_buff *add_grec(struct s if (!skb) return NULL; psrc = (__be32 *)skb_put(skb, sizeof(__be32)); @@ -652,7 +652,7 @@ return false; return true; -@@ -633,13 +637,13 @@ static inline void ipv6_addr_set_v4mappe +@@ -604,13 +608,13 @@ static inline void ipv6_addr_set_v4mappe */ static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen) { @@ -668,7 +668,7 @@ if (xb) return i * 32 + 31 - __fls(ntohl(xb)); } -@@ -808,17 +812,18 @@ static inline int ip6_default_np_autolab +@@ -779,17 +783,18 @@ static inline int ip6_default_np_autolab static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass, __be32 flowlabel) { @@ -795,7 +795,7 @@ --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -3910,14 +3910,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -3934,14 +3934,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); @@ -888,7 +888,7 @@ *sum = csum_fold(csum_partial(diff, sizeof(diff), --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c -@@ -1789,15 +1789,15 @@ static int vxlan_build_skb(struct sk_buf +@@ -1800,15 +1800,15 @@ static int vxlan_build_skb(struct sk_buf goto out_free; vxh = (struct vxlanhdr *) __skb_push(skb, sizeof(*vxh)); diff --git a/target/linux/ar71xx/patches-4.9/930-chipidea-pullup.patch b/target/linux/ar71xx/patches-4.9/930-chipidea-pullup.patch index 1c4ef3891c..04a3ec1eeb 100644 --- a/target/linux/ar71xx/patches-4.9/930-chipidea-pullup.patch +++ b/target/linux/ar71xx/patches-4.9/930-chipidea-pullup.patch @@ -37,7 +37,7 @@ ret = hw_device_init(ci, base); if (ret < 0) { dev_err(dev, "can't initialize hardware\n"); -@@ -963,7 +966,7 @@ static int ci_hdrc_probe(struct platform +@@ -970,7 +973,7 @@ static int ci_hdrc_probe(struct platform goto deinit_gadget; } diff --git a/target/linux/ar71xx/patches-4.9/955-qca953x-fix-potential-missing-irq-dispatch.patch b/target/linux/ar71xx/patches-4.9/955-qca953x-fix-potential-missing-irq-dispatch.patch new file mode 100644 index 0000000000..5174029989 --- /dev/null +++ b/target/linux/ar71xx/patches-4.9/955-qca953x-fix-potential-missing-irq-dispatch.patch @@ -0,0 +1,27 @@ +--- a/arch/mips/ath79/irq.c ++++ b/arch/mips/ath79/irq.c +@@ -69,15 +69,21 @@ static void qca953x_ip2_irq_dispatch(str + u32 status; + + status = ath79_reset_rr(QCA953X_RESET_REG_PCIE_WMAC_INT_STATUS); ++ status &= QCA953X_PCIE_WMAC_INT_PCIE_ALL | QCA953X_PCIE_WMAC_INT_WMAC_ALL; ++ ++ if (status == 0) { ++ spurious_interrupt(); ++ return; ++ } + + if (status & QCA953X_PCIE_WMAC_INT_PCIE_ALL) { + ath79_ddr_wb_flush(3); + generic_handle_irq(ATH79_IP2_IRQ(0)); +- } else if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) { ++ } ++ ++ if (status & QCA953X_PCIE_WMAC_INT_WMAC_ALL) { + ath79_ddr_wb_flush(4); + generic_handle_irq(ATH79_IP2_IRQ(1)); +- } else { +- spurious_interrupt(); + } + } + diff --git a/target/linux/generic/backport-4.9/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch b/target/linux/generic/backport-4.9/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch index c5d65b7105..b553dfaa3f 100644 --- a/target/linux/generic/backport-4.9/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch +++ b/target/linux/generic/backport-4.9/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch @@ -32,7 +32,7 @@ Signed-off-by: David S. Miller int eth_gro_complete(struct sk_buff *skb, int nhoff); --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c -@@ -391,6 +391,34 @@ struct net_device *alloc_etherdev_mqs(in +@@ -396,6 +396,34 @@ struct net_device *alloc_etherdev_mqs(in } EXPORT_SYMBOL(alloc_etherdev_mqs); diff --git a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch index 8beceff0fa..4ac95d3ee4 100644 --- a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch +++ b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch @@ -134,7 +134,7 @@ Signed-off-by: David S. Miller if (tcp_small_queue_check(sk, skb, 0)) break; -@@ -3561,8 +3561,6 @@ void __tcp_send_ack(struct sock *sk, u32 +@@ -3569,8 +3569,6 @@ void __tcp_send_ack(struct sock *sk, u32 /* We do not want pure acks influencing TCP Small Queues or fq/pacing * too much. * SKB_TRUESIZE(max(1 .. 66, MAX_TCP_HEADER)) is unfortunately ~784 diff --git a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch index 433788e075..757e778cba 100644 --- a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch +++ b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch @@ -1095,7 +1095,7 @@ Signed-off-by: David S. Miller dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA); --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -2700,7 +2700,7 @@ static int stmmac_poll(struct napi_struc +@@ -2702,7 +2702,7 @@ static int stmmac_poll(struct napi_struc work_done = stmmac_rx(priv, budget); if (work_done < budget) { diff --git a/target/linux/generic/hack-4.9/202-reduce_module_size.patch b/target/linux/generic/hack-4.9/202-reduce_module_size.patch new file mode 100644 index 0000000000..e486386777 --- /dev/null +++ b/target/linux/generic/hack-4.9/202-reduce_module_size.patch @@ -0,0 +1,24 @@ +From fd66884da2f96d2a7ea73f58b1b86251b959a913 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau +Date: Fri, 7 Jul 2017 16:56:19 +0200 +Subject: kernel: strip unnecessary symbol table information from kernel modules + +reduces default squashfs size on ar71xx by about 4k + +lede-commit: 058d331a39077f159ca8922f1f422a1346d6aa67 +Signed-off-by: Felix Fietkau +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Makefile ++++ b/Makefile +@@ -398,7 +398,7 @@ KBUILD_AFLAGS_KERNEL := + KBUILD_CFLAGS_KERNEL := + KBUILD_AFLAGS_MODULE := -DMODULE + KBUILD_CFLAGS_MODULE := -DMODULE +-KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds ++KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s) + GCC_PLUGINS_CFLAGS := + CLANG_FLAGS := + diff --git a/target/linux/generic/hack-4.9/220-gc_sections.patch b/target/linux/generic/hack-4.9/220-gc_sections.patch index bdacb0f3ed..e795d666df 100644 --- a/target/linux/generic/hack-4.9/220-gc_sections.patch +++ b/target/linux/generic/hack-4.9/220-gc_sections.patch @@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos --- a/Makefile +++ b/Makefile -@@ -402,6 +402,11 @@ KBUILD_LDFLAGS_MODULE := -T $(srctree)/s +@@ -402,6 +402,11 @@ KBUILD_LDFLAGS_MODULE = -T $(srctree)/sc GCC_PLUGINS_CFLAGS := CLANG_FLAGS := diff --git a/target/linux/generic/hack-4.9/259-regmap_dynamic.patch b/target/linux/generic/hack-4.9/259-regmap_dynamic.patch index a0d79e37bb..97b89aa390 100644 --- a/target/linux/generic/hack-4.9/259-regmap_dynamic.patch +++ b/target/linux/generic/hack-4.9/259-regmap_dynamic.patch @@ -21,19 +21,22 @@ Signed-off-by: Felix Fietkau - default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ) select IRQ_DOMAIN if REGMAP_IRQ - bool -+ tristate ++ tristate "Regmap" config REGCACHE_COMPRESSED select LZO_COMPRESS -@@ -17,18 +16,24 @@ config REGMAP_AC97 +@@ -16,19 +15,25 @@ config REGMAP_AC97 + tristate config REGMAP_I2C - tristate +- tristate ++ tristate "Regmap I2C" + select REGMAP depends on I2C config REGMAP_SPI - tristate +- tristate ++ tristate "Regmap SPI" + select REGMAP + depends on SPI_MASTER depends on SPI @@ -44,7 +47,8 @@ Signed-off-by: Felix Fietkau depends on SPMI config REGMAP_MMIO - tristate +- tristate ++ tristate "Regmap MMIO" + select REGMAP config REGMAP_IRQ diff --git a/target/linux/generic/hack-4.9/420-allow-ubi-mlc-support.patch b/target/linux/generic/hack-4.9/420-allow-ubi-mlc-support.patch new file mode 100644 index 0000000000..552ae5da75 --- /dev/null +++ b/target/linux/generic/hack-4.9/420-allow-ubi-mlc-support.patch @@ -0,0 +1,13 @@ +--- a/drivers/mtd/ubi/build.c ++++ b/drivers/mtd/ubi/build.c +@@ -900,9 +900,8 @@ int ubi_attach_mtd_dev(struct mtd_info * + * will die soon and you will lose all your data. + */ + if (mtd->type == MTD_MLCNANDFLASH) { +- pr_err("ubi: refuse attaching mtd%d - MLC NAND is not supported\n", ++ pr_warn("ubi: mtd%d has been identified as a MLC NAND!! - MLC is not supported by UBI and UBIFS and _WILL_ cause corruption in the near future!\n", + mtd->index); +- return -EINVAL; + } + + if (ubi_num == UBI_DEV_NUM_AUTO) { diff --git a/target/linux/generic/hack-4.9/640-bridge-only-accept-EAP-locally.patch b/target/linux/generic/hack-4.9/640-bridge-only-accept-EAP-locally.patch index 819314f74a..ba87420b32 100644 --- a/target/linux/generic/hack-4.9/640-bridge-only-accept-EAP-locally.patch +++ b/target/linux/generic/hack-4.9/640-bridge-only-accept-EAP-locally.patch @@ -1,3 +1,4 @@ +From c6905cfdeb31a5c049db3da434b10fa0d3e83569 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 7 Jul 2017 17:18:54 +0200 Subject: bridge: only accept EAP locally @@ -6,9 +7,9 @@ When bridging, do not forward EAP frames to other ports, only deliver them locally, regardless of the state. Signed-off-by: Felix Fietkau -[add disable_eap_hack sysfs attribute] -Signed-off-by: Etienne Champetier --- + net/bridge/br_input.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -18,7 +19,7 @@ Signed-off-by: Etienne Champetier + BR_INPUT_SKB_CB(skb)->brdev = br->dev; + -+ if (skb->protocol == htons(ETH_P_PAE) && !br->disable_eap_hack) ++ if (skb->protocol == htons(ETH_P_PAE)) + return br_pass_frame_up(skb); + if (p->state == BR_STATE_LEARNING) @@ -29,55 +30,3 @@ Signed-off-by: Etienne Champetier if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP)) br_do_proxy_arp(skb, br, vid, p); ---- a/net/bridge/br_private.h -+++ b/net/bridge/br_private.h -@@ -295,6 +295,8 @@ struct net_bridge - u16 group_fwd_mask; - u16 group_fwd_mask_required; - -+ bool disable_eap_hack; -+ - /* STP */ - bridge_id designated_root; - bridge_id bridge_id; ---- a/net/bridge/br_sysfs_br.c -+++ b/net/bridge/br_sysfs_br.c -@@ -169,6 +169,30 @@ static ssize_t group_fwd_mask_store(stru - } - static DEVICE_ATTR_RW(group_fwd_mask); - -+static ssize_t disable_eap_hack_show(struct device *d, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct net_bridge *br = to_bridge(d); -+ return sprintf(buf, "%u\n", br->disable_eap_hack); -+} -+ -+static int set_disable_eap_hack(struct net_bridge *br, unsigned long val) -+{ -+ br->disable_eap_hack = !!val; -+ -+ return 0; -+} -+ -+static ssize_t disable_eap_hack_store(struct device *d, -+ struct device_attribute *attr, -+ const char *buf, -+ size_t len) -+{ -+ return store_bridge_parm(d, buf, len, set_disable_eap_hack); -+} -+static DEVICE_ATTR_RW(disable_eap_hack); -+ - static ssize_t priority_show(struct device *d, struct device_attribute *attr, - char *buf) - { -@@ -780,6 +804,7 @@ static struct attribute *bridge_attrs[] - &dev_attr_ageing_time.attr, - &dev_attr_stp_state.attr, - &dev_attr_group_fwd_mask.attr, -+ &dev_attr_disable_eap_hack.attr, - &dev_attr_priority.attr, - &dev_attr_bridge_id.attr, - &dev_attr_root_id.attr, diff --git a/target/linux/generic/hack-4.9/700-swconfig_switch_drivers.patch b/target/linux/generic/hack-4.9/700-swconfig_switch_drivers.patch index af8840fde2..760ba4fc80 100644 --- a/target/linux/generic/hack-4.9/700-swconfig_switch_drivers.patch +++ b/target/linux/generic/hack-4.9/700-swconfig_switch_drivers.patch @@ -136,15 +136,3 @@ Signed-off-by: Felix Fietkau header-y += synclink.h header-y += sync_file.h header-y += sysctl.h ---- a/include/linux/platform_data/b53.h -+++ b/include/linux/platform_data/b53.h -@@ -25,6 +25,9 @@ struct b53_platform_data { - u32 chip_id; - u16 enabled_ports; - -+ /* allow to specify an ethX alias */ -+ const char *alias; -+ - /* only used by MMAP'd driver */ - unsigned big_endian:1; - void __iomem *regs; diff --git a/target/linux/generic/hack-4.9/702-phy_add_aneg_done_function.patch b/target/linux/generic/hack-4.9/702-phy_add_aneg_done_function.patch index b58584091b..e5b610b4c8 100644 --- a/target/linux/generic/hack-4.9/702-phy_add_aneg_done_function.patch +++ b/target/linux/generic/hack-4.9/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 -@@ -1315,6 +1315,9 @@ int genphy_update_link(struct phy_device +@@ -1316,6 +1316,9 @@ int genphy_update_link(struct phy_device { int status; diff --git a/target/linux/generic/hack-4.9/911-kobject_add_broadcast_uevent.patch b/target/linux/generic/hack-4.9/911-kobject_add_broadcast_uevent.patch index d827ace9e0..7b853aa582 100644 --- a/target/linux/generic/hack-4.9/911-kobject_add_broadcast_uevent.patch +++ b/target/linux/generic/hack-4.9/911-kobject_add_broadcast_uevent.patch @@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau #ifdef CONFIG_UEVENT_HELPER /* path to the userspace helper executed on an event */ extern char uevent_helper[]; -@@ -239,4 +241,7 @@ int add_uevent_var(struct kobj_uevent_en +@@ -241,4 +243,7 @@ int add_uevent_var(struct kobj_uevent_en int kobject_action_type(const char *buf, size_t count, enum kobject_action *type); diff --git a/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch index 794280eec9..0f6ce1f802 100644 --- a/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch +++ b/target/linux/generic/pending-4.9/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 -@@ -5923,7 +5923,7 @@ static void __ref alloc_node_mem_map(str +@@ -5924,7 +5924,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.9/130-add-linux-spidev-compatible-si3210.patch b/target/linux/generic/pending-4.9/130-add-linux-spidev-compatible-si3210.patch index b3de75fbbe..e815976855 100644 --- a/target/linux/generic/pending-4.9/130-add-linux-spidev-compatible-si3210.patch +++ b/target/linux/generic/pending-4.9/130-add-linux-spidev-compatible-si3210.patch @@ -8,7 +8,7 @@ Signed-off-by: Giuseppe Lippolis --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -696,6 +696,7 @@ static struct class *spidev_class; +@@ -699,6 +699,7 @@ static struct class *spidev_class; static const struct of_device_id spidev_dt_ids[] = { { .compatible = "rohm,dh2228fv" }, { .compatible = "lineartechnology,ltc2488" }, diff --git a/target/linux/generic/pending-4.9/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/pending-4.9/332-arc-add-OWRTDTB-section.patch index ca89f87594..6f248343ab 100644 --- a/target/linux/generic/pending-4.9/332-arc-add-OWRTDTB-section.patch +++ b/target/linux/generic/pending-4.9/332-arc-add-OWRTDTB-section.patch @@ -38,7 +38,16 @@ Signed-off-by: Alexey Brodkin ;---------------------------------------------------------------- --- a/arch/arc/kernel/setup.c +++ b/arch/arc/kernel/setup.c -@@ -444,7 +444,7 @@ ignore_uboot_args: +@@ -404,6 +404,8 @@ static inline bool uboot_arg_invalid(uns + /* We always pass 0 as magic from U-boot */ + #define UBOOT_MAGIC_VALUE 0 + ++extern struct boot_param_header __image_dtb; ++ + void __init handle_uboot_args(void) + { + bool use_embedded_dtb = true; +@@ -444,7 +446,7 @@ ignore_uboot_args: #endif if (use_embedded_dtb) { @@ -47,15 +56,6 @@ Signed-off-by: Alexey Brodkin if (!machine_desc) panic("Embedded DT invalid\n"); } -@@ -460,6 +460,8 @@ ignore_uboot_args: - } - } - -+extern struct boot_param_header __image_dtb; -+ - void __init setup_arch(char **cmdline_p) - { - handle_uboot_args(); --- a/arch/arc/kernel/vmlinux.lds.S +++ b/arch/arc/kernel/vmlinux.lds.S @@ -30,6 +30,19 @@ SECTIONS diff --git a/target/linux/generic/pending-4.9/343-MIPS-ath79-Fix-potentially-missed-IRQ-handling-durin.patch b/target/linux/generic/pending-4.9/343-MIPS-ath79-Fix-potentially-missed-IRQ-handling-durin.patch new file mode 100644 index 0000000000..05a1d7ef0c --- /dev/null +++ b/target/linux/generic/pending-4.9/343-MIPS-ath79-Fix-potentially-missed-IRQ-handling-durin.patch @@ -0,0 +1,52 @@ +From 3fe7841bf5a582dc7fd198e5bf70162ea418a22a Mon Sep 17 00:00:00 2001 +From: Koen Vandeputte +Date: Wed, 11 Sep 2019 11:02:19 +0200 +Subject: [PATCH] MIPS: ath79: Fix potentially missed IRQ handling during + dispatch + +If both interrupts are set in the current implementation +only the 1st will be handled and the 2nd will be skipped +due to the "if else" condition. + +Fix this by using the same approach as done for QCA955x +just below it. + +Fixes: fce5cc6e0ddc ("MIPS: ath79: add IRQ handling code for AR934X") +Signed-off-by: Koen Vandeputte +CC: Felix Fietkau +CC: Gabor Juhos +CC: James Hogan +CC: Paul Burton +CC: Ralf Baechle +CC: stable@vger.kernel.org # v3.2+ +--- + arch/mips/ath79/irq.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +--- a/arch/mips/ath79/irq.c ++++ b/arch/mips/ath79/irq.c +@@ -32,15 +32,21 @@ static void ar934x_ip2_irq_dispatch(stru + u32 status; + + status = ath79_reset_rr(AR934X_RESET_REG_PCIE_WMAC_INT_STATUS); ++ status &= AR934X_PCIE_WMAC_INT_PCIE_ALL | AR934X_PCIE_WMAC_INT_WMAC_ALL; ++ ++ if (status == 0) { ++ spurious_interrupt(); ++ return; ++ } + + if (status & AR934X_PCIE_WMAC_INT_PCIE_ALL) { + ath79_ddr_wb_flush(3); + generic_handle_irq(ATH79_IP2_IRQ(0)); +- } else if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) { ++ } ++ ++ if (status & AR934X_PCIE_WMAC_INT_WMAC_ALL) { + ath79_ddr_wb_flush(4); + generic_handle_irq(ATH79_IP2_IRQ(1)); +- } else { +- spurious_interrupt(); + } + } + diff --git a/target/linux/generic/pending-4.9/400-mtd-add-rootfs-split-support.patch b/target/linux/generic/pending-4.9/400-mtd-add-rootfs-split-support.patch index 4369ed3f4f..af25522b7e 100644 --- a/target/linux/generic/pending-4.9/400-mtd-add-rootfs-split-support.patch +++ b/target/linux/generic/pending-4.9/400-mtd-add-rootfs-split-support.patch @@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau mtd_add_partition_attrs(new); return 0; -@@ -739,6 +744,29 @@ int mtd_del_partition(struct mtd_info *m +@@ -739,6 +744,35 @@ int mtd_del_partition(struct mtd_info *m } EXPORT_SYMBOL_GPL(mtd_del_partition); @@ -82,6 +82,11 @@ Signed-off-by: Felix Fietkau +{ +} + ++void __weak arch_split_mtd_part(struct mtd_info *master, const char *name, ++ int offset, int size) ++{ ++} ++ +static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part) +{ + static int rootfs_found = 0; @@ -89,16 +94,17 @@ Signed-off-by: Felix Fietkau + if (rootfs_found) + return; + -+ if (IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE) && -+ !strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) && -+ !of_find_property(mtd_get_of_node(&part->mtd), "compatible", NULL)) ++ if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) && ++ IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE)) + split_firmware(master, part); -+} + ++ arch_split_mtd_part(master, part->mtd.name, part->offset, ++ part->mtd.size); ++} /* * This function, given a master MTD object and a partition table, creates * and registers slave MTD objects which are bound to the master according to -@@ -779,6 +807,7 @@ int add_mtd_partitions(struct mtd_info * +@@ -779,6 +813,7 @@ int add_mtd_partitions(struct mtd_info * goto err_del_partitions; } @@ -106,3 +112,13 @@ Signed-off-by: Felix Fietkau mtd_add_partition_attrs(slave); /* Look for subpartitions */ parse_mtd_partitions(&slave->mtd, parts[i].types, NULL); +--- a/include/linux/mtd/partitions.h ++++ b/include/linux/mtd/partitions.h +@@ -110,5 +110,7 @@ int mtd_add_partition(struct mtd_info *m + long long offset, long long length); + int mtd_del_partition(struct mtd_info *master, int partno); + uint64_t mtd_get_device_size(const struct mtd_info *mtd); ++extern void __weak arch_split_mtd_part(struct mtd_info *master, ++ const char *name, int offset, int size); + + #endif diff --git a/target/linux/generic/pending-4.9/401-mtd-add-support-for-different-partition-parser-types.patch b/target/linux/generic/pending-4.9/401-mtd-add-support-for-different-partition-parser-types.patch index eefba9f508..6142256dd8 100644 --- a/target/linux/generic/pending-4.9/401-mtd-add-support-for-different-partition-parser-types.patch +++ b/target/linux/generic/pending-4.9/401-mtd-add-support-for-different-partition-parser-types.patch @@ -9,55 +9,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -56,6 +56,10 @@ struct mtd_part { - }; - - static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part); -+static int parse_mtd_partitions_by_type(struct mtd_info *master, -+ enum mtd_parser_type type, -+ const struct mtd_partition **pparts, -+ struct mtd_part_parser_data *data); - - /* - * Given a pointer to the MTD object in the mtd_part structure, we can retrieve -@@ -744,6 +748,36 @@ int mtd_del_partition(struct mtd_info *m - } - EXPORT_SYMBOL_GPL(mtd_del_partition); - -+static int -+run_parsers_by_type(struct mtd_part *slave, enum mtd_parser_type type) -+{ -+ struct mtd_partition *parts; -+ int nr_parts; -+ int i; -+ -+ nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type, (const struct mtd_partition **)&parts, -+ NULL); -+ if (nr_parts <= 0) -+ return nr_parts; -+ -+ if (WARN_ON(!parts)) -+ return 0; -+ -+ for (i = 0; i < nr_parts; i++) { -+ /* adjust partition offsets */ -+ parts[i].offset += slave->offset; -+ -+ mtd_add_partition(slave->parent, -+ parts[i].name, -+ parts[i].offset, -+ parts[i].size); -+ } -+ -+ kfree(parts); -+ -+ return nr_parts; -+} -+ - #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME - #define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME - #else -@@ -1134,6 +1168,61 @@ void mtd_part_parser_cleanup(struct mtd_ +@@ -1140,6 +1140,62 @@ void mtd_part_parser_cleanup(struct mtd_ } } @@ -85,10 +37,10 @@ Signed-off-by: Gabor Juhos + return ret; +} + -+static int parse_mtd_partitions_by_type(struct mtd_info *master, -+ enum mtd_parser_type type, -+ const struct mtd_partition **pparts, -+ struct mtd_part_parser_data *data) ++int parse_mtd_partitions_by_type(struct mtd_info *master, ++ enum mtd_parser_type type, ++ const struct mtd_partition **pparts, ++ struct mtd_part_parser_data *data) +{ + struct mtd_part_parser *prev = NULL; + int ret = 0; @@ -115,13 +67,19 @@ Signed-off-by: Gabor Juhos + + return ret; +} ++EXPORT_SYMBOL_GPL(parse_mtd_partitions_by_type); + int mtd_is_partition(const struct mtd_info *mtd) { struct mtd_part *part; --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h -@@ -73,6 +73,10 @@ struct mtd_part_parser_data { +@@ -68,11 +68,14 @@ struct mtd_part_parser_data { + unsigned long origin; + }; + +- + /* * Functions dealing with the various ways of partitioning the space */ @@ -132,7 +90,7 @@ Signed-off-by: Gabor Juhos struct mtd_part_parser { struct list_head list; struct module *owner; -@@ -81,6 +85,7 @@ struct mtd_part_parser { +@@ -81,6 +84,7 @@ struct mtd_part_parser { int (*parse_fn)(struct mtd_info *, const struct mtd_partition **, struct mtd_part_parser_data *); void (*cleanup)(const struct mtd_partition *pparts, int nr_parts); @@ -140,3 +98,13 @@ Signed-off-by: Gabor Juhos }; /* Container for passing around a set of parsed partitions */ +@@ -113,4 +117,9 @@ uint64_t mtd_get_device_size(const struc + extern void __weak arch_split_mtd_part(struct mtd_info *master, + const char *name, int offset, int size); + ++int parse_mtd_partitions_by_type(struct mtd_info *master, ++ enum mtd_parser_type type, ++ const struct mtd_partition **pparts, ++ struct mtd_part_parser_data *data); ++ + #endif diff --git a/target/linux/generic/pending-4.9/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch b/target/linux/generic/pending-4.9/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch index 6085cb8ffb..697a25a0d5 100644 --- a/target/linux/generic/pending-4.9/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch +++ b/target/linux/generic/pending-4.9/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch @@ -10,15 +10,52 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -786,6 +786,7 @@ run_parsers_by_type(struct mtd_part *sla +@@ -744,6 +744,36 @@ int mtd_del_partition(struct mtd_info *m + } + EXPORT_SYMBOL_GPL(mtd_del_partition); + ++static int ++run_parsers_by_type(struct mtd_part *slave, enum mtd_parser_type type) ++{ ++ struct mtd_partition *parts; ++ int nr_parts; ++ int i; ++ ++ nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type, (const struct mtd_partition **)&parts, ++ NULL); ++ if (nr_parts <= 0) ++ return nr_parts; ++ ++ if (WARN_ON(!parts)) ++ return 0; ++ ++ for (i = 0; i < nr_parts; i++) { ++ /* adjust partition offsets */ ++ parts[i].offset += slave->offset; ++ ++ mtd_add_partition(slave->parent, ++ parts[i].name, ++ parts[i].offset, ++ parts[i].size); ++ } ++ ++ kfree(parts); ++ ++ return nr_parts; ++} ++ + #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME + #define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME + #else +@@ -752,6 +782,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition); static void split_firmware(struct mtd_info *master, struct mtd_part *part) { + run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE); } - static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part) -@@ -795,6 +796,12 @@ static void mtd_partition_split(struct m + void __weak arch_split_mtd_part(struct mtd_info *master, const char *name, +@@ -766,6 +797,12 @@ static void mtd_partition_split(struct m if (rootfs_found) return; @@ -28,12 +65,12 @@ Signed-off-by: Gabor Juhos + rootfs_found = 1; + } + - if (IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE) && - !strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) && - !of_find_property(mtd_get_of_node(&part->mtd), "compatible", NULL)) + if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) && + IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE)) + split_firmware(master, part); --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h -@@ -75,6 +75,8 @@ struct mtd_part_parser_data { +@@ -74,6 +74,8 @@ struct mtd_part_parser_data { enum mtd_parser_type { MTD_PARSER_TYPE_DEVICE = 0, diff --git a/target/linux/generic/pending-4.9/404-mtd-add-more-helper-functions.patch b/target/linux/generic/pending-4.9/404-mtd-add-more-helper-functions.patch index 294a0f6f8b..7b4b40a47d 100644 --- a/target/linux/generic/pending-4.9/404-mtd-add-more-helper-functions.patch +++ b/target/linux/generic/pending-4.9/404-mtd-add-more-helper-functions.patch @@ -11,7 +11,25 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -1247,6 +1247,24 @@ int mtd_is_partition(const struct mtd_in +@@ -774,6 +774,17 @@ run_parsers_by_type(struct mtd_part *sla + return nr_parts; + } + ++static inline unsigned long ++mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len) ++{ ++ unsigned long mask = mtd->erasesize - 1; ++ ++ len += offset & mask; ++ len = (len + mask) & ~mask; ++ len -= offset & mask; ++ return len; ++} ++ + #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME + #define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME + #else +@@ -1250,6 +1261,24 @@ int mtd_is_partition(const struct mtd_in } EXPORT_SYMBOL_GPL(mtd_is_partition); @@ -65,12 +83,12 @@ Signed-off-by: Gabor Juhos if (mtd->writesize_shift) --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h -@@ -116,6 +116,8 @@ int mtd_is_partition(const struct mtd_in +@@ -115,6 +115,8 @@ int mtd_is_partition(const struct mtd_in int mtd_add_partition(struct mtd_info *master, const char *name, long long offset, long long length); int mtd_del_partition(struct mtd_info *master, int partno); +struct mtd_info *mtdpart_get_master(const struct mtd_info *mtd); +uint64_t mtdpart_get_offset(const struct mtd_info *mtd); uint64_t mtd_get_device_size(const struct mtd_info *mtd); - - #endif + extern void __weak arch_split_mtd_part(struct mtd_info *master, + const char *name, int offset, int size); diff --git a/target/linux/generic/pending-4.9/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.9/411-mtd-partial_eraseblock_write.patch index 5a59dfa0c6..4e66272bb6 100644 --- a/target/linux/generic/pending-4.9/411-mtd-partial_eraseblock_write.patch +++ b/target/linux/generic/pending-4.9/411-mtd-partial_eraseblock_write.patch @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau /* Our partition linked list */ static LIST_HEAD(mtd_partitions); static DEFINE_MUTEX(mtd_partitions_mutex); -@@ -246,13 +248,61 @@ static int part_erase(struct mtd_info *m +@@ -242,13 +244,61 @@ static int part_erase(struct mtd_info *m struct mtd_part *part = mtd_to_part(mtd); int ret; @@ -81,7 +81,7 @@ Signed-off-by: Felix Fietkau return ret; } -@@ -260,6 +310,25 @@ void mtd_erase_callback(struct erase_inf +@@ -256,6 +306,25 @@ void mtd_erase_callback(struct erase_inf { if (instr->mtd->_erase == part_erase) { struct mtd_part *part = mtd_to_part(instr->mtd); @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN) instr->fail_addr -= part->offset; -@@ -566,19 +635,22 @@ static struct mtd_part *allocate_partiti +@@ -562,19 +631,22 @@ static struct mtd_part *allocate_partiti remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { /* Doesn't start on a boundary of major erase size */ diff --git a/target/linux/generic/pending-4.9/412-mtd-partial_eraseblock_unlock.patch b/target/linux/generic/pending-4.9/412-mtd-partial_eraseblock_unlock.patch index 1e8c90931c..2ffff4ecf9 100644 --- a/target/linux/generic/pending-4.9/412-mtd-partial_eraseblock_unlock.patch +++ b/target/linux/generic/pending-4.9/412-mtd-partial_eraseblock_unlock.patch @@ -20,7 +20,7 @@ Signed-off-by: Tim Harvey --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -348,7 +348,16 @@ static int part_lock(struct mtd_info *mt +@@ -344,7 +344,16 @@ static int part_lock(struct mtd_info *mt static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) { struct mtd_part *part = mtd_to_part(mtd); diff --git a/target/linux/generic/pending-4.9/420-mtd-redboot_space.patch b/target/linux/generic/pending-4.9/420-mtd-redboot_space.patch index 6a612a0e75..85fbe0512d 100644 --- a/target/linux/generic/pending-4.9/420-mtd-redboot_space.patch +++ b/target/linux/generic/pending-4.9/420-mtd-redboot_space.patch @@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/mtd/redboot.c +++ b/drivers/mtd/redboot.c -@@ -266,14 +266,21 @@ static int parse_redboot_partitions(stru +@@ -265,14 +265,21 @@ static int parse_redboot_partitions(stru #endif names += strlen(names)+1; diff --git a/target/linux/generic/pending-4.9/630-packet_socket_type.patch b/target/linux/generic/pending-4.9/630-packet_socket_type.patch index e89bf0cfaa..c47bc371c8 100644 --- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch +++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1781,6 +1781,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1787,6 +1787,7 @@ static int packet_rcv_spkt(struct sk_buf { struct sock *sk; struct sockaddr_pkt *spkt; @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau /* * When we registered the protocol we saved the socket in the data -@@ -1788,6 +1789,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1794,6 +1795,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau /* * Yank back the headers [hope the device set this -@@ -1800,7 +1802,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1806,7 +1808,7 @@ static int packet_rcv_spkt(struct sk_buf * so that this procedure is noop. */ @@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -2038,12 +2040,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -2044,12 +2046,12 @@ static int packet_rcv(struct sk_buff *sk unsigned int snaplen, res; bool is_drop_n_account = false; @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2169,12 +2171,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -2175,12 +2177,12 @@ static int tpacket_rcv(struct sk_buff *s BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -3292,6 +3294,7 @@ static int packet_create(struct net *net +@@ -3298,6 +3300,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; -@@ -3905,6 +3908,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3920,6 +3923,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; } -@@ -3957,6 +3970,13 @@ static int packet_getsockopt(struct sock +@@ -3972,6 +3985,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.9/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-4.9/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 9979c22fc3..de45e2982b 100644 --- a/target/linux/generic/pending-4.9/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/pending-4.9/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -350,7 +350,7 @@ Signed-off-by: Steven Barth memcpy(p->name, u->name, sizeof(u->name)); } -@@ -1904,6 +2066,15 @@ static int ip6_tnl_validate(struct nlatt +@@ -1902,6 +2064,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) { -@@ -1938,6 +2109,46 @@ static void ip6_tnl_netlink_parms(struct +@@ -1936,6 +2107,46 @@ static void ip6_tnl_netlink_parms(struct if (data[IFLA_IPTUN_COLLECT_METADATA]) parms->collect_md = true; @@ -413,7 +413,7 @@ Signed-off-by: Steven Barth } static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[], -@@ -2051,6 +2262,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -2049,6 +2260,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) + -@@ -2078,6 +2295,24 @@ static size_t ip6_tnl_get_size(const str +@@ -2076,6 +2293,24 @@ static size_t ip6_tnl_get_size(const str nla_total_size(2) + /* IFLA_IPTUN_COLLECT_METADATA */ nla_total_size(0) + @@ -451,7 +451,7 @@ Signed-off-by: Steven Barth 0; } -@@ -2085,6 +2320,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2083,6 +2318,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) || -@@ -2093,9 +2331,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -2091,9 +2329,27 @@ static int ip6_tnl_fill_info(struct sk_b nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) || nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || @@ -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) || -@@ -2133,6 +2389,7 @@ static const struct nla_policy ip6_tnl_p +@@ -2131,6 +2387,7 @@ static const struct nla_policy ip6_tnl_p [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG }, diff --git a/target/linux/generic/pending-4.9/701-phy_extension.patch b/target/linux/generic/pending-4.9/701-phy_extension.patch index 628e1d31b9..74931c421f 100644 --- a/target/linux/generic/pending-4.9/701-phy_extension.patch +++ b/target/linux/generic/pending-4.9/701-phy_extension.patch @@ -9,7 +9,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -472,6 +472,50 @@ int phy_ethtool_ksettings_get(struct phy +@@ -473,6 +473,50 @@ int phy_ethtool_ksettings_get(struct phy } EXPORT_SYMBOL(phy_ethtool_ksettings_get); diff --git a/target/linux/generic/pending-4.9/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-4.9/703-phy-add-detach-callback-to-struct-phy_driver.patch index 28181d16f1..04b75b0188 100644 --- a/target/linux/generic/pending-4.9/703-phy-add-detach-callback-to-struct-phy_driver.patch +++ b/target/linux/generic/pending-4.9/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 -@@ -1004,6 +1004,9 @@ void phy_detach(struct phy_device *phyde +@@ -1005,6 +1005,9 @@ void phy_detach(struct phy_device *phyde struct mii_bus *bus; int i; diff --git a/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch b/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch new file mode 100644 index 0000000000..037ec9bb2d --- /dev/null +++ b/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch @@ -0,0 +1,74 @@ +From: Alexey Brodkin +Subject: usb: Remove annoying warning about bogus URB + +When ath9k-htc Wi-Fi dongle is used with generic OHCI controller +infinite stream of warnings appears in debug console like this: +-------------------------->8---------------------- +usb 1-1: new full-speed USB device number 2 using ohci-platform +usb 1-1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested +usb 1-1: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: +51008 +------------[ cut here ]------------ +WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449 +usb_submit_urb+0x1b4/0x498() +usb 1-1: BOGUS urb xfer, pipe 1 != type 3 +Modules linked in: +CPU: 0 PID: 19 Comm: kworker/0:1 Not tainted +4.4.0-rc4-00017-g00e2d79-dirty #3 +Workqueue: events request_firmware_work_func + +Stack Trace: +arc_unwind_core.constprop.1+0xa4/0x110 +---[ end trace 649ef8c342817fc2 ]--- +------------[ cut here ]------------ +WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449 +usb_submit_urb+0x1b4/0x498() +usb 1-1: BOGUS urb xfer, pipe 1 != type 3 +Modules linked in: +CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G W +4.4.0-rc4-00017-g00e2d79-dirty #3 +Workqueue: events request_firmware_work_func + +Stack Trace: +arc_unwind_core.constprop.1+0xa4/0x110 +---[ end trace 649ef8c342817fc3 ]--- +------------[ cut here ]------------ +-------------------------->8---------------------- + +There're some discussions in mailing lists proposing to disable +that particular check alltogether and magically all seem to work +fine with muted warning. + +Anyways new thread on that regard could be found here: +http://lists.infradead.org/pipermail/linux-snps-arc/2016-July/001310.html + +Let's see what comes out of that new discussion, hopefully patching +of generic USB stuff won't be required then. + +Signed-off-by: Alexey Brodkin +--- + drivers/leds/Makefile | 1 + + drivers/leds/trigger/Kconfig | 7 +++++++ + 2 files changed, 8 insertions(+) + +--- a/drivers/leds/Makefile ++++ b/drivers/leds/Makefile +@@ -77,3 +77,4 @@ obj-$(CONFIG_LEDS_DAC124S085) += leds-d + + # LED Triggers + obj-$(CONFIG_LEDS_TRIGGERS) += trigger/ ++obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o +--- a/drivers/leds/trigger/Kconfig ++++ b/drivers/leds/trigger/Kconfig +@@ -126,4 +126,11 @@ config LEDS_TRIGGER_PANIC + a different trigger. + If unsure, say Y. + ++config LEDS_TRIGGER_NETDEV ++ tristate "LED Netdev Trigger" ++ depends on NET && LEDS_TRIGGERS ++ help ++ This allows LEDs to be controlled by network device activity. ++ If unsure, say Y. ++ + endif # LEDS_TRIGGERS diff --git a/target/linux/x86/patches-4.9/200-pcengines-apu2-reboot.patch b/target/linux/x86/patches-4.9/200-pcengines-apu2-reboot.patch index 6c2b21d157..0eaf1ed70c 100644 --- a/target/linux/x86/patches-4.9/200-pcengines-apu2-reboot.patch +++ b/target/linux/x86/patches-4.9/200-pcengines-apu2-reboot.patch @@ -1,6 +1,6 @@ --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c -@@ -449,6 +449,16 @@ static struct dmi_system_id __initdata r +@@ -470,6 +470,16 @@ static struct dmi_system_id __initdata r }, }, From c58b2b6d5e784cd51bd59bb8f75fcead99c21522 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 13 Feb 2020 18:04:01 +0800 Subject: [PATCH 3/7] kernel: add missing symbol --- target/linux/generic/config-4.14 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/generic/config-4.14 b/target/linux/generic/config-4.14 index 2d001e80c0..93113d9562 100644 --- a/target/linux/generic/config-4.14 +++ b/target/linux/generic/config-4.14 @@ -5614,6 +5614,7 @@ CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y # CONFIG_X25 is not set # CONFIG_X509_CERTIFICATE_PARSER is not set # CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +# CONFIG_X86_DECODER_SELFTEST is not set # CONFIG_X86_PKG_TEMP_THERMAL is not set CONFIG_X86_SYSFB=y # CONFIG_XEN is not set From b4a4b23995797a305f9b15e4367ae234d9612fc2 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 13 Feb 2020 18:10:28 +0800 Subject: [PATCH 4/7] hostapd: remove erroneous $(space) redefinitio --- package/network/services/hostapd/Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile index 86534054b8..48dff34942 100644 --- a/package/network/services/hostapd/Makefile +++ b/package/network/services/hostapd/Makefile @@ -86,9 +86,6 @@ DRIVER_MAKEOPTS= \ CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \ CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \ -space := -space += - ifneq ($(LOCAL_VARIANT),mini) DRIVER_MAKEOPTS += CONFIG_IEEE80211W=$(CONFIG_DRIVER_11W_SUPPORT) endif From 1a1250842f887ce888a3a104cabb08ba04893e49 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 13 Feb 2020 19:52:32 +0800 Subject: [PATCH 5/7] ar71xx: fix kenrnel 4.9 patch --- target/linux/ar71xx/Makefile | 2 +- ...MIPS-ath79-add-more-register-defines.patch | 4 +- .../pending-4.9/831-ledtrig_netdev.patch | 74 ------------------- 3 files changed, 4 insertions(+), 76 deletions(-) delete mode 100644 target/linux/generic/pending-4.9/831-ledtrig_netdev.patch diff --git a/target/linux/ar71xx/Makefile b/target/linux/ar71xx/Makefile index 93832b560e..e7ca46c7ac 100644 --- a/target/linux/ar71xx/Makefile +++ b/target/linux/ar71xx/Makefile @@ -13,7 +13,7 @@ FEATURES:=usbgadget CPU_TYPE:=24kc SUBTARGETS:=generic tiny nand mikrotik -KERNEL_PATCHVER:=4.14 +KERNEL_PATCHVER:=4.9 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch b/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch index d0f5b78901..77a646378e 100644 --- a/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch +++ b/target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch @@ -217,7 +217,7 @@ #define AR71XX_GPIO_COUNT 16 #define AR7240_GPIO_COUNT 18 #define AR7241_GPIO_COUNT 20 -@@ -570,4 +681,235 @@ +@@ -570,4 +681,237 @@ #define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13 #define AR934X_SRIF_DPLL2_OUTDIV_MASK 0x7 @@ -433,6 +433,8 @@ +#define QCA955X_GMAC_REG_ETH_CFG 0x00 + +#define QCA955X_ETH_CFG_RGMII_EN BIT(0) ++#define QCA955X_ETH_CFG_GE0_MII_EN BIT(1) ++#define QCA955X_ETH_CFG_GE0_MII_SLAVE BIT(4) +#define QCA955X_ETH_CFG_MII_GE0 BIT(1) +#define QCA955X_ETH_CFG_GMII_GE0 BIT(2) +#define QCA955X_ETH_CFG_MII_GE0_MASTER BIT(3) diff --git a/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch b/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch deleted file mode 100644 index 037ec9bb2d..0000000000 --- a/target/linux/generic/pending-4.9/831-ledtrig_netdev.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: Alexey Brodkin -Subject: usb: Remove annoying warning about bogus URB - -When ath9k-htc Wi-Fi dongle is used with generic OHCI controller -infinite stream of warnings appears in debug console like this: --------------------------->8---------------------- -usb 1-1: new full-speed USB device number 2 using ohci-platform -usb 1-1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested -usb 1-1: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: -51008 -------------[ cut here ]------------ -WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449 -usb_submit_urb+0x1b4/0x498() -usb 1-1: BOGUS urb xfer, pipe 1 != type 3 -Modules linked in: -CPU: 0 PID: 19 Comm: kworker/0:1 Not tainted -4.4.0-rc4-00017-g00e2d79-dirty #3 -Workqueue: events request_firmware_work_func - -Stack Trace: -arc_unwind_core.constprop.1+0xa4/0x110 ----[ end trace 649ef8c342817fc2 ]--- -------------[ cut here ]------------ -WARNING: CPU: 0 PID: 19 at drivers/usb/core/urb.c:449 -usb_submit_urb+0x1b4/0x498() -usb 1-1: BOGUS urb xfer, pipe 1 != type 3 -Modules linked in: -CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G W -4.4.0-rc4-00017-g00e2d79-dirty #3 -Workqueue: events request_firmware_work_func - -Stack Trace: -arc_unwind_core.constprop.1+0xa4/0x110 ----[ end trace 649ef8c342817fc3 ]--- -------------[ cut here ]------------ --------------------------->8---------------------- - -There're some discussions in mailing lists proposing to disable -that particular check alltogether and magically all seem to work -fine with muted warning. - -Anyways new thread on that regard could be found here: -http://lists.infradead.org/pipermail/linux-snps-arc/2016-July/001310.html - -Let's see what comes out of that new discussion, hopefully patching -of generic USB stuff won't be required then. - -Signed-off-by: Alexey Brodkin ---- - drivers/leds/Makefile | 1 + - drivers/leds/trigger/Kconfig | 7 +++++++ - 2 files changed, 8 insertions(+) - ---- a/drivers/leds/Makefile -+++ b/drivers/leds/Makefile -@@ -77,3 +77,4 @@ obj-$(CONFIG_LEDS_DAC124S085) += leds-d - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGERS) += trigger/ -+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o ---- a/drivers/leds/trigger/Kconfig -+++ b/drivers/leds/trigger/Kconfig -@@ -126,4 +126,11 @@ config LEDS_TRIGGER_PANIC - a different trigger. - If unsure, say Y. - -+config LEDS_TRIGGER_NETDEV -+ tristate "LED Netdev Trigger" -+ depends on NET && LEDS_TRIGGERS -+ help -+ This allows LEDs to be controlled by network device activity. -+ If unsure, say Y. -+ - endif # LEDS_TRIGGERS From 873517adf69fb7d4837f1ad883809e0e3edf595a Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 13 Feb 2020 21:44:36 +0800 Subject: [PATCH 6/7] luci-app-ssr-plus: add srelay socks4/5 support --- package/lean/luci-app-ssr-plus/Makefile | 10 ++-- .../model/cbi/shadowsocksr/advanced.lua | 11 ++--- .../luasrc/model/cbi/shadowsocksr/status.lua | 12 ++--- .../luci-app-ssr-plus/po/zh-cn/ssr-plus.po | 7 ++- .../root/etc/init.d/shadowsocksr | 15 +++--- .../root/usr/bin/ssr-monitor | 6 +-- package/lean/srelay/Makefile | 47 +++++++++++++++++++ package/lean/srelay/files/srelay.conf | 2 + package/lean/srelay/files/srelay.init | 14 ++++++ 9 files changed, 93 insertions(+), 31 deletions(-) create mode 100644 package/lean/srelay/Makefile create mode 100644 package/lean/srelay/files/srelay.conf create mode 100644 package/lean/srelay/files/srelay.init diff --git a/package/lean/luci-app-ssr-plus/Makefile b/package/lean/luci-app-ssr-plus/Makefile index 6a6cfaeff2..30abf387f2 100644 --- a/package/lean/luci-app-ssr-plus/Makefile +++ b/package/lean/luci-app-ssr-plus/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-ssr-plus -PKG_RELEASE:=137 +PKG_RELEASE:=139 PKG_VERSION:=1 include $(INCLUDE_DIR)/package.mk @@ -12,11 +12,11 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_Simple_obfs - bool "Include Shadowsocks simple-obfs plugin" + bool "Include Shadowsocks Simple-obfs Plugin" default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_plugin - bool "Include Shadowsocks v2ray plugin" + bool "Include Shadowsocks V2ray Plugin" default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray @@ -36,7 +36,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server default y if x86_64 config PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks - bool "Include ShadowsocksR Socks and Tunnel" + bool "Include Socks Sever" default y if x86_64 endef @@ -55,7 +55,7 @@ define Package/luci-app-ssr-plus +PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:ipt2socks \ +PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun-client \ +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server \ - +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks:shadowsocksr-libev-ssr-local + +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks:srelay endef define Build/Prepare diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index cc96529a7f..26de83e7d3 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -49,15 +49,12 @@ s.anonymous = true o = s:option(Flag, "adblock", translate("Enable adblock")) o.rmempty = false --- [[ SOCKS5 Proxy ]]-- -if nixio.fs.access("/usr/bin/ssr-local") then -s = m:section(TypedSection, "socks5_proxy", translate("SOCKS5 Proxy")) +-- [[ SOCKS Proxy ]]-- +if nixio.fs.access("/usr/bin/srelay") then +s = m:section(TypedSection, "socks5_proxy", translate("SOCKS Proxy")) s.anonymous = true -o = s:option(ListValue, "server", translate("Server")) -o:value("nil", translate("Disable")) -for _,key in pairs(key_table) do o:value(key,server_table[key]) end -o.default = "nil" +o = s:option(Flag, "socks", translate("Enable SOCKS Proxy")) o.rmempty = false o = s:option(Value, "local_port", translate("Local Port")) diff --git a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua index 46fb68de91..501452584b 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/status.lua @@ -70,7 +70,7 @@ if luci.sys.call("busybox ps -w | grep ssr-retcp | grep -v grep >/dev/null") == redir_run=1 end -if luci.sys.call("pidof ssr-local >/dev/null") == 0 then +if luci.sys.call("pidof srelay >/dev/null") == 0 then sock5_run=1 end @@ -118,8 +118,8 @@ else s.value = translate("Not Running") end -if nixio.fs.access("/usr/bin/ssr-local") then -s=m:field(DummyValue,"sock5_run",translate("SOCKS5 Proxy")) +if nixio.fs.access("/usr/bin/srelay") then +s=m:field(DummyValue,"sock5_run",translate("SOCKS Proxy")) s.rawhtml = true if sock5_run == 1 then s.value =font_blue .. bold_on .. translate("Running") .. bold_off .. font_off @@ -179,8 +179,8 @@ s.rawhtml = true s.template = "shadowsocksr/refresh" s.value =ip_count .. " " .. translate("Records") -s=m:field(DummyValue,"check_port",translate("Check Server Port")) -s.template = "shadowsocksr/checkport" -s.value =translate("No Check") +-- s=m:field(DummyValue,"check_port",translate("Check Server Port")) +-- s.template = "shadowsocksr/checkport" +-- s.value =translate("No Check") return m diff --git a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po index 98a525580f..6320e9442e 100644 --- a/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po +++ b/package/lean/luci-app-ssr-plus/po/zh-cn/ssr-plus.po @@ -166,8 +166,11 @@ msgstr "编辑服务器配置" msgid "Alias" msgstr "别名" -msgid "SOCKS5 Proxy" -msgstr "SOCKS5代理" +msgid "SOCKS Proxy" +msgstr "SOCKS(4/5)代理" + +msgid "Enable SOCKS Proxy" +msgstr "启用 SOCKS 代理" msgid "Server" msgstr "服务器" diff --git a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr index 3f112a4741..9aeecf2665 100755 --- a/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr +++ b/package/lean/luci-app-ssr-plus/root/etc/init.d/shadowsocksr @@ -474,14 +474,13 @@ start_server() { } start_local() { - local local_server=$(uci_get_by_type socks5_proxy server) - [ "$local_server" = "nil" ] && return 1 + local local_server=$(uci_get_by_type socks5_proxy socks 0) + [ "$local_server" = 0 ] && return 0 mkdir -p /var/run /var/etc - gen_config_file $local_server 2 - /usr/bin/ssr-local -c $CONFIG_SOCK5_FILE -u \ - -l $(uci_get_by_type socks5_proxy local_port 1080) \ - -b $(uci_get_by_type socks5_proxy local_address 0.0.0.0) \ - -f /var/run/ssr-local.pid >/dev/null 2>&1 + + /usr/bin/srelay -q -c /etc/srelay.conf \ + -i:$(uci_get_by_type socks5_proxy local_port 1080) \ + -p /var/run/ssr-local.pid >/dev/null 2>&1 local_enable=1 } @@ -568,7 +567,7 @@ stop() { killall -q -9 ipt2socks killall -q -9 ssr-server killall -q -9 kcptun-client - killall -q -9 ssr-local + killall -q -9 srelay if [ -f /var/run/pdnsd.pid ] ;then kill $(cat /var/run/pdnsd.pid) >/dev/null 2>&1 else diff --git a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor index 62c65dde4e..2ba7b88743 100755 --- a/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor +++ b/package/lean/luci-app-ssr-plus/root/usr/bin/ssr-monitor @@ -105,13 +105,13 @@ do fi #local if [ $local_process -gt 0 ] ;then - icount=`busybox ps -w | grep ssr-local |grep -v grep| wc -l` + icount=`busybox ps -w | grep srelay |grep -v grep| wc -l` if [ $icount -lt $local_process ] #如果进程挂掉就重启它 then logger -t "$NAME" "ssr local error.restart!" - killall -q -9 ssr-local + killall -q -9 srelay - ( /usr/bin/ssr-local -c /var/etc/shadowsocksr_s.json -u -l $sock5_port -f /var/run/ssr-local.pid &) + ( /usr/bin/srelay -q -c /etc/srelay.conf -i:$sock5_port -p /var/run/ssr-local.pid >/dev/null 2>&1) fi fi #pdnsd diff --git a/package/lean/srelay/Makefile b/package/lean/srelay/Makefile new file mode 100644 index 0000000000..f008a8dfc7 --- /dev/null +++ b/package/lean/srelay/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2006-2011 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=srelay +PKG_VERSION:=0.4.8p3 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@SF/socks-relay +PKG_MD5SUM:=8121ff3d1b741de95dd6eacc5ad5811c + +include $(INCLUDE_DIR)/package.mk + +define Package/srelay + SECTION:=net + CATEGORY:=Network + DEPENDS:=+libwrap + SUBMENU:=Web Servers/Proxies + TITLE:=A socks 4/5 proxy server + URL:=http://www.c-wind.com/srelay/ +endef + +define Package/srelay/conffiles +/etc/srelay.conf +endef + +CONFIGURE_ARGS += \ + --disable-thread \ + --with-libwrap="$(STAGING_DIR)/usr" \ + +CONFIGURE_VARS += \ + CPPFLAGS="-DLINUX $$$$CPPFLAGS" \ + +define Package/srelay/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc + $(INSTALL_DATA) files/$(PKG_NAME).conf $(1)/etc/ +endef + +$(eval $(call BuildPackage,srelay)) diff --git a/package/lean/srelay/files/srelay.conf b/package/lean/srelay/files/srelay.conf new file mode 100644 index 0000000000..73f6e94bc5 --- /dev/null +++ b/package/lean/srelay/files/srelay.conf @@ -0,0 +1,2 @@ +# allow local subnet to access socks proxy +0.0.0.0 any \ No newline at end of file diff --git a/package/lean/srelay/files/srelay.init b/package/lean/srelay/files/srelay.init new file mode 100644 index 0000000000..95d1d81376 --- /dev/null +++ b/package/lean/srelay/files/srelay.init @@ -0,0 +1,14 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006-2011 OpenWrt.org + +START=50 + +SERVICE_USE_PID=1 + +start() { + service_start /usr/bin/srelay -c /etc/srelay.conf -r -s +} + +stop() { + service_stop /usr/bin/srelay +} From d5cd053f35928e03082121d06cf7bbea5c926b8b Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 14 Feb 2020 00:06:27 +0800 Subject: [PATCH 7/7] dnsmasq: add filter-aaaa option (IPv6 --- package/network/services/dnsmasq/Makefile | 2 +- .../network/services/dnsmasq/files/dhcp.conf | 1 + .../services/dnsmasq/files/dnsmasq.init | 2 + .../dnsmasq/patches/999-filter-aaaa.patch | 73 +++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 package/network/services/dnsmasq/patches/999-filter-aaaa.patch diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile index 8652343c57..61185cdfc0 100644 --- a/package/network/services/dnsmasq/Makefile +++ b/package/network/services/dnsmasq/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsmasq PKG_VERSION:=2.80 -PKG_RELEASE:=5 +PKG_RELEASE:=9 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq diff --git a/package/network/services/dnsmasq/files/dhcp.conf b/package/network/services/dnsmasq/files/dhcp.conf index 360c7d79ee..e8284d6cad 100644 --- a/package/network/services/dnsmasq/files/dhcp.conf +++ b/package/network/services/dnsmasq/files/dhcp.conf @@ -20,6 +20,7 @@ config dnsmasq #list notinterface lo #list bogusnxdomain '64.94.110.11' option localservice 1 # disable to allow DNS requests from non-local subnets + option filter_aaaa 1 config dhcp lan option interface lan diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init index 9c922eec6c..18d66e135c 100644 --- a/package/network/services/dnsmasq/files/dnsmasq.init +++ b/package/network/services/dnsmasq/files/dnsmasq.init @@ -828,6 +828,8 @@ dnsmasq_start() append_bool "$cfg" sequential_ip "--dhcp-sequential-ip" append_bool "$cfg" allservers "--all-servers" append_bool "$cfg" noping "--no-ping" + + append_bool "$cfg" filter_aaaa "--filter-aaaa" append_parm "$cfg" logfacility "--log-facility" diff --git a/package/network/services/dnsmasq/patches/999-filter-aaaa.patch b/package/network/services/dnsmasq/patches/999-filter-aaaa.patch new file mode 100644 index 0000000000..72ddaf4ef2 --- /dev/null +++ b/package/network/services/dnsmasq/patches/999-filter-aaaa.patch @@ -0,0 +1,73 @@ +From 966471712184cfb3b067f2ae8dad9d8e2a896cae Mon Sep 17 00:00:00 2001 +From: Bearice Ren +Date: Tue, 20 Sep 2016 11:52:08 +0800 +Subject: [PATCH] add filter-aaaa option + +--- + src/dnsmasq.h | 3 ++- + src/option.c | 3 +++ + src/rfc1035.c | 9 +++++++++ + 3 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/src/dnsmasq.h b/src/dnsmasq.h +index 1896a64..e10d6c4 100644 +--- a/src/dnsmasq.h ++++ b/src/dnsmasq.h +@@ -259,7 +259,8 @@ + #define OPT_TFTP_APREF_MAC 56 + #define OPT_RAPID_COMMIT 57 + #define OPT_UBUS 58 +-#define OPT_LAST 59 ++#define OPT_FILTER_AAAA 59 ++#define OPT_LAST 60 + + #define OPTION_BITS (sizeof(unsigned int)*8) + #define OPTION_SIZE ( (OPT_LAST/OPTION_BITS)+((OPT_LAST%OPTION_BITS)!=0) ) +diff --git a/src/option.c b/src/option.c +index d8c57d6..1cc65bf 100644 +@@ -166,6 +166,7 @@ + #define LOPT_UBUS 354 + #define LOPT_NAME_MATCH 355 + #define LOPT_CAA 356 ++#define LOPT_FILTER_AAAA 357 + + #ifdef HAVE_GETOPT_LONG + static const struct option opts[] = +@@ -337,6 +338,7 @@ + { "dhcp-rapid-commit", 0, 0, LOPT_RAPID_COMMIT }, + { "dumpfile", 1, 0, LOPT_DUMPFILE }, + { "dumpmask", 1, 0, LOPT_DUMPMASK }, ++ { "filter-aaaa", 0, 0, LOPT_FILTER_AAAA }, + { NULL, 0, 0, 0 } + }; + +@@ -515,6 +517,7 @@ + { LOPT_RAPID_COMMIT, OPT_RAPID_COMMIT, NULL, gettext_noop("Enables DHCPv4 Rapid Commit option."), NULL }, + { LOPT_DUMPFILE, ARG_ONE, "", gettext_noop("Path to debug packet dump file"), NULL }, + { LOPT_DUMPMASK, ARG_ONE, "", gettext_noop("Mask which packets to dump"), NULL }, ++ { LOPT_FILTER_AAAA, OPT_FILTER_AAAA, NULL, gettext_noop("Filter all AAAA requests."), NULL }, + { 0, 0, NULL, NULL, NULL } + }; + +diff --git a/src/rfc1035.c b/src/rfc1035.c +index 24d08c1..1594962 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1878,6 +1878,15 @@ + } + } + ++ //patch to filter aaaa forwards ++ if (qtype == T_AAAA && option_bool(OPT_FILTER_AAAA) ){ ++ //return a null reply ++ ans = 1; ++ if (!dryrun) log_query(F_CONFIG | F_IPV6 | F_NEG, name, &addr, NULL); ++ break; ++ } ++ //end of patch ++ + if (!ans) + return 0; /* failed to answer a question */ + } + +-- \ No newline at end of file