diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2019-05-30 22:49:32 +0200 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2019-06-18 20:45:33 +0200 |
commit | 6c5c3a2edccfeedffdbd2634895778685f17bd2e (patch) | |
tree | 3a7e0b242f085c44ffbf9efeb0b0670107b172f6 | |
parent | af50ce32c5ce41a357b3423d098a40360bfed25e (diff) | |
download | upstream-6c5c3a2edccfeedffdbd2634895778685f17bd2e.tar.gz upstream-6c5c3a2edccfeedffdbd2634895778685f17bd2e.tar.bz2 upstream-6c5c3a2edccfeedffdbd2634895778685f17bd2e.zip |
kernel: Update to version 4.4.182
Fixes:
- CVE-2019-11479
- CVE-2019-11478
- CVE-2019-11477
- CVE-2019-11833
- CVE-2019-11091
- CVE-2018-12126
- CVE-2018-12130
- CVE-2018-12127
- CVE-2019-3882
- CVE-2019-6974
- CVE-2019-3819
- CVE-2019-7221
- CVE-2019-7222
- CVE-2019-3701
- CVE-2018-19985
- CVE-2018-1120
And probably more
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
80 files changed, 264 insertions, 441 deletions
diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 43d31ac0b4..adaf24e714 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -3,10 +3,10 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .43 -LINUX_VERSION-4.4 = .167 +LINUX_VERSION-4.4 = .182 LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c -LINUX_KERNEL_HASH-4.4.167 = 33ca4c28a565404fc7b07f9d6b734c291035f7e7e46c280131494b04e3953edf +LINUX_KERNEL_HASH-4.4.182 = c409d88f61cd9a37cbba36d5d9c8162263eb1e5c9380efaf880a3ec10cd88527 ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) diff --git a/package/kernel/mac80211/patches/013-mm-backport-get_user_pages.patch b/package/kernel/mac80211/patches/013-mm-backport-get_user_pages.patch new file mode 100644 index 0000000000..f7e5c85d1c --- /dev/null +++ b/package/kernel/mac80211/patches/013-mm-backport-get_user_pages.patch @@ -0,0 +1,65 @@ +--- a/backport-include/linux/mm.h ++++ b/backport-include/linux/mm.h +@@ -39,8 +39,20 @@ static inline + long backport_get_user_pages_locked(unsigned long start, unsigned long nr_pages, + int write, int force, struct page **pages, int *locked) + { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168)) + return get_user_pages_locked(current, current->mm, start, nr_pages, + write, force, pages, locked); ++#else ++ int flags = 0; ++ ++ if (write) ++ flags |= FOLL_WRITE; ++ if (force) ++ flags |= FOLL_FORCE; ++ ++ return get_user_pages_locked(current, current->mm, start, nr_pages, ++ flags, pages, locked); ++#endif + } + #define get_user_pages_locked LINUX_BACKPORT(get_user_pages_locked) + +@@ -48,8 +60,20 @@ static inline + long backport_get_user_pages_unlocked(unsigned long start, unsigned long nr_pages, + int write, int force, struct page **pages) + { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168)) + return get_user_pages_unlocked(current, current->mm, start, nr_pages, + write, force, pages); ++#else ++ int flags = 0; ++ ++ if (write) ++ flags |= FOLL_WRITE; ++ if (force) ++ flags |= FOLL_FORCE; ++ ++ return get_user_pages_unlocked(current, current->mm, start, nr_pages, ++ pages, flags); ++#endif + } + #define get_user_pages_unlocked LINUX_BACKPORT(get_user_pages_unlocked) + #endif +@@ -60,8 +84,20 @@ long backport_get_user_pages(unsigned lo + int write, int force, struct page **pages, + struct vm_area_struct **vmas) + { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,4,168)) + return get_user_pages(current, current->mm, start, nr_pages, + write, force, pages, vmas); ++#else ++ int flags = 0; ++ ++ if (write) ++ flags |= FOLL_WRITE; ++ if (force) ++ flags |= FOLL_FORCE; ++ ++ return get_user_pages(current, current->mm, start, nr_pages, ++ flags, pages, vmas); ++#endif + } + #define get_user_pages LINUX_BACKPORT(get_user_pages) + #endif diff --git a/target/linux/apm821xx/patches-4.4/001-crypto4xx-integrate-ppc4xx-rng-into-crypto4xx.patch b/target/linux/apm821xx/patches-4.4/001-crypto4xx-integrate-ppc4xx-rng-into-crypto4xx.patch index 2b4452b7de..2459dd3221 100644 --- a/target/linux/apm821xx/patches-4.4/001-crypto4xx-integrate-ppc4xx-rng-into-crypto4xx.patch +++ b/target/linux/apm821xx/patches-4.4/001-crypto4xx-integrate-ppc4xx-rng-into-crypto4xx.patch @@ -240,7 +240,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> #define PPC4XX_SEC_VERSION_STR "0.5" -@@ -1221,6 +1222,7 @@ static int crypto4xx_probe(struct platfo +@@ -1230,6 +1231,7 @@ static int crypto4xx_probe(struct platfo if (rc) goto err_start_dev; @@ -248,7 +248,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> return 0; err_start_dev: -@@ -1247,6 +1249,8 @@ static int crypto4xx_remove(struct platf +@@ -1256,6 +1258,8 @@ static int crypto4xx_remove(struct platf struct device *dev = &ofdev->dev; struct crypto4xx_core_device *core_dev = dev_get_drvdata(dev); @@ -257,7 +257,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> free_irq(core_dev->irq, dev); irq_dispose_mapping(core_dev->irq); -@@ -1267,7 +1271,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match) +@@ -1276,7 +1280,7 @@ MODULE_DEVICE_TABLE(of, crypto4xx_match) static struct platform_driver crypto4xx_driver = { .driver = { @@ -266,7 +266,7 @@ Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> .of_match_table = crypto4xx_match, }, .probe = crypto4xx_probe, -@@ -1279,4 +1283,3 @@ module_platform_driver(crypto4xx_driver) +@@ -1288,4 +1292,3 @@ module_platform_driver(crypto4xx_driver) MODULE_LICENSE("GPL"); MODULE_AUTHOR("James Hsiao <jhsiao@amcc.com>"); MODULE_DESCRIPTION("Driver for AMCC PPC4xx crypto accelerator"); diff --git a/target/linux/apm821xx/patches-4.4/040-backport_leds-convert-IDE-trigger-to-common-disk-trigger.patch b/target/linux/apm821xx/patches-4.4/040-backport_leds-convert-IDE-trigger-to-common-disk-trigger.patch index d5eda621ea..2adcfef309 100644 --- a/target/linux/apm821xx/patches-4.4/040-backport_leds-convert-IDE-trigger-to-common-disk-trigger.patch +++ b/target/linux/apm821xx/patches-4.4/040-backport_leds-convert-IDE-trigger-to-common-disk-trigger.patch @@ -47,7 +47,7 @@ Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com> #include <linux/pm_runtime.h> #include <linux/platform_device.h> -@@ -4945,6 +4946,9 @@ void ata_qc_complete(struct ata_queued_c +@@ -4946,6 +4947,9 @@ void ata_qc_complete(struct ata_queued_c { struct ata_port *ap = qc->ap; diff --git a/target/linux/apm821xx/patches-4.4/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-4.4/802-usb-xhci-force-msi-renesas-xhci.patch index 8616268f1b..0a94c0cd09 100644 --- a/target/linux/apm821xx/patches-4.4/802-usb-xhci-force-msi-renesas-xhci.patch +++ b/target/linux/apm821xx/patches-4.4/802-usb-xhci-force-msi-renesas-xhci.patch @@ -24,7 +24,7 @@ produce a noisy warning. --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -388,10 +388,14 @@ static int xhci_try_enable_msi(struct us +@@ -386,10 +386,14 @@ static int xhci_try_enable_msi(struct us free_irq(hcd->irq, hcd); hcd->irq = 0; @@ -44,7 +44,7 @@ produce a noisy warning. /* hcd->irq is 0, we have MSI */ --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1656,6 +1656,7 @@ struct xhci_hcd { +@@ -1657,6 +1657,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 */ diff --git a/target/linux/ar71xx/patches-4.4/500-MIPS-fw-myloader.patch b/target/linux/ar71xx/patches-4.4/500-MIPS-fw-myloader.patch index 811a234a2c..984984d8ab 100644 --- a/target/linux/ar71xx/patches-4.4/500-MIPS-fw-myloader.patch +++ b/target/linux/ar71xx/patches-4.4/500-MIPS-fw-myloader.patch @@ -10,7 +10,7 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1118,6 +1118,9 @@ config MIPS_MSC +@@ -1121,6 +1121,9 @@ config MIPS_MSC config MIPS_NILE4 bool diff --git a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch index 164000f5c0..768ddfcaaf 100644 --- a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch @@ -241,7 +241,7 @@ */ --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -433,7 +433,7 @@ int ipv6_recv_error(struct sock *sk, str +@@ -434,7 +434,7 @@ int ipv6_recv_error(struct sock *sk, str ipv6_iface_scope_id(&sin->sin6_addr, IP6CB(skb)->iif); } else { @@ -250,7 +250,7 @@ &sin->sin6_addr); sin->sin6_scope_id = 0; } -@@ -773,12 +773,12 @@ int ip6_datagram_send_ctl(struct net *ne +@@ -772,12 +772,12 @@ int ip6_datagram_send_ctl(struct net *ne } if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { @@ -664,7 +664,7 @@ #define IP6_MF 0x0001 #define IP6_OFFSET 0xFFF8 -@@ -418,8 +418,8 @@ static inline void __ipv6_addr_set_half( +@@ -411,8 +411,8 @@ static inline void __ipv6_addr_set_half( } #endif #endif @@ -675,7 +675,7 @@ } static inline void ipv6_addr_set(struct in6_addr *addr, -@@ -478,6 +478,8 @@ static inline bool ipv6_prefix_equal(con +@@ -471,6 +471,8 @@ static inline bool ipv6_prefix_equal(con const __be32 *a1 = addr1->s6_addr32; const __be32 *a2 = addr2->s6_addr32; unsigned int pdw, pbi; @@ -684,7 +684,7 @@ /* check complete u32 in prefix */ pdw = prefixlen >> 5; -@@ -486,7 +488,9 @@ static inline bool ipv6_prefix_equal(con +@@ -479,7 +481,9 @@ static inline bool ipv6_prefix_equal(con /* check incomplete u32 in prefix */ pbi = prefixlen & 0x1f; @@ -695,7 +695,7 @@ return false; return true; -@@ -630,13 +634,13 @@ static inline void ipv6_addr_set_v4mappe +@@ -608,13 +612,13 @@ static inline void ipv6_addr_set_v4mappe */ static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen) { @@ -711,7 +711,7 @@ if (xb) return i * 32 + 31 - __fls(ntohl(xb)); } -@@ -805,17 +809,18 @@ static inline int ip6_default_np_autolab +@@ -783,17 +787,18 @@ static inline int ip6_default_np_autolab static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass, __be32 flowlabel) { @@ -814,7 +814,7 @@ static struct fib6_node *node_alloc(void) --- a/net/netfilter/nf_conntrack_proto_tcp.c +++ b/net/netfilter/nf_conntrack_proto_tcp.c -@@ -456,7 +456,7 @@ static void tcp_sack(const struct sk_buf +@@ -458,7 +458,7 @@ static void tcp_sack(const struct sk_buf /* Fast path for timestamp-only option */ if (length == TCPOLEN_TSTAMP_ALIGNED @@ -838,7 +838,7 @@ --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -3836,14 +3836,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -3852,14 +3852,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/bcm53xx/patches-4.4/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-4.4/180-usb-xhci-add-support-for-performing-fake-doorbell.patch index 4f41c35eee..7c8b7d265b 100644 --- a/target/linux/bcm53xx/patches-4.4/180-usb-xhci-add-support-for-performing-fake-doorbell.patch +++ b/target/linux/bcm53xx/patches-4.4/180-usb-xhci-add-support-for-performing-fake-doorbell.patch @@ -40,7 +40,7 @@ it on BCM4708 family. /* called during probe() after chip reset completes */ --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -152,6 +152,49 @@ static int xhci_start(struct xhci_hcd *x +@@ -150,6 +150,49 @@ static int xhci_start(struct xhci_hcd *x return ret; } @@ -90,7 +90,7 @@ it on BCM4708 family. /* * Reset a halted HC. * -@@ -568,10 +611,20 @@ int xhci_init(struct usb_hcd *hcd) +@@ -566,10 +609,20 @@ int xhci_init(struct usb_hcd *hcd) static int xhci_run_finished(struct xhci_hcd *xhci) { @@ -114,7 +114,7 @@ it on BCM4708 family. xhci->shared_hcd->state = HC_STATE_RUNNING; xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; -@@ -581,6 +634,10 @@ static int xhci_run_finished(struct xhci +@@ -579,6 +632,10 @@ static int xhci_run_finished(struct xhci xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_run for USB3 roothub"); return 0; @@ -127,7 +127,7 @@ it on BCM4708 family. /* --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1639,6 +1639,7 @@ struct xhci_hcd { +@@ -1640,6 +1640,7 @@ struct xhci_hcd { #define XHCI_BROKEN_STREAMS (1 << 19) #define XHCI_PME_STUCK_QUIRK (1 << 20) #define XHCI_MISSING_CAS (1 << 24) diff --git a/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch b/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch index af4451485c..823d761d1e 100644 --- a/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch +++ b/target/linux/brcm2708/patches-4.4/0003-vmstat-Workaround-for-issue-where-dirty-page-count-g.patch @@ -13,7 +13,7 @@ http://www.spinics.net/lists/linux-mm/msg72236.html --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h -@@ -219,7 +219,11 @@ static inline void __inc_zone_state(stru +@@ -220,7 +220,11 @@ static inline void __inc_zone_state(stru static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) { atomic_long_dec(&zone->vm_stat[item]); diff --git a/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch b/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch index 3bd0628a39..2a0934e34c 100644 --- a/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch +++ b/target/linux/brcm2708/patches-4.4/0012-spi-bcm2835-Support-pin-groups-other-than-7-11.patch @@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c -@@ -688,6 +688,8 @@ static int bcm2835_spi_setup(struct spi_ +@@ -686,6 +686,8 @@ static int bcm2835_spi_setup(struct spi_ { int err; struct gpio_chip *chip; @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> /* * sanity checking the native-chipselects */ -@@ -704,15 +706,42 @@ static int bcm2835_spi_setup(struct spi_ +@@ -702,15 +704,42 @@ static int bcm2835_spi_setup(struct spi_ "setup: only two native chip-selects are supported\n"); return -EINVAL; } diff --git a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch index 1651c55545..3acc5b3b7c 100644 --- a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch +++ b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch @@ -659,7 +659,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5007,7 +5007,7 @@ static void port_event(struct usb_hub *h +@@ -5014,7 +5014,7 @@ static void port_event(struct usb_hub *h if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; @@ -670,7 +670,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function msleep(100); /* Cool down */ --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -1924,6 +1924,85 @@ free_interfaces: +@@ -1925,6 +1925,85 @@ free_interfaces: if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); diff --git a/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch b/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch index 8a87dd1911..02549dbe2c 100644 --- a/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch +++ b/target/linux/brcm2708/patches-4.4/0053-fbdev-add-FBIOCOPYAREA-ioctl.patch @@ -17,7 +17,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c -@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank +@@ -1091,6 +1091,25 @@ fb_blank(struct fb_info *info, int blank } EXPORT_SYMBOL(fb_blank); @@ -43,7 +43,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) { -@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info * +@@ -1101,6 +1120,7 @@ static long do_fb_ioctl(struct fb_info * struct fb_cmap cmap_from; struct fb_cmap_user cmap; struct fb_event event; @@ -51,7 +51,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> void __user *argp = (void __user *)arg; long ret = 0; -@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info * +@@ -1218,6 +1238,15 @@ static long do_fb_ioctl(struct fb_info * unlock_fb_info(info); console_unlock(); break; @@ -67,7 +67,7 @@ Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> default: if (!lock_fb_info(info)) return -ENODEV; -@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file +@@ -1372,6 +1401,7 @@ static long fb_compat_ioctl(struct file case FBIOPAN_DISPLAY: case FBIOGET_CON2FBMAP: case FBIOPUT_CON2FBMAP: diff --git a/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch b/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch index dd20fc0860..dcad856304 100644 --- a/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch +++ b/target/linux/brcm2708/patches-4.4/0348-mmc-Add-MMC_QUIRK_ERASE_BROKEN-for-some-cards.patch @@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -2553,6 +2553,13 @@ static const struct mmc_fixup blk_fixups +@@ -2547,6 +2547,13 @@ static const struct mmc_fixup blk_fixups MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc, MMC_QUIRK_TRIM_BROKEN), @@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -2253,7 +2253,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -2257,7 +2257,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { if ((card->host->caps & MMC_CAP_ERASE) && diff --git a/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch b/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch index 60febcc17c..12806de27b 100644 --- a/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch +++ b/target/linux/brcm2708/patches-4.4/0350-mmc-Apply-QUIRK_BROKEN_ERASE-to-other-capacities.patch @@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -2559,6 +2559,10 @@ static const struct mmc_fixup blk_fixups +@@ -2553,6 +2553,10 @@ static const struct mmc_fixup blk_fixups */ MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk_mmc, MMC_QUIRK_ERASE_BROKEN), diff --git a/target/linux/brcm2708/patches-4.4/0351-mmc-Add-card_quirks-module-parameter-log-quirks.patch b/target/linux/brcm2708/patches-4.4/0351-mmc-Add-card_quirks-module-parameter-log-quirks.patch index f68fd479cc..95c884b912 100644 --- a/target/linux/brcm2708/patches-4.4/0351-mmc-Add-card_quirks-module-parameter-log-quirks.patch +++ b/target/linux/brcm2708/patches-4.4/0351-mmc-Add-card_quirks-module-parameter-log-quirks.patch @@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -137,6 +137,13 @@ enum { +@@ -134,6 +134,13 @@ enum { module_param(perdev_minors, int, 0444); MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device"); @@ -31,7 +31,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> static inline int mmc_blk_part_switch(struct mmc_card *card, struct mmc_blk_data *md); static int get_card_status(struct mmc_card *card, u32 *status, int retries); -@@ -2571,6 +2578,7 @@ static int mmc_blk_probe(struct mmc_card +@@ -2565,6 +2572,7 @@ static int mmc_blk_probe(struct mmc_card { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> /* * Check that the card supports the command class(es) we need. -@@ -2578,7 +2586,16 @@ static int mmc_blk_probe(struct mmc_card +@@ -2572,7 +2580,16 @@ static int mmc_blk_probe(struct mmc_card if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -57,7 +57,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> md = mmc_blk_alloc(card); if (IS_ERR(md)) -@@ -2586,9 +2603,14 @@ static int mmc_blk_probe(struct mmc_card +@@ -2580,9 +2597,14 @@ static int mmc_blk_probe(struct mmc_card string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2, cap_str, sizeof(cap_str)); diff --git a/target/linux/brcm2708/patches-4.4/0412-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch b/target/linux/brcm2708/patches-4.4/0412-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch index 92c02d8e2d..18e069d989 100644 --- a/target/linux/brcm2708/patches-4.4/0412-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch +++ b/target/linux/brcm2708/patches-4.4/0412-mmc-Apply-ERASE_BROKEN-quirks-correctly.patch @@ -10,7 +10,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -2564,12 +2564,9 @@ static const struct mmc_fixup blk_fixups +@@ -2558,12 +2558,9 @@ static const struct mmc_fixup blk_fixups * On some Kingston SD cards, multiple erases of less than 64 * sectors can cause corruption. */ diff --git a/target/linux/brcm2708/patches-4.4/0419-spi-bcm2835-Disable-forced-software-CS.patch b/target/linux/brcm2708/patches-4.4/0419-spi-bcm2835-Disable-forced-software-CS.patch index e9beb0314a..6f365dd9fc 100644 --- a/target/linux/brcm2708/patches-4.4/0419-spi-bcm2835-Disable-forced-software-CS.patch +++ b/target/linux/brcm2708/patches-4.4/0419-spi-bcm2835-Disable-forced-software-CS.patch @@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> i2c0: i2c@7e205000 { --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c -@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_ +@@ -705,6 +705,7 @@ static int bcm2835_spi_setup(struct spi_ return -EINVAL; } @@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> /* now translate native cs to GPIO */ /* first look for chip select pins in the devices pin groups */ for (pingroup_index = 0; -@@ -761,6 +762,7 @@ static int bcm2835_spi_setup(struct spi_ +@@ -759,6 +760,7 @@ static int bcm2835_spi_setup(struct spi_ * so we are setting it here explicitly */ gpio_set_value(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? 0 : 1); diff --git a/target/linux/brcm2708/patches-4.4/0498-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch b/target/linux/brcm2708/patches-4.4/0498-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch index 4b9ee5d211..e7df4ca801 100644 --- a/target/linux/brcm2708/patches-4.4/0498-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch +++ b/target/linux/brcm2708/patches-4.4/0498-fbmem-Ensure-that-parameters-are-properly-checked-wi.patch @@ -10,7 +10,7 @@ Subject: [PATCH] fbmem: Ensure that parameters are properly checked within --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c -@@ -1090,7 +1090,13 @@ static int fb_copyarea_user(struct fb_in +@@ -1097,7 +1097,13 @@ static int fb_copyarea_user(struct fb_in int ret = 0; if (!lock_fb_info(info)) return -ENODEV; diff --git a/target/linux/brcm2708/patches-4.4/0530-spi-bcm2835-Remove-unused-code.patch b/target/linux/brcm2708/patches-4.4/0530-spi-bcm2835-Remove-unused-code.patch index 46466c8e27..038f207440 100644 --- a/target/linux/brcm2708/patches-4.4/0530-spi-bcm2835-Remove-unused-code.patch +++ b/target/linux/brcm2708/patches-4.4/0530-spi-bcm2835-Remove-unused-code.patch @@ -9,7 +9,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c -@@ -679,17 +679,8 @@ static void bcm2835_spi_set_cs(struct sp +@@ -677,17 +677,8 @@ static void bcm2835_spi_set_cs(struct sp bcm2835_wr(bs, BCM2835_SPI_CS, cs); } @@ -27,7 +27,7 @@ Subject: [PATCH] spi-bcm2835: Remove unused code /* * sanity checking the native-chipselects */ -@@ -707,63 +698,6 @@ static int bcm2835_spi_setup(struct spi_ +@@ -705,63 +696,6 @@ static int bcm2835_spi_setup(struct spi_ return -EINVAL; } diff --git a/target/linux/cns3xxx/patches-4.4/060-pcie_abort.patch b/target/linux/cns3xxx/patches-4.4/060-pcie_abort.patch index 7a3a8e4c25..87b1526c3a 100644 --- a/target/linux/cns3xxx/patches-4.4/060-pcie_abort.patch +++ b/target/linux/cns3xxx/patches-4.4/060-pcie_abort.patch @@ -1,7 +1,7 @@ --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c @@ -86,6 +86,79 @@ static void __iomem *cns3xxx_pci_map_bus - return base + (where & 0xffc) + (devfn << 12); + return base + where + (devfn << 12); } +static inline int check_master_abort(struct pci_bus *bus, unsigned int devfn, int where) @@ -82,7 +82,7 @@ { @@ -95,6 +168,11 @@ static int cns3xxx_pci_read_config(struc - ret = pci_generic_config_read32(bus, devfn, where, size, val); + ret = pci_generic_config_read(bus, devfn, where, size, val); + if (check_master_abort(bus, devfn, where)) { + printk(KERN_ERR "pci error: %04d:%02x:%02x.%02x %02x(%d)= master_abort on read\n", pci_domain_nr(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size); diff --git a/target/linux/cns3xxx/patches-4.4/075-spi_support.patch b/target/linux/cns3xxx/patches-4.4/075-spi_support.patch index b575b1c84d..d3b9a65fea 100644 --- a/target/linux/cns3xxx/patches-4.4/075-spi_support.patch +++ b/target/linux/cns3xxx/patches-4.4/075-spi_support.patch @@ -39,7 +39,7 @@ /** --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -939,6 +939,9 @@ static int spi_transfer_one_message(stru +@@ -941,6 +941,9 @@ static int spi_transfer_one_message(stru list_for_each_entry(xfer, &msg->transfers, transfer_list) { trace_spi_transfer_start(msg, xfer); diff --git a/target/linux/generic/config-4.4 b/target/linux/generic/config-4.4 index 4a0bb1f63f..997d332061 100644 --- a/target/linux/generic/config-4.4 +++ b/target/linux/generic/config-4.4 @@ -1891,6 +1891,7 @@ CONFIG_LBDAF=y # CONFIG_LCD_S6E63M0 is not set # CONFIG_LCD_TDO24M is not set # CONFIG_LCD_VGG2432A4 is not set +CONFIG_LDISC_AUTOLOAD=y # CONFIG_LDM_PARTITION is not set # CONFIG_LEDS_BCM6328 is not set # CONFIG_LEDS_BCM6358 is not set diff --git a/target/linux/generic/patches-4.4/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/patches-4.4/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch deleted file mode 100644 index a75ddfc4d9..0000000000 --- a/target/linux/generic/patches-4.4/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch +++ /dev/null @@ -1,40 +0,0 @@ -From e9156cd26a495a18706e796f02a81fee41ec14f4 Mon Sep 17 00:00:00 2001 -From: James Hughes <james.hughes@raspberrypi.org> -Date: Wed, 19 Apr 2017 11:13:40 +0100 -Subject: [PATCH] smsc95xx: Use skb_cow_head to deal with cloned skbs - -The driver was failing to check that the SKB wasn't cloned -before adding checksum data. -Replace existing handling to extend/copy the header buffer -with skb_cow_head. - -Signed-off-by: James Hughes <james.hughes@raspberrypi.org> -Acked-by: Eric Dumazet <edumazet@google.com> -Acked-by: Woojung Huh <Woojung.Huh@microchip.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/usb/smsc95xx.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - ---- a/drivers/net/usb/smsc95xx.c -+++ b/drivers/net/usb/smsc95xx.c -@@ -1838,13 +1838,13 @@ static struct sk_buff *smsc95xx_tx_fixup - /* We do not advertise SG, so skbs should be already linearized */ - BUG_ON(skb_shinfo(skb)->nr_frags); - -- if (skb_headroom(skb) < overhead) { -- struct sk_buff *skb2 = skb_copy_expand(skb, -- overhead, 0, flags); -+ /* Make writable and expand header space by overhead if required */ -+ if (skb_cow_head(skb, overhead)) { -+ /* Must deallocate here as returning NULL to indicate error -+ * means the skb won't be deallocated in the caller. -+ */ - dev_kfree_skb_any(skb); -- skb = skb2; -- if (!skb) -- return NULL; -+ return NULL; - } - - if (csum) { diff --git a/target/linux/generic/patches-4.4/030-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/patches-4.4/030-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch deleted file mode 100644 index 2e8bba57e0..0000000000 --- a/target/linux/generic/patches-4.4/030-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 Mon Sep 17 00:00:00 2001 -From: Eric Dumazet <edumazet@google.com> -Date: Wed, 19 Apr 2017 09:59:25 -0700 -Subject: [PATCH] ch9200: use skb_cow_head() to deal with cloned skbs - -We need to ensure there is enough headroom to push extra header, -but we also need to check if we are allowed to change headers. - -skb_cow_head() is the proper helper to deal with this. - -Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices") -Signed-off-by: Eric Dumazet <edumazet@google.com> -Cc: James Hughes <james.hughes@raspberrypi.org> -Cc: Matthew Garrett <mjg59@srcf.ucam.org> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/usb/ch9200.c | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - ---- a/drivers/net/usb/ch9200.c -+++ b/drivers/net/usb/ch9200.c -@@ -255,14 +255,9 @@ static struct sk_buff *ch9200_tx_fixup(s - tx_overhead = 0x40; - - len = skb->len; -- if (skb_headroom(skb) < tx_overhead) { -- struct sk_buff *skb2; -- -- skb2 = skb_copy_expand(skb, tx_overhead, 0, flags); -+ if (skb_cow_head(skb, tx_overhead)) { - dev_kfree_skb_any(skb); -- skb = skb2; -- if (!skb) -- return NULL; -+ return NULL; - } - - __skb_push(skb, tx_overhead); diff --git a/target/linux/generic/patches-4.4/030-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch b/target/linux/generic/patches-4.4/030-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch deleted file mode 100644 index 541c694bec..0000000000 --- a/target/linux/generic/patches-4.4/030-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 39fba7835aacda65284a86e611774cbba71dac20 Mon Sep 17 00:00:00 2001 -From: Eric Dumazet <edumazet@google.com> -Date: Wed, 19 Apr 2017 09:59:26 -0700 -Subject: [PATCH] kaweth: use skb_cow_head() to deal with cloned skbs - -We can use skb_cow_head() to properly deal with clones, -especially the ones coming from TCP stack that allow their head being -modified. This avoids a copy. - -Signed-off-by: Eric Dumazet <edumazet@google.com> -Cc: James Hughes <james.hughes@raspberrypi.org> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/usb/kaweth.c | 18 ++++++------------ - 1 file changed, 6 insertions(+), 12 deletions(-) - ---- a/drivers/net/usb/kaweth.c -+++ b/drivers/net/usb/kaweth.c -@@ -812,18 +812,12 @@ static netdev_tx_t kaweth_start_xmit(str - } - - /* We now decide whether we can put our special header into the sk_buff */ -- if (skb_cloned(skb) || skb_headroom(skb) < 2) { -- /* no such luck - we make our own */ -- struct sk_buff *copied_skb; -- copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC); -- dev_kfree_skb_irq(skb); -- skb = copied_skb; -- if (!copied_skb) { -- kaweth->stats.tx_errors++; -- netif_start_queue(net); -- spin_unlock_irq(&kaweth->device_lock); -- return NETDEV_TX_OK; -- } -+ if (skb_cow_head(skb, 2)) { -+ kaweth->stats.tx_errors++; -+ netif_start_queue(net); -+ spin_unlock_irq(&kaweth->device_lock); -+ dev_kfree_skb_any(skb); -+ return NETDEV_TX_OK; - } - - private_header = (__le16 *)__skb_push(skb, 2); diff --git a/target/linux/generic/patches-4.4/080-spi-introduce-accelerated-read-support-for-spi-flash.patch b/target/linux/generic/patches-4.4/080-spi-introduce-accelerated-read-support-for-spi-flash.patch index a717f1cee2..42791ba9a9 100644 --- a/target/linux/generic/patches-4.4/080-spi-introduce-accelerated-read-support-for-spi-flash.patch +++ b/target/linux/generic/patches-4.4/080-spi-introduce-accelerated-read-support-for-spi-flash.patch @@ -24,7 +24,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org> --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -1141,6 +1141,7 @@ static void __spi_pump_messages(struct s +@@ -1143,6 +1143,7 @@ static void __spi_pump_messages(struct s } } @@ -32,7 +32,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org> trace_spi_message_start(master->cur_msg); if (master->prepare_message) { -@@ -1150,6 +1151,7 @@ static void __spi_pump_messages(struct s +@@ -1152,6 +1153,7 @@ static void __spi_pump_messages(struct s "failed to prepare message: %d\n", ret); master->cur_msg->status = ret; spi_finalize_current_message(master); @@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org> return; } master->cur_msg_prepared = true; -@@ -1159,6 +1161,7 @@ static void __spi_pump_messages(struct s +@@ -1161,6 +1163,7 @@ static void __spi_pump_messages(struct s if (ret) { master->cur_msg->status = ret; spi_finalize_current_message(master); @@ -48,7 +48,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org> return; } -@@ -1166,8 +1169,10 @@ static void __spi_pump_messages(struct s +@@ -1168,8 +1171,10 @@ static void __spi_pump_messages(struct s if (ret) { dev_err(&master->dev, "failed to transfer one message from queue\n"); @@ -59,7 +59,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org> } /** -@@ -2335,6 +2340,46 @@ int spi_async_locked(struct spi_device * +@@ -2337,6 +2342,46 @@ int spi_async_locked(struct spi_device * EXPORT_SYMBOL_GPL(spi_async_locked); diff --git a/target/linux/generic/patches-4.4/092-MIPS-ZBOOT-copy-appended-dtb-to-the-end-of-the-kerne.patch b/target/linux/generic/patches-4.4/092-MIPS-ZBOOT-copy-appended-dtb-to-the-end-of-the-kerne.patch index 78188dd298..a23a8d00fd 100644 --- a/target/linux/generic/patches-4.4/092-MIPS-ZBOOT-copy-appended-dtb-to-the-end-of-the-kerne.patch +++ b/target/linux/generic/patches-4.4/092-MIPS-ZBOOT-copy-appended-dtb-to-the-end-of-the-kerne.patch @@ -27,7 +27,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org> --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2753,10 +2753,10 @@ choice +@@ -2756,10 +2756,10 @@ choice the documented boot protocol using a device tree. config MIPS_RAW_APPENDED_DTB @@ -40,7 +40,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org> (e.g. cat vmlinux.bin <filename>.dtb > vmlinux_w_dtb). This is meant as a backward compatibility convenience for those -@@ -2768,24 +2768,6 @@ choice +@@ -2771,24 +2771,6 @@ choice look like a DTB header after a reboot if no actual DTB is appended to vmlinux.bin. Do not leave this option active in a production kernel if you don't intend to always append a DTB. diff --git a/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch b/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch deleted file mode 100644 index 6b48e8c305..0000000000 --- a/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch +++ /dev/null @@ -1,24 +0,0 @@ -From cd4b1e34655d46950c065d9284b596cd8d7b28cd Mon Sep 17 00:00:00 2001 -From: John Youn <johnyoun@synopsys.com> -Date: Thu, 3 Nov 2016 17:55:45 -0700 -Subject: [PATCH] usb: dwc2: Remove unnecessary kfree - -This shouldn't be freed by the HCD as it is owned by the core and -allocated with devm_kzalloc. - -Signed-off-by: John Youn <johnyoun@synopsys.com> -Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> ---- - drivers/usb/dwc2/hcd.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/drivers/usb/dwc2/hcd.c -+++ b/drivers/usb/dwc2/hcd.c -@@ -3164,7 +3164,6 @@ error3: - error2: - usb_put_hcd(hcd); - error1: -- kfree(hsotg->core_params); - - #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS - kfree(hsotg->last_frame_num_array); diff --git a/target/linux/generic/patches-4.4/099-0007-qmi_wwan-add-support-for-Quectel-EC21-and-EC25.patch b/target/linux/generic/patches-4.4/099-0007-qmi_wwan-add-support-for-Quectel-EC21-and-EC25.patch index 016d876713..a5f5492f08 100644 --- a/target/linux/generic/patches-4.4/099-0007-qmi_wwan-add-support-for-Quectel-EC21-and-EC25.patch +++ b/target/linux/generic/patches-4.4/099-0007-qmi_wwan-add-support-for-Quectel-EC21-and-EC25.patch @@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /* Gobi 1000 QMI/wwan interface number is 3 according to qcserial */ #define QMI_GOBI1K_DEVICE(vend, prod) \ QMI_FIXED_INTF(vend, prod, 3) -@@ -915,6 +939,8 @@ static const struct usb_device_id produc +@@ -916,6 +940,8 @@ static const struct usb_device_id produc {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */ {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */ diff --git a/target/linux/generic/patches-4.4/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch b/target/linux/generic/patches-4.4/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch deleted file mode 100644 index 458515a0b5..0000000000 --- a/target/linux/generic/patches-4.4/100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 03556dab1cb02d85b50d7be3ee3a3bac001f5991 Mon Sep 17 00:00:00 2001 -From: Koen Vandeputte <koen.vandeputte@ncentric.com> -Date: Tue, 18 Dec 2018 12:14:06 +0100 -Subject: [PATCH] arm: cns3xxx: fix writing to wrong PCI registers after - alignment - -Originally, cns3xxx used it's own functions for mapping, reading and writing registers. - -Commit 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors") -removed the internal PCI config write function in favor of the generic one: - -cns3xxx_pci_write_config() --> pci_generic_config_write() - -cns3xxx_pci_write_config() expected aligned addresses, being produced by cns3xxx_pci_map_bus() -while the generic one pci_generic_config_write() actually expects the real address -as both the function and hardware are capable of byte-aligned writes. - -This currently leads to pci_generic_config_write() writing -to the wrong registers on some ocasions. - -First issue seen due to this: - -- driver ath9k gets loaded -- The driver wants to write value 0xA8 to register PCI_LATENCY_TIMER, located at 0x0D -- cns3xxx_pci_map_bus() aligns the address to 0x0C -- pci_generic_config_write() effectively writes 0xA8 into register 0x0C (CACHE_LINE_SIZE) - -This seems to cause some slight instability when certain PCI devices are used. - -Another issue example caused by this this is the PCI bus numbering, -where the primary bus is higher than the secondary, which is impossible. - -Before: - -00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode]) - Flags: bus master, fast devsel, latency 0, IRQ 255 - Bus: primary=02, secondary=01, subordinate=ff, sec-latency=0 - -After fix: - -00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode]) - Flags: bus master, fast devsel, latency 0, IRQ 255 - Bus: primary=00, secondary=01, subordinate=02, sec-latency=0 - -And very likely some more .. - -Fix all by omitting the alignment being done in the mapping function. - -Fixes: 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors") -Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> -CC: Arnd Bergmann <arnd@arndb.de> -CC: Bjorn Helgaas <bhelgaas@google.com> -CC: Krzysztof Halasa <khalasa@piap.pl> -CC: Olof Johansson <olof@lixom.net> -CC: Robin Leblon <robin.leblon@ncentric.com> -CC: Rob Herring <robh@kernel.org> -CC: Russell King <linux@armlinux.org.uk> -CC: Tim Harvey <tharvey@gateworks.com> -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, - } else /* remote PCI bus */ - base = cnspci->cfg1_regs + ((busno & 0xf) << 20); - -- return base + (where & 0xffc) + (devfn << 12); -+ return base + where + (devfn << 12); - } - - static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn, --- -2.17.1 - diff --git a/target/linux/generic/patches-4.4/107-arm-cns3xxx-use-actual-size-reads-for-PCIe.patch b/target/linux/generic/patches-4.4/107-arm-cns3xxx-use-actual-size-reads-for-PCIe.patch index 44ca833705..2b3384391a 100644 --- a/target/linux/generic/patches-4.4/107-arm-cns3xxx-use-actual-size-reads-for-PCIe.patch +++ b/target/linux/generic/patches-4.4/107-arm-cns3xxx-use-actual-size-reads-for-PCIe.patch @@ -33,11 +33,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 5e11ad3164e0..95a11d5b3587 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c -@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn, +@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struc u32 mask = (0x1ull << (size * 8)) - 1; int shift = (where % 4) * 8; @@ -46,6 +44,3 @@ index 5e11ad3164e0..95a11d5b3587 100644 if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn && (where & 0xffc) == PCI_CLASS_REVISION) --- -2.17.1 - diff --git a/target/linux/generic/patches-4.4/132-mips_inline_dma_ops.patch b/target/linux/generic/patches-4.4/132-mips_inline_dma_ops.patch index 143b0bb3ff..535ab915b2 100644 --- a/target/linux/generic/patches-4.4/132-mips_inline_dma_ops.patch +++ b/target/linux/generic/patches-4.4/132-mips_inline_dma_ops.patch @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1619,6 +1619,7 @@ config CPU_CAVIUM_OCTEON +@@ -1622,6 +1622,7 @@ config CPU_CAVIUM_OCTEON select USB_EHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN select MIPS_L1_CACHE_SHIFT_7 @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> help The Cavium Octeon processor is a highly integrated chip containing many ethernet hardware widgets for networking tasks. The processor -@@ -1914,6 +1915,9 @@ config MIPS_MALTA_PM +@@ -1917,6 +1918,9 @@ config MIPS_MALTA_PM bool default y diff --git a/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch b/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch index 0ad684fcea..ed80e6cf97 100644 --- a/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch +++ b/target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch @@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> dmactl |= BIT(DMA_REQUEST_OUTSTANDING); writel(dmactl, &dma->dmactl); -@@ -1046,7 +1046,7 @@ net2280_queue(struct usb_ep *_ep, struct +@@ -1044,7 +1044,7 @@ net2280_queue(struct usb_ep *_ep, struct /* kickstart this i/o queue? */ if (list_empty(&ep->queue) && !ep->stopped && @@ -94,7 +94,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> (readl(&ep->regs->ep_rsp) & BIT(CLEAR_ENDPOINT_HALT)))) { /* use DMA if the endpoint supports it, else pio */ -@@ -1169,7 +1169,7 @@ static void scan_dma_completions(struct +@@ -1167,7 +1167,7 @@ static void scan_dma_completions(struct break; } else if (!ep->is_in && (req->req.length % ep->ep.maxpacket) && @@ -103,7 +103,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> tmp = readl(&ep->regs->ep_stat); /* AVOID TROUBLE HERE by not issuing short reads from -@@ -1367,7 +1367,7 @@ net2280_set_halt_and_wedge(struct usb_ep +@@ -1365,7 +1365,7 @@ net2280_set_halt_and_wedge(struct usb_ep ep->wedged = 1; } else { clear_halt(ep); @@ -112,7 +112,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> !list_empty(&ep->queue) && ep->td_dma) restart_dma(ep); ep->wedged = 0; -@@ -2397,7 +2397,7 @@ static int net2280_start(struct usb_gadg +@@ -2395,7 +2395,7 @@ static int net2280_start(struct usb_gadg */ net2280_led_active(dev, 1); @@ -121,7 +121,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> defect7374_enable_data_eps_zero(dev); ep0_start(dev); -@@ -3066,7 +3066,7 @@ static void handle_stat0_irqs(struct net +@@ -3064,7 +3064,7 @@ static void handle_stat0_irqs(struct net } ep->stopped = 0; dev->protocol_stall = 0; @@ -130,7 +130,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> if (ep->dev->quirks & PLX_2280) tmp = BIT(FIFO_OVERFLOW) | BIT(FIFO_UNDERFLOW); -@@ -3093,7 +3093,7 @@ static void handle_stat0_irqs(struct net +@@ -3091,7 +3091,7 @@ static void handle_stat0_irqs(struct net cpu_to_le32s(&u.raw[0]); cpu_to_le32s(&u.raw[1]); @@ -139,7 +139,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> defect7374_workaround(dev, u.r); tmp = 0; -@@ -3176,7 +3176,7 @@ static void handle_stat0_irqs(struct net +@@ -3174,7 +3174,7 @@ static void handle_stat0_irqs(struct net } else { ep_vdbg(dev, "%s clear halt\n", e->ep.name); clear_halt(e); @@ -148,7 +148,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> !list_empty(&e->queue) && e->td_dma) restart_dma(e); } -@@ -3198,7 +3198,7 @@ static void handle_stat0_irqs(struct net +@@ -3196,7 +3196,7 @@ static void handle_stat0_irqs(struct net if (e->ep.name == ep0name) goto do_stall; set_halt(e); @@ -157,7 +157,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> abort_dma(e); allow_status(ep); ep_vdbg(dev, "%s set halt\n", ep->ep.name); -@@ -3237,7 +3237,7 @@ do_stall: +@@ -3235,7 +3235,7 @@ do_stall: #undef w_length next_endpoints: @@ -166,7 +166,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> u32 mask = (BIT(ENDPOINT_0_INTERRUPT) | USB3380_IRQSTAT0_EP_INTR_MASK_IN | USB3380_IRQSTAT0_EP_INTR_MASK_OUT); -@@ -3404,7 +3404,7 @@ __acquires(dev->lock) +@@ -3402,7 +3402,7 @@ __acquires(dev->lock) writel(tmp, &dma->dmastat); /* dma sync*/ @@ -175,7 +175,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> u32 r_dmacount = readl(&dma->dmacount); if (!ep->is_in && (r_dmacount & 0x00FFFFFF) && (tmp & BIT(DMA_TRANSACTION_DONE_INTERRUPT))) -@@ -3473,7 +3473,7 @@ static irqreturn_t net2280_irq(int irq, +@@ -3471,7 +3471,7 @@ static irqreturn_t net2280_irq(int irq, /* control requests and PIO */ handle_stat0_irqs(dev, readl(&dev->regs->irqstat0)); @@ -184,7 +184,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> /* re-enable interrupt to trigger any possible new interrupt */ u32 pciirqenb1 = readl(&dev->regs->pciirqenb1); writel(pciirqenb1 & 0x7FFFFFFF, &dev->regs->pciirqenb1); -@@ -3518,7 +3518,7 @@ static void net2280_remove(struct pci_de +@@ -3516,7 +3516,7 @@ static void net2280_remove(struct pci_de } if (dev->got_irq) free_irq(pdev->irq, dev); @@ -193,7 +193,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> pci_disable_msi(pdev); if (dev->regs) iounmap(dev->regs); -@@ -3598,7 +3598,7 @@ static int net2280_probe(struct pci_dev +@@ -3596,7 +3596,7 @@ static int net2280_probe(struct pci_dev dev->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200); dev->epregs = (struct net2280_ep_regs __iomem *) (base + 0x0300); @@ -202,7 +202,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> u32 fsmvalue; u32 usbstat; dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *) -@@ -3642,7 +3642,7 @@ static int net2280_probe(struct pci_dev +@@ -3640,7 +3640,7 @@ static int net2280_probe(struct pci_dev goto done; } @@ -211,7 +211,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> if (pci_enable_msi(pdev)) ep_err(dev, "Failed to enable MSI mode\n"); -@@ -3760,10 +3760,19 @@ static const struct pci_device_id pci_id +@@ -3758,10 +3758,19 @@ static const struct pci_device_id pci_id .class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe), .class_mask = ~0, .vendor = PCI_VENDOR_ID_PLX, @@ -232,7 +232,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> }, { .class = ((PCI_CLASS_SERIAL_USB << 8) | 0xfe), -@@ -3772,7 +3781,7 @@ static const struct pci_device_id pci_id +@@ -3770,7 +3779,7 @@ static const struct pci_device_id pci_id .device = 0x3382, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, diff --git a/target/linux/generic/patches-4.4/201-extra_optimization.patch b/target/linux/generic/patches-4.4/201-extra_optimization.patch index d9d24263f7..0c54d27bfc 100644 --- a/target/linux/generic/patches-4.4/201-extra_optimization.patch +++ b/target/linux/generic/patches-4.4/201-extra_optimization.patch @@ -4,8 +4,8 @@ KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias) ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE --KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) -+KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) $(EXTRA_OPTIMIZATION) +-KBUILD_CFLAGS += -Os ++KBUILD_CFLAGS += -Os $(EXTRA_OPTIMIZATION) else ifdef CONFIG_PROFILE_ALL_BRANCHES -KBUILD_CFLAGS += -O2 diff --git a/target/linux/generic/patches-4.4/204-module_strip.patch b/target/linux/generic/patches-4.4/204-module_strip.patch index 09c62e29ac..ba105f1817 100644 --- a/target/linux/generic/patches-4.4/204-module_strip.patch +++ b/target/linux/generic/patches-4.4/204-module_strip.patch @@ -123,7 +123,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> set_license(mod, get_modinfo(info, "license")); --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c -@@ -1964,7 +1964,9 @@ static void read_symbols(char *modname) +@@ -1966,7 +1966,9 @@ static void read_symbols(char *modname) symname = remove_dot(info.strtab + sym->st_name); handle_modversions(mod, &info, sym, symname); @@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> } if (!is_vmlinux(modname) || (is_vmlinux(modname) && vmlinux_section_warnings)) -@@ -2108,7 +2110,9 @@ static void add_header(struct buffer *b, +@@ -2110,7 +2112,9 @@ static void add_header(struct buffer *b, buf_printf(b, "#include <linux/vermagic.h>\n"); buf_printf(b, "#include <linux/compiler.h>\n"); buf_printf(b, "\n"); @@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> buf_printf(b, "\n"); buf_printf(b, "__visible struct module __this_module\n"); buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n"); -@@ -2125,8 +2129,10 @@ static void add_header(struct buffer *b, +@@ -2127,8 +2131,10 @@ static void add_header(struct buffer *b, static void add_intree_flag(struct buffer *b, int is_intree) { @@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> } /* Cannot check for assembler */ -@@ -2139,10 +2145,12 @@ static void add_retpoline(struct buffer +@@ -2141,10 +2147,12 @@ static void add_retpoline(struct buffer static void add_staging_flag(struct buffer *b, const char *name) { @@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> } /* In kernel, this size is defined in linux/module.h; -@@ -2246,11 +2254,13 @@ static void add_depends(struct buffer *b +@@ -2248,11 +2256,13 @@ static void add_depends(struct buffer *b static void add_srcversion(struct buffer *b, struct module *mod) { @@ -181,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> } static void write_if_changed(struct buffer *b, const char *fname) -@@ -2485,7 +2495,9 @@ int main(int argc, char **argv) +@@ -2487,7 +2497,9 @@ int main(int argc, char **argv) add_staging_flag(&buf, mod->name); err |= add_versions(&buf, mod); add_depends(&buf, mod, modules); diff --git a/target/linux/generic/patches-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch b/target/linux/generic/patches-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch index 4edc16eb7f..61c4988322 100644 --- a/target/linux/generic/patches-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch +++ b/target/linux/generic/patches-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch @@ -24,20 +24,6 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> /* * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble -@@ -136,11 +137,13 @@ - * This is an Ethernet frame header. - */ - -+#if __UAPI_DEF_ETHHDR - struct ethhdr { - unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ - unsigned char h_source[ETH_ALEN]; /* source ether addr */ - __be16 h_proto; /* packet type ID field */ - } __attribute__((packed)); -+#endif - - - #endif /* _UAPI_LINUX_IF_ETHER_H */ --- a/include/uapi/linux/libc-compat.h +++ b/include/uapi/linux/libc-compat.h @@ -85,6 +85,14 @@ diff --git a/target/linux/generic/patches-4.4/300-mips_expose_boot_raw.patch b/target/linux/generic/patches-4.4/300-mips_expose_boot_raw.patch index 0980c26d50..5ccbb58263 100644 --- a/target/linux/generic/patches-4.4/300-mips_expose_boot_raw.patch +++ b/target/linux/generic/patches-4.4/300-mips_expose_boot_raw.patch @@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net> --- --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1033,9 +1033,6 @@ config FW_ARC +@@ -1036,9 +1036,6 @@ config FW_ARC config ARCH_MAY_HAVE_PC_FDC bool @@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net> config CEVT_BCM1480 bool -@@ -2793,6 +2790,18 @@ choice +@@ -2796,6 +2793,18 @@ choice bool "Bootloader kernel arguments if available" endchoice diff --git a/target/linux/generic/patches-4.4/301-mips_image_cmdline_hack.patch b/target/linux/generic/patches-4.4/301-mips_image_cmdline_hack.patch index 625a84c814..93730d9f73 100644 --- a/target/linux/generic/patches-4.4/301-mips_image_cmdline_hack.patch +++ b/target/linux/generic/patches-4.4/301-mips_image_cmdline_hack.patch @@ -1,6 +1,6 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -1124,6 +1124,10 @@ config SYNC_R4K +@@ -1127,6 +1127,10 @@ config SYNC_R4K config MIPS_MACHINE def_bool n diff --git a/target/linux/generic/patches-4.4/304-mips_disable_fpu.patch b/target/linux/generic/patches-4.4/304-mips_disable_fpu.patch index 60b576c1a4..ed4a0c5d2f 100644 --- a/target/linux/generic/patches-4.4/304-mips_disable_fpu.patch +++ b/target/linux/generic/patches-4.4/304-mips_disable_fpu.patch @@ -26,7 +26,7 @@ v2: incorporated changes suggested by Jonas Gorski --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2725,6 +2725,20 @@ config MIPS_O32_FP64_SUPPORT +@@ -2728,6 +2728,20 @@ config MIPS_O32_FP64_SUPPORT If unsure, say N. diff --git a/target/linux/generic/patches-4.4/332-arc-add-OWRTDTB-section.patch b/target/linux/generic/patches-4.4/332-arc-add-OWRTDTB-section.patch index 5a2b67cfcd..a24fc573c1 100644 --- a/target/linux/generic/patches-4.4/332-arc-add-OWRTDTB-section.patch +++ b/target/linux/generic/patches-4.4/332-arc-add-OWRTDTB-section.patch @@ -21,8 +21,8 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> --- a/arch/arc/kernel/head.S +++ b/arch/arc/kernel/head.S -@@ -49,6 +49,16 @@ - 1: +@@ -59,6 +59,16 @@ + #endif .endm +; Here "patch-dtb" will embed external .dtb diff --git a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch index bde7a986c7..ecdaadc183 100644 --- a/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch +++ b/target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch @@ -206,7 +206,7 @@ +} --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c -@@ -373,14 +373,41 @@ static int __init init_jffs2_fs(void) +@@ -377,14 +377,41 @@ static int __init init_jffs2_fs(void) BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68); BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32); diff --git a/target/linux/generic/patches-4.4/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/patches-4.4/613-netfilter_optional_tcp_window_check.patch index 3740dd74e5..d83485c790 100644 --- a/target/linux/generic/patches-4.4/613-netfilter_optional_tcp_window_check.patch +++ b/target/linux/generic/patches-4.4/613-netfilter_optional_tcp_window_check.patch @@ -10,7 +10,7 @@ /* "Be conservative in what you do, be liberal in what you accept from others." If it's non-zero, we mark only out of window RST segments as INVALID. */ -@@ -515,6 +518,9 @@ static bool tcp_in_window(const struct n +@@ -519,6 +522,9 @@ static bool tcp_in_window(const struct n s32 receiver_offset; bool res, in_recv_win; @@ -20,7 +20,7 @@ /* * Get the required data from the packet. */ -@@ -1481,6 +1487,13 @@ static struct ctl_table tcp_sysctl_table +@@ -1485,6 +1491,13 @@ static struct ctl_table tcp_sysctl_table .mode = 0644, .proc_handler = proc_dointvec, }, diff --git a/target/linux/generic/patches-4.4/630-packet_socket_type.patch b/target/linux/generic/patches-4.4/630-packet_socket_type.patch index 359b151020..9165a82d91 100644 --- a/target/linux/generic/patches-4.4/630-packet_socket_type.patch +++ b/target/linux/generic/patches-4.4/630-packet_socket_type.patch @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -3139,6 +3141,7 @@ static int packet_create(struct net *net +@@ -3148,6 +3150,7 @@ static int packet_create(struct net *net mutex_init(&po->pg_vec_lock); po->rollover = NULL; po->prot_hook.func = packet_rcv; @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3797,6 +3800,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3806,6 +3809,16 @@ packet_setsockopt(struct socket *sock, i po->xmit = val ? packet_direct_xmit : dev_queue_xmit; return 0; } @@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> default: return -ENOPROTOOPT; } -@@ -3849,6 +3862,13 @@ static int packet_getsockopt(struct sock +@@ -3858,6 +3871,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; diff --git a/target/linux/generic/patches-4.4/642-bridge_port_isolate.patch b/target/linux/generic/patches-4.4/642-bridge_port_isolate.patch index 02dfea4659..f6383015a9 100644 --- a/target/linux/generic/patches-4.4/642-bridge_port_isolate.patch +++ b/target/linux/generic/patches-4.4/642-bridge_port_isolate.patch @@ -61,7 +61,7 @@ Isolating individual bridge ports skb = NULL; --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c -@@ -141,7 +141,7 @@ EXPORT_SYMBOL_GPL(br_deliver); +@@ -140,7 +140,7 @@ EXPORT_SYMBOL_GPL(br_deliver); /* called with rcu_read_lock */ void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0) { @@ -70,7 +70,7 @@ Isolating individual bridge ports if (skb0) deliver_clone(to, skb, __br_forward); else -@@ -197,7 +197,7 @@ static void br_flood(struct net_bridge * +@@ -196,7 +196,7 @@ static void br_flood(struct net_bridge * struct sk_buff *skb0, void (*__packet_hook)(const struct net_bridge_port *p, struct sk_buff *skb), @@ -79,7 +79,7 @@ Isolating individual bridge ports { struct net_bridge_port *p; struct net_bridge_port *prev; -@@ -205,6 +205,8 @@ static void br_flood(struct net_bridge * +@@ -204,6 +204,8 @@ static void br_flood(struct net_bridge * prev = NULL; list_for_each_entry_rcu(p, &br->port_list, list) { @@ -88,7 +88,7 @@ Isolating individual bridge ports /* Do not flood unicast traffic to ports that turn it off */ if (unicast && !(p->flags & BR_FLOOD)) continue; -@@ -239,14 +241,14 @@ out: +@@ -238,14 +240,14 @@ out: /* called with rcu_read_lock */ void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast) { diff --git a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch index ca23150d7d..1b7287278f 100644 --- a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch +++ b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch @@ -172,7 +172,7 @@ Implement optinal multicast->unicast conversion for igmp snooping if (err) break; } -@@ -1439,7 +1465,8 @@ br_multicast_leave_group(struct net_brid +@@ -1432,7 +1458,8 @@ br_multicast_leave_group(struct net_brid struct net_bridge_port *port, struct br_ip *group, struct bridge_mcast_other_query *other_query, @@ -182,7 +182,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct net_bridge_mdb_htable *mdb; struct net_bridge_mdb_entry *mp; -@@ -1463,7 +1490,7 @@ br_multicast_leave_group(struct net_brid +@@ -1456,7 +1483,7 @@ br_multicast_leave_group(struct net_brid for (pp = &mp->ports; (p = mlock_dereference(*pp, br)) != NULL; pp = &p->next) { @@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping continue; rcu_assign_pointer(*pp, p->next); -@@ -1526,7 +1553,7 @@ br_multicast_leave_group(struct net_brid +@@ -1519,7 +1546,7 @@ br_multicast_leave_group(struct net_brid for (p = mlock_dereference(mp->ports, br); p != NULL; p = mlock_dereference(p->next, br)) { @@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping continue; if (!hlist_unhashed(&p->mglist) && -@@ -1544,8 +1571,8 @@ out: +@@ -1537,8 +1564,8 @@ out: static void br_ip4_multicast_leave_group(struct net_bridge *br, struct net_bridge_port *port, @@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1560,14 +1587,14 @@ static void br_ip4_multicast_leave_group +@@ -1553,14 +1580,14 @@ static void br_ip4_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query, @@ -228,7 +228,7 @@ Implement optinal multicast->unicast conversion for igmp snooping { struct br_ip br_group; struct bridge_mcast_own_query *own_query; -@@ -1582,7 +1609,7 @@ static void br_ip6_multicast_leave_group +@@ -1575,7 +1602,7 @@ static void br_ip6_multicast_leave_group br_group.vid = vid; br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query, @@ -237,7 +237,7 @@ Implement optinal multicast->unicast conversion for igmp snooping } #endif -@@ -1591,6 +1618,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1584,6 +1611,7 @@ static int br_multicast_ipv4_rcv(struct struct sk_buff *skb, u16 vid) { @@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping struct sk_buff *skb_trimmed = NULL; struct igmphdr *ih; int err; -@@ -1607,12 +1635,13 @@ static int br_multicast_ipv4_rcv(struct +@@ -1600,12 +1628,13 @@ static int br_multicast_ipv4_rcv(struct BR_INPUT_SKB_CB(skb)->igmp = 1; ih = igmp_hdr(skb); @@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; case IGMPV3_HOST_MEMBERSHIP_REPORT: err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid); -@@ -1621,7 +1650,7 @@ static int br_multicast_ipv4_rcv(struct +@@ -1614,7 +1643,7 @@ static int br_multicast_ipv4_rcv(struct err = br_ip4_multicast_query(br, port, skb_trimmed, vid); break; case IGMP_HOST_LEAVE_MESSAGE: @@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; } -@@ -1637,6 +1666,7 @@ static int br_multicast_ipv6_rcv(struct +@@ -1630,6 +1659,7 @@ static int br_multicast_ipv6_rcv(struct struct sk_buff *skb, u16 vid) { @@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping struct sk_buff *skb_trimmed = NULL; struct mld_msg *mld; int err; -@@ -1656,8 +1686,9 @@ static int br_multicast_ipv6_rcv(struct +@@ -1649,8 +1679,9 @@ static int br_multicast_ipv6_rcv(struct switch (mld->mld_type) { case ICMPV6_MGM_REPORT: @@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping break; case ICMPV6_MLD2_REPORT: err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid); -@@ -1666,7 +1697,8 @@ static int br_multicast_ipv6_rcv(struct +@@ -1659,7 +1690,8 @@ static int br_multicast_ipv6_rcv(struct err = br_ip6_multicast_query(br, port, skb_trimmed, vid); break; case ICMPV6_MGM_REDUCTION: @@ -333,7 +333,7 @@ Implement optinal multicast->unicast conversion for igmp snooping rcu_assign_pointer(*pp, p); --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c -@@ -192,6 +192,34 @@ out: +@@ -191,6 +191,34 @@ out: return p; } @@ -368,7 +368,7 @@ Implement optinal multicast->unicast conversion for igmp snooping /* called under bridge lock */ static void br_flood(struct net_bridge *br, struct sk_buff *skb, struct sk_buff *skb0, -@@ -264,6 +292,7 @@ static void br_multicast_flood(struct ne +@@ -263,6 +291,7 @@ static void br_multicast_flood(struct ne struct net_bridge_port *prev = NULL; struct net_bridge_port_group *p; struct hlist_node *rp; @@ -376,7 +376,7 @@ Implement optinal multicast->unicast conversion for igmp snooping rp = rcu_dereference(hlist_first_rcu(&br->router_list)); p = mdst ? rcu_dereference(mdst->ports) : NULL; -@@ -274,10 +303,19 @@ static void br_multicast_flood(struct ne +@@ -273,10 +302,19 @@ static void br_multicast_flood(struct ne rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) : NULL; diff --git a/target/linux/generic/patches-4.4/655-increase_skb_pad.patch b/target/linux/generic/patches-4.4/655-increase_skb_pad.patch index 1c8ebacf46..6acdb670de 100644 --- a/target/linux/generic/patches-4.4/655-increase_skb_pad.patch +++ b/target/linux/generic/patches-4.4/655-increase_skb_pad.patch @@ -1,6 +1,6 @@ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2177,7 +2177,7 @@ static inline int pskb_network_may_pull( +@@ -2182,7 +2182,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/patches-4.4/662-use_fq_codel_by_default.patch b/target/linux/generic/patches-4.4/662-use_fq_codel_by_default.patch index 8d70b82350..6aeca173fa 100644 --- a/target/linux/generic/patches-4.4/662-use_fq_codel_by_default.patch +++ b/target/linux/generic/patches-4.4/662-use_fq_codel_by_default.patch @@ -84,7 +84,7 @@ if (!qdisc) --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c -@@ -1951,7 +1951,7 @@ static int __init pktsched_init(void) +@@ -1950,7 +1950,7 @@ static int __init pktsched_init(void) return err; } diff --git a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 1d33e421ff..b316cf140b 100644 --- a/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> static void rt_fibinfo_free(struct rtable __rcu **rtp) --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -2370,6 +2370,7 @@ static const char *const rtn_type_names[ +@@ -2380,6 +2380,7 @@ static const char *const rtn_type_names[ [RTN_THROW] = "THROW", [RTN_NAT] = "NAT", [RTN_XRESOLVE] = "XRESOLVE", @@ -78,7 +78,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> static inline const char *rtn_type(char *buf, size_t len, unsigned int t) --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c -@@ -182,6 +182,7 @@ static int ipmr_rule_action(struct fib_r +@@ -183,6 +183,7 @@ static int ipmr_rule_action(struct fib_r case FR_ACT_UNREACHABLE: return -ENETUNREACH; case FR_ACT_PROHIBIT: @@ -101,7 +101,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> table = fib6_get_table(net, rule->table); --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c -@@ -167,6 +167,8 @@ static int ip6mr_rule_action(struct fib_ +@@ -169,6 +169,8 @@ static int ip6mr_rule_action(struct fib_ return -ENETUNREACH; case FR_ACT_PROHIBIT: return -EACCES; diff --git a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 0734bfc5af..f0f21006db 100644 --- a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> #endif --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -642,7 +642,8 @@ struct sk_buff { +@@ -647,7 +647,8 @@ struct sk_buff { __u8 inner_protocol_type:1; __u8 remcsum_offload:1; diff --git a/target/linux/generic/patches-4.4/710-phy-add-mdio_register_board_info.patch b/target/linux/generic/patches-4.4/710-phy-add-mdio_register_board_info.patch index d78f3d48a7..6c71383665 100644 --- a/target/linux/generic/patches-4.4/710-phy-add-mdio_register_board_info.patch +++ b/target/linux/generic/patches-4.4/710-phy-add-mdio_register_board_info.patch @@ -9,7 +9,7 @@ /** * mdiobus_alloc_size - allocate a mii_bus structure * @size: extra amount of memory to allocate for private storage. -@@ -346,9 +348,21 @@ void mdiobus_free(struct mii_bus *bus) +@@ -345,9 +347,21 @@ void mdiobus_free(struct mii_bus *bus) } EXPORT_SYMBOL(mdiobus_free); @@ -31,7 +31,7 @@ int err; phydev = get_phy_device(bus, addr, false); -@@ -361,6 +375,12 @@ struct phy_device *mdiobus_scan(struct m +@@ -360,6 +374,12 @@ struct phy_device *mdiobus_scan(struct m */ of_mdiobus_link_phydev(bus, phydev); diff --git a/target/linux/generic/patches-4.4/721-phy_packets.patch b/target/linux/generic/patches-4.4/721-phy_packets.patch index f17c7bd556..5cc9bb0cad 100644 --- a/target/linux/generic/patches-4.4/721-phy_packets.patch +++ b/target/linux/generic/patches-4.4/721-phy_packets.patch @@ -41,7 +41,7 @@ */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2208,6 +2208,10 @@ static inline int pskb_trim(struct sk_bu +@@ -2213,6 +2213,10 @@ static inline int pskb_trim(struct sk_bu return (len < skb->len) ? __pskb_trim(skb, len) : 0; } @@ -52,7 +52,7 @@ /** * pskb_trim_unique - remove end from a paged unique (not cloned) buffer * @skb: buffer to alter -@@ -2314,16 +2318,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -2319,16 +2323,6 @@ static inline struct sk_buff *dev_alloc_ } @@ -121,7 +121,7 @@ #include <net/protocol.h> #include <net/dst.h> -@@ -520,6 +521,22 @@ skb_fail: +@@ -524,6 +525,22 @@ skb_fail: } EXPORT_SYMBOL(__napi_alloc_skb); diff --git a/target/linux/generic/patches-4.4/834-ledtrig-libata.patch b/target/linux/generic/patches-4.4/834-ledtrig-libata.patch index b4979c0dc7..4b851072a8 100644 --- a/target/linux/generic/patches-4.4/834-ledtrig-libata.patch +++ b/target/linux/generic/patches-4.4/834-ledtrig-libata.patch @@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -4811,6 +4824,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -4812,6 +4825,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (tag < 0) return NULL; } @@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> qc = __ata_qc_from_tag(ap, tag); qc->tag = tag; -@@ -5707,6 +5723,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5708,6 +5724,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> ata_sff_port_init(ap); return ap; -@@ -5728,6 +5747,12 @@ static void ata_host_release(struct devi +@@ -5729,6 +5748,12 @@ static void ata_host_release(struct devi kfree(ap->pmp_link); kfree(ap->slave_link); @@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> kfree(ap); host->ports[i] = NULL; } -@@ -6174,7 +6199,23 @@ int ata_host_register(struct ata_host *h +@@ -6175,7 +6200,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/patches-4.4/901-debloat_sock_diag.patch b/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch index 1dc89d52e2..eeaabb8505 100644 --- a/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch +++ b/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch @@ -25,7 +25,7 @@ obj-$(CONFIG_PROC_FS) += net-procfs.o --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -1474,9 +1474,11 @@ void sk_destruct(struct sock *sk) +@@ -1475,9 +1475,11 @@ void sk_destruct(struct sock *sk) static void __sk_free(struct sock *sk) { diff --git a/target/linux/generic/patches-4.4/902-debloat_proc.patch b/target/linux/generic/patches-4.4/902-debloat_proc.patch index d367577cbf..cbf9f47fbe 100644 --- a/target/linux/generic/patches-4.4/902-debloat_proc.patch +++ b/target/linux/generic/patches-4.4/902-debloat_proc.patch @@ -117,12 +117,12 @@ + if (IS_ENABLED(CONFIG_PROC_STRIPPED)) + return 0; - pe = proc_create("timer_list", 0444, NULL, &timer_list_fops); + pe = proc_create("timer_list", 0400, NULL, &timer_list_fops); if (!pe) return -ENOMEM; --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -2685,6 +2685,8 @@ static const struct file_operations proc +@@ -2689,6 +2689,8 @@ static const struct file_operations proc static int __init proc_vmalloc_init(void) { @@ -133,7 +133,7 @@ } --- a/mm/vmstat.c +++ b/mm/vmstat.c -@@ -1560,10 +1560,12 @@ static int __init setup_vmstat(void) +@@ -1574,10 +1574,12 @@ static int __init setup_vmstat(void) cpu_notifier_register_done(); #endif #ifdef CONFIG_PROC_FS @@ -173,7 +173,7 @@ goto err; --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -3044,6 +3044,8 @@ static __net_initdata struct pernet_oper +@@ -3048,6 +3048,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { @@ -184,7 +184,7 @@ --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -2641,10 +2641,12 @@ static const struct file_operations fib_ +@@ -2651,10 +2651,12 @@ static const struct file_operations fib_ int __net_init fib_proc_init(struct net *net) { @@ -199,7 +199,7 @@ &fib_triestat_fops)) goto out2; -@@ -2654,17 +2656,21 @@ int __net_init fib_proc_init(struct net +@@ -2664,17 +2666,21 @@ int __net_init fib_proc_init(struct net return 0; out3: @@ -227,7 +227,7 @@ --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c -@@ -539,6 +539,9 @@ static __net_initdata struct pernet_oper +@@ -541,6 +541,9 @@ static __net_initdata struct pernet_oper int __init ip_misc_proc_init(void) { diff --git a/target/linux/generic/patches-4.4/911-kobject_add_broadcast_uevent.patch b/target/linux/generic/patches-4.4/911-kobject_add_broadcast_uevent.patch index a3401ff4b3..cadcd7467e 100644 --- a/target/linux/generic/patches-4.4/911-kobject_add_broadcast_uevent.patch +++ b/target/linux/generic/patches-4.4/911-kobject_add_broadcast_uevent.patch @@ -9,7 +9,7 @@ #ifdef CONFIG_UEVENT_HELPER /* path to the userspace helper executed on an event */ extern char uevent_helper[]; -@@ -222,4 +224,7 @@ int add_uevent_var(struct kobj_uevent_en +@@ -239,4 +241,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/imx6/patches-4.4/208-sky2-allow-mac-to-come-from-dt.patch b/target/linux/imx6/patches-4.4/208-sky2-allow-mac-to-come-from-dt.patch index 9a94212235..821631d496 100644 --- a/target/linux/imx6/patches-4.4/208-sky2-allow-mac-to-come-from-dt.patch +++ b/target/linux/imx6/patches-4.4/208-sky2-allow-mac-to-come-from-dt.patch @@ -1,6 +1,6 @@ --- a/drivers/net/ethernet/marvell/sky2.c +++ b/drivers/net/ethernet/marvell/sky2.c -@@ -4812,7 +4812,24 @@ static struct net_device *sky2_init_netd +@@ -4813,7 +4813,24 @@ static struct net_device *sky2_init_netd * 1) from device tree data * 2) from internal registers set by bootloader */ diff --git a/target/linux/ipq806x/patches-4.4/006-mfd-qcom_rpm-Handle-message-RAM-clock.patch b/target/linux/ipq806x/patches-4.4/006-mfd-qcom_rpm-Handle-message-RAM-clock.patch index 96b768d97c..2ca1c929d9 100644 --- a/target/linux/ipq806x/patches-4.4/006-mfd-qcom_rpm-Handle-message-RAM-clock.patch +++ b/target/linux/ipq806x/patches-4.4/006-mfd-qcom_rpm-Handle-message-RAM-clock.patch @@ -76,7 +76,7 @@ Signed-off-by: Lee Jones <lee.jones@linaro.org> irq_ack = platform_get_irq_byname(pdev, "ack"); if (irq_ack < 0) { dev_err(&pdev->dev, "required ack interrupt missing\n"); -@@ -621,7 +637,11 @@ static int qcom_rpm_probe(struct platfor +@@ -625,7 +641,11 @@ static int qcom_rpm_probe(struct platfor static int qcom_rpm_remove(struct platform_device *pdev) { diff --git a/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch b/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch index 5f989bdc06..1d81564d0d 100644 --- a/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch +++ b/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch @@ -161,7 +161,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c -@@ -2571,14 +2571,14 @@ static void dwc3_process_event_entry(str +@@ -2572,14 +2572,14 @@ static void dwc3_process_event_entry(str } } @@ -178,7 +178,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> left = evt->count; if (!(evt->flags & DWC3_EVENT_PENDING)) -@@ -2603,7 +2603,7 @@ static irqreturn_t dwc3_process_event_bu +@@ -2604,7 +2604,7 @@ static irqreturn_t dwc3_process_event_bu evt->lpos = (evt->lpos + 4) % DWC3_EVENT_BUFFERS_SIZE; left -= 4; @@ -187,7 +187,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> } evt->count = 0; -@@ -2611,9 +2611,9 @@ static irqreturn_t dwc3_process_event_bu +@@ -2612,9 +2612,9 @@ static irqreturn_t dwc3_process_event_bu ret = IRQ_HANDLED; /* Unmask interrupt */ @@ -199,7 +199,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> return ret; } -@@ -2623,27 +2623,23 @@ static irqreturn_t dwc3_thread_interrupt +@@ -2624,27 +2624,23 @@ static irqreturn_t dwc3_thread_interrupt struct dwc3 *dwc = _dwc; unsigned long flags; irqreturn_t ret = IRQ_NONE; @@ -231,7 +231,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> count &= DWC3_GEVNTCOUNT_MASK; if (!count) return IRQ_NONE; -@@ -2652,9 +2648,9 @@ static irqreturn_t dwc3_check_event_buf( +@@ -2653,9 +2649,9 @@ static irqreturn_t dwc3_check_event_buf( evt->flags |= DWC3_EVENT_PENDING; /* Mask interrupt */ @@ -243,7 +243,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> return IRQ_WAKE_THREAD; } -@@ -2662,18 +2658,8 @@ static irqreturn_t dwc3_check_event_buf( +@@ -2663,18 +2659,8 @@ static irqreturn_t dwc3_check_event_buf( static irqreturn_t dwc3_interrupt(int irq, void *_dwc) { struct dwc3 *dwc = _dwc; diff --git a/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch index fef5c68a01..e8172a1220 100644 --- a/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch +++ b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch @@ -76,7 +76,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> struct usb_gadget gadget; --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c -@@ -2578,7 +2578,7 @@ static irqreturn_t dwc3_process_event_bu +@@ -2579,7 +2579,7 @@ static irqreturn_t dwc3_process_event_bu int left; u32 reg; @@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> left = evt->count; if (!(evt->flags & DWC3_EVENT_PENDING)) -@@ -2637,7 +2637,7 @@ static irqreturn_t dwc3_check_event_buf( +@@ -2638,7 +2638,7 @@ static irqreturn_t dwc3_check_event_buf( u32 count; u32 reg; diff --git a/target/linux/ipq806x/patches-4.4/400-dsa-add-qca.patch b/target/linux/ipq806x/patches-4.4/400-dsa-add-qca.patch index 033b5bab1a..89c07dac2e 100644 --- a/target/linux/ipq806x/patches-4.4/400-dsa-add-qca.patch +++ b/target/linux/ipq806x/patches-4.4/400-dsa-add-qca.patch @@ -820,7 +820,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org> #endif --- a/net/dsa/slave.c +++ b/net/dsa/slave.c -@@ -1186,6 +1186,11 @@ int dsa_slave_create(struct dsa_switch * +@@ -1190,6 +1190,11 @@ int dsa_slave_create(struct dsa_switch * p->xmit = brcm_netdev_ops.xmit; break; #endif diff --git a/target/linux/ipq806x/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch b/target/linux/ipq806x/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch index 29f09f2323..41a5cd890e 100644 --- a/target/linux/ipq806x/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch +++ b/target/linux/ipq806x/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch @@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com> + } +#endif + + /* parameters may set static keys */ + jump_label_init(); parse_early_param(); - after_dashes = parse_args("Booting kernel", - static_command_line, __start___param, diff --git a/target/linux/ixp4xx/patches-4.4/600-skb_avoid_dmabounce.patch b/target/linux/ixp4xx/patches-4.4/600-skb_avoid_dmabounce.patch index c2574f96de..96f1540650 100644 --- a/target/linux/ixp4xx/patches-4.4/600-skb_avoid_dmabounce.patch +++ b/target/linux/ixp4xx/patches-4.4/600-skb_avoid_dmabounce.patch @@ -10,7 +10,7 @@ /* Get the HEAD */ skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node); -@@ -1148,6 +1151,10 @@ int pskb_expand_head(struct sk_buff *skb +@@ -1152,6 +1155,10 @@ int pskb_expand_head(struct sk_buff *skb if (skb_shared(skb)) BUG(); diff --git a/target/linux/kirkwood/patches-4.4/200-disable-tso.patch b/target/linux/kirkwood/patches-4.4/200-disable-tso.patch index af6ec20c57..ddac934cce 100644 --- a/target/linux/kirkwood/patches-4.4/200-disable-tso.patch +++ b/target/linux/kirkwood/patches-4.4/200-disable-tso.patch @@ -19,7 +19,7 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia <at> free-electrons.com> --- --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c -@@ -3178,11 +3178,11 @@ static int mv643xx_eth_probe(struct plat +@@ -3183,11 +3183,11 @@ static int mv643xx_eth_probe(struct plat dev->watchdog_timeo = 2 * HZ; dev->base_addr = 0; diff --git a/target/linux/lantiq/patches-4.4/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-4.4/0152-lantiq-VPE.patch index bf883c8758..7e52f55587 100644 --- a/target/linux/lantiq/patches-4.4/0152-lantiq-VPE.patch +++ b/target/linux/lantiq/patches-4.4/0152-lantiq-VPE.patch @@ -1,6 +1,6 @@ --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2221,6 +2221,12 @@ config MIPS_VPE_LOADER +@@ -2224,6 +2224,12 @@ config MIPS_VPE_LOADER Includes a loader for loading an elf relocatable object onto another VPE and running it. diff --git a/target/linux/layerscape/patches-4.4/7017-fsl_qbman-add-qbman-driver.patch b/target/linux/layerscape/patches-4.4/7017-fsl_qbman-add-qbman-driver.patch index ef9c104b36..aee322f092 100644 --- a/target/linux/layerscape/patches-4.4/7017-fsl_qbman-add-qbman-driver.patch +++ b/target/linux/layerscape/patches-4.4/7017-fsl_qbman-add-qbman-driver.patch @@ -109,7 +109,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> help --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig -@@ -787,6 +787,11 @@ config FSL_GTM +@@ -792,6 +792,11 @@ config FSL_GTM help Freescale General-purpose Timers support @@ -121,7 +121,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> # Yes MCA RS/6000s exist but Linux-PPC does not currently support any config MCA bool -@@ -919,14 +924,14 @@ config DYNAMIC_MEMSTART +@@ -924,14 +929,14 @@ config DYNAMIC_MEMSTART select NONSTATIC_KERNEL help This option enables the kernel to be loaded at any page aligned diff --git a/target/linux/layerscape/patches-4.4/7019-net-readd-skb_recycle.patch b/target/linux/layerscape/patches-4.4/7019-net-readd-skb_recycle.patch index 062233f18b..47051a101f 100644 --- a/target/linux/layerscape/patches-4.4/7019-net-readd-skb_recycle.patch +++ b/target/linux/layerscape/patches-4.4/7019-net-readd-skb_recycle.patch @@ -14,7 +14,7 @@ Signed-off-by: Madalin Bucur <madalin.bucur@freescale.com> --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -799,6 +799,7 @@ void kfree_skb(struct sk_buff *skb); +@@ -804,6 +804,7 @@ void kfree_skb(struct sk_buff *skb); void kfree_skb_list(struct sk_buff *segs); void skb_tx_error(struct sk_buff *skb); void consume_skb(struct sk_buff *skb); @@ -24,7 +24,7 @@ Signed-off-by: Madalin Bucur <madalin.bucur@freescale.com> --- a/net/core/skbuff.c +++ b/net/core/skbuff.c -@@ -766,6 +766,32 @@ void consume_skb(struct sk_buff *skb) +@@ -770,6 +770,32 @@ void consume_skb(struct sk_buff *skb) } EXPORT_SYMBOL(consume_skb); diff --git a/target/linux/layerscape/patches-4.4/7020-net-add-custom-NETIF-flags.patch b/target/linux/layerscape/patches-4.4/7020-net-add-custom-NETIF-flags.patch index c89a58c37e..5e54a66614 100644 --- a/target/linux/layerscape/patches-4.4/7020-net-add-custom-NETIF-flags.patch +++ b/target/linux/layerscape/patches-4.4/7020-net-add-custom-NETIF-flags.patch @@ -18,7 +18,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com> --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h -@@ -66,6 +66,9 @@ enum { +@@ -68,6 +68,9 @@ enum { NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */ NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */ NETIF_F_BUSY_POLL_BIT, /* Busy poll */ @@ -28,7 +28,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com> /* * Add your fresh new feature above and remember to update -@@ -124,6 +127,9 @@ enum { +@@ -126,6 +129,9 @@ enum { #define NETIF_F_HW_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX) #define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD) #define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL) @@ -36,5 +36,5 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com> +#define NETIF_F_HW_QDISC __NETIF_F(HW_QDISC) +#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ) - #define for_each_netdev_feature(mask_addr, bit) \ - for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT) + /* Finds the next feature with the highest number of the range of start till 0. + */ diff --git a/target/linux/layerscape/patches-4.4/7031-fsl_qbman-Enable-DPAA1-QBMan-for-ARM64-platforms.patch b/target/linux/layerscape/patches-4.4/7031-fsl_qbman-Enable-DPAA1-QBMan-for-ARM64-platforms.patch index faa0d7ab0b..24f79895da 100644 --- a/target/linux/layerscape/patches-4.4/7031-fsl_qbman-Enable-DPAA1-QBMan-for-ARM64-platforms.patch +++ b/target/linux/layerscape/patches-4.4/7031-fsl_qbman-Enable-DPAA1-QBMan-for-ARM64-platforms.patch @@ -17,7 +17,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com> --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -188,6 +188,11 @@ source "arch/arm64/Kconfig.platforms" +@@ -187,6 +187,11 @@ source "arch/arm64/Kconfig.platforms" menu "Bus support" diff --git a/target/linux/layerscape/patches-4.4/7072-LS1012-Add-PPFE-driver-in-Linux.patch b/target/linux/layerscape/patches-4.4/7072-LS1012-Add-PPFE-driver-in-Linux.patch index 21339e819e..c7c2ee5b9b 100644 --- a/target/linux/layerscape/patches-4.4/7072-LS1012-Add-PPFE-driver-in-Linux.patch +++ b/target/linux/layerscape/patches-4.4/7072-LS1012-Add-PPFE-driver-in-Linux.patch @@ -15054,7 +15054,7 @@ Integrated-by: Yutang Jiang <yutang.jiang@nxp.com> +#endif /* _PLATFORM_H_ */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -858,6 +858,17 @@ static inline struct sk_buff *alloc_skb_ +@@ -863,6 +863,17 @@ static inline struct sk_buff *alloc_skb_ return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE); } diff --git a/target/linux/layerscape/patches-4.4/7182-staging-fsl-mc-add-support-for-device-table-matching.patch b/target/linux/layerscape/patches-4.4/7182-staging-fsl-mc-add-support-for-device-table-matching.patch index 5ebb4591aa..67184e14a0 100644 --- a/target/linux/layerscape/patches-4.4/7182-staging-fsl-mc-add-support-for-device-table-matching.patch +++ b/target/linux/layerscape/patches-4.4/7182-staging-fsl-mc-add-support-for-device-table-matching.patch @@ -77,9 +77,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> } --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c -@@ -1271,6 +1271,18 @@ static int do_hda_entry(const char *file +@@ -1186,6 +1186,18 @@ static int do_hda_entry(const char *file + return 1; } - ADD_TO_DEVTABLE("hdaudio", hda_device_id, do_hda_entry); +/* Looks like: fsl-mc:vNdN */ +static int do_fsl_mc_entry(const char *filename, void *symval, diff --git a/target/linux/layerscape/patches-4.4/8048-mmc-sdhci-of-esdhc-add-remove-some-quirks-according-.patch b/target/linux/layerscape/patches-4.4/8048-mmc-sdhci-of-esdhc-add-remove-some-quirks-according-.patch index 624aab36a8..d7e5bb97f5 100644 --- a/target/linux/layerscape/patches-4.4/8048-mmc-sdhci-of-esdhc-add-remove-some-quirks-according-.patch +++ b/target/linux/layerscape/patches-4.4/8048-mmc-sdhci-of-esdhc-add-remove-some-quirks-according-.patch @@ -34,7 +34,7 @@ Integrated-by: Zhao Qiang <qiang.zhao@nxp.com> --- a/drivers/mmc/host/sdhci-of-esdhc.c +++ b/drivers/mmc/host/sdhci-of-esdhc.c -@@ -635,6 +635,14 @@ static int sdhci_esdhc_probe(struct plat +@@ -640,6 +640,14 @@ static int sdhci_esdhc_probe(struct plat if (of_device_is_compatible(np, "fsl,ls1021a-esdhc")) host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL; diff --git a/target/linux/layerscape/patches-4.4/8138-pci-layerscape-add-MSI-interrupt-support.patch b/target/linux/layerscape/patches-4.4/8138-pci-layerscape-add-MSI-interrupt-support.patch index dad8e88450..0c9eb39f41 100644 --- a/target/linux/layerscape/patches-4.4/8138-pci-layerscape-add-MSI-interrupt-support.patch +++ b/target/linux/layerscape/patches-4.4/8138-pci-layerscape-add-MSI-interrupt-support.patch @@ -180,7 +180,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> +#endif /* _PCI_LAYERSCAPE_H */ --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c -@@ -3593,8 +3593,9 @@ int pci_dev_specific_reset(struct pci_de +@@ -3594,8 +3594,9 @@ int pci_dev_specific_reset(struct pci_de static void quirk_dma_func0_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 0) { @@ -192,7 +192,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> } } -@@ -3609,8 +3610,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_R +@@ -3610,8 +3611,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_R static void quirk_dma_func1_alias(struct pci_dev *dev) { if (PCI_FUNC(dev->devfn) != 1) { @@ -204,7 +204,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> } } -@@ -3681,11 +3683,12 @@ static void quirk_fixed_dma_alias(struct +@@ -3684,11 +3686,12 @@ static void quirk_fixed_dma_alias(struct id = pci_match_id(fixed_dma_alias_tbl, dev); if (id) { diff --git a/target/linux/layerscape/patches-4.4/8142-drivers-mmc-Add-compatible-string-for-LS1046A.patch b/target/linux/layerscape/patches-4.4/8142-drivers-mmc-Add-compatible-string-for-LS1046A.patch index 1cc3b0539e..65db67f8c0 100644 --- a/target/linux/layerscape/patches-4.4/8142-drivers-mmc-Add-compatible-string-for-LS1046A.patch +++ b/target/linux/layerscape/patches-4.4/8142-drivers-mmc-Add-compatible-string-for-LS1046A.patch @@ -10,7 +10,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com> --- a/drivers/mmc/host/sdhci-of-esdhc.c +++ b/drivers/mmc/host/sdhci-of-esdhc.c -@@ -629,6 +629,7 @@ static int sdhci_esdhc_probe(struct plat +@@ -634,6 +634,7 @@ static int sdhci_esdhc_probe(struct plat of_device_is_compatible(np, "fsl,p4080-esdhc") || of_device_is_compatible(np, "fsl,p1020-esdhc") || of_device_is_compatible(np, "fsl,t1040-esdhc") || diff --git a/target/linux/layerscape/patches-4.4/9070-Revert-arm64-use-fixmap-region-for-permanent-FDT-map.patch b/target/linux/layerscape/patches-4.4/9070-Revert-arm64-use-fixmap-region-for-permanent-FDT-map.patch index c4b97bcd47..7de48c3d4e 100644 --- a/target/linux/layerscape/patches-4.4/9070-Revert-arm64-use-fixmap-region-for-permanent-FDT-map.patch +++ b/target/linux/layerscape/patches-4.4/9070-Revert-arm64-use-fixmap-region-for-permanent-FDT-map.patch @@ -96,7 +96,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com> #endif --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S -@@ -212,6 +212,8 @@ ENTRY(stext) +@@ -213,6 +213,8 @@ ENTRY(stext) bl el2_setup // Drop to EL1, w20=cpu_boot_mode adrp x24, __PHYS_OFFSET bl set_cpu_boot_mode_flag @@ -105,7 +105,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com> bl __create_page_tables // x25=TTBR0, x26=TTBR1 /* * The following calls CPU setup code, see arch/arm64/mm/proc.S for -@@ -243,6 +245,24 @@ preserve_boot_args: +@@ -244,6 +246,24 @@ preserve_boot_args: ENDPROC(preserve_boot_args) /* @@ -130,7 +130,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com> * Macro to create a table entry to the next page. * * tbl: page table address -@@ -306,7 +326,8 @@ ENDPROC(preserve_boot_args) +@@ -307,7 +327,8 @@ ENDPROC(preserve_boot_args) * required to get the kernel running. The following sections are required: * - identity mapping to enable the MMU (low address, TTBR0) * - first few MB of the kernel linear mapping to jump to once the MMU has @@ -140,7 +140,7 @@ Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com> */ __create_page_tables: adrp x25, idmap_pg_dir -@@ -396,6 +417,22 @@ __create_page_tables: +@@ -397,6 +418,22 @@ __create_page_tables: create_block_map x0, x7, x3, x5, x6 /* diff --git a/target/linux/mediatek/patches-4.4/0019-xhci-mediatek-support-MTK-xHCI-host-controller.patch b/target/linux/mediatek/patches-4.4/0019-xhci-mediatek-support-MTK-xHCI-host-controller.patch index cb91b13265..d0e0a8893d 100644 --- a/target/linux/mediatek/patches-4.4/0019-xhci-mediatek-support-MTK-xHCI-host-controller.patch +++ b/target/linux/mediatek/patches-4.4/0019-xhci-mediatek-support-MTK-xHCI-host-controller.patch @@ -1428,7 +1428,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> /* * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA -@@ -3113,17 +3114,22 @@ static u32 xhci_td_remainder(struct xhci +@@ -3116,17 +3117,22 @@ static u32 xhci_td_remainder(struct xhci { u32 maxp, total_packet_count; @@ -1455,7 +1455,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> /* Queueing functions don't count the current TRB into transferred */ return (total_packet_count - ((transferred + trb_buff_len) / maxp)); } -@@ -3511,7 +3517,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3514,7 +3520,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field |= 0x1; /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */ @@ -1466,7 +1466,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> field |= TRB_TX_TYPE(TRB_DATA_IN); --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -31,6 +31,7 @@ +@@ -32,6 +32,7 @@ #include "xhci.h" #include "xhci-trace.h" @@ -1474,7 +1474,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> #define DRIVER_AUTHOR "Sarah Sharp" #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver" -@@ -635,7 +636,11 @@ int xhci_run(struct usb_hcd *hcd) +@@ -633,7 +634,11 @@ int xhci_run(struct usb_hcd *hcd) "// Set the interrupt modulation register"); temp = readl(&xhci->ir_set->irq_control); temp &= ~ER_IRQ_INTERVAL_MASK; @@ -1487,7 +1487,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> writel(temp, &xhci->ir_set->irq_control); /* Set the HCD state before we enable the irqs */ -@@ -1730,6 +1735,9 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1728,6 +1733,9 @@ int xhci_drop_endpoint(struct usb_hcd *h xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep); @@ -1497,7 +1497,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", (unsigned int) ep->desc.bEndpointAddress, udev->slot_id, -@@ -1825,6 +1833,15 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1823,6 +1831,15 @@ int xhci_add_endpoint(struct usb_hcd *hc return -ENOMEM; } @@ -1515,7 +1515,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1638,6 +1638,7 @@ struct xhci_hcd { +@@ -1639,6 +1639,7 @@ struct xhci_hcd { /* For controllers with a broken beyond repair streams implementation */ #define XHCI_BROKEN_STREAMS (1 << 19) #define XHCI_PME_STUCK_QUIRK (1 << 20) diff --git a/target/linux/mpc85xx/patches-4.4/100-powerpc-85xx-tl-wdr4900-v1-support.patch b/target/linux/mpc85xx/patches-4.4/100-powerpc-85xx-tl-wdr4900-v1-support.patch index e657ee514a..49ceec5589 100644 --- a/target/linux/mpc85xx/patches-4.4/100-powerpc-85xx-tl-wdr4900-v1-support.patch +++ b/target/linux/mpc85xx/patches-4.4/100-powerpc-85xx-tl-wdr4900-v1-support.patch @@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile -@@ -114,6 +114,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie +@@ -115,6 +115,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_PPC_CELL_QPACE) += pseries-head.S @@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> src-wlib := $(sort $(src-wlib-y)) src-plat := $(sort $(src-plat-y)) -@@ -297,6 +298,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm +@@ -298,6 +299,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm image-$(CONFIG_TQM8560) += cuImage.tqm8560 image-$(CONFIG_SBC8548) += cuImage.sbc8548 image-$(CONFIG_KSI8560) += cuImage.ksi8560 diff --git a/target/linux/oxnas/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch b/target/linux/oxnas/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch index 6bffa6fe6a..96f29a1d03 100644 --- a/target/linux/oxnas/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch +++ b/target/linux/oxnas/patches-4.4/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch @@ -180,6 +180,6 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com> + } +#endif + + /* parameters may set static keys */ + jump_label_init(); parse_early_param(); - after_dashes = parse_args("Booting kernel", - static_command_line, __start___param, diff --git a/target/linux/oxnas/patches-4.4/999-libata-hacks.patch b/target/linux/oxnas/patches-4.4/999-libata-hacks.patch index cd426718db..a65582ee00 100644 --- a/target/linux/oxnas/patches-4.4/999-libata-hacks.patch +++ b/target/linux/oxnas/patches-4.4/999-libata-hacks.patch @@ -15,7 +15,7 @@ /* initialize internal qc */ /* XXX: Tag 0 is used for drivers with legacy EH as some -@@ -4818,6 +4826,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -4819,6 +4827,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (unlikely(ap->pflags & ATA_PFLAG_FROZEN)) return NULL; @@ -25,7 +25,7 @@ /* libsas case */ if (ap->flags & ATA_FLAG_SAS_HOST) { tag = ata_sas_allocate_tag(ap); -@@ -4863,6 +4874,8 @@ void ata_qc_free(struct ata_queued_cmd * +@@ -4864,6 +4875,8 @@ void ata_qc_free(struct ata_queued_cmd * qc->tag = ATA_TAG_POISON; if (ap->flags & ATA_FLAG_SAS_HOST) ata_sas_free_tag(tag, ap); diff --git a/target/linux/ramips/patches-4.4/0031-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-4.4/0031-uvc-add-iPassion-iP2970-support.patch index 05832bc536..ff834be429 100644 --- a/target/linux/ramips/patches-4.4/0031-uvc-add-iPassion-iP2970-support.patch +++ b/target/linux/ramips/patches-4.4/0031-uvc-add-iPassion-iP2970-support.patch @@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2665,6 +2665,18 @@ static struct usb_device_id uvc_ids[] = +@@ -2673,6 +2673,18 @@ static struct usb_device_id uvc_ids[] = .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_FORCE_Y8 }, @@ -64,7 +64,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> #include <media/v4l2-common.h> -@@ -1104,9 +1109,149 @@ static void uvc_video_decode_data(struct +@@ -1112,9 +1117,149 @@ static void uvc_video_decode_data(struct } } @@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> /* Mark the buffer as done if the EOF marker is set. */ if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) { uvc_trace(UVC_TRACE_FRAME, "Frame complete (EOF found).\n"); -@@ -1519,6 +1664,8 @@ static int uvc_init_video_isoc(struct uv +@@ -1527,6 +1672,8 @@ static int uvc_init_video_isoc(struct uv if (npackets == 0) return -ENOMEM; diff --git a/target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch b/target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch index 2493e20f93..7916830757 100644 --- a/target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch +++ b/target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch @@ -1420,7 +1420,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> /* * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA -@@ -3113,17 +3114,22 @@ static u32 xhci_td_remainder(struct xhci +@@ -3116,17 +3117,22 @@ static u32 xhci_td_remainder(struct xhci { u32 maxp, total_packet_count; @@ -1447,7 +1447,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> /* Queueing functions don't count the current TRB into transferred */ return (total_packet_count - ((transferred + trb_buff_len) / maxp)); } -@@ -3511,7 +3517,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3514,7 +3520,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field |= 0x1; /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */ @@ -1458,7 +1458,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> field |= TRB_TX_TYPE(TRB_DATA_IN); --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -31,6 +31,7 @@ +@@ -32,6 +32,7 @@ #include "xhci.h" #include "xhci-trace.h" @@ -1466,7 +1466,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> #define DRIVER_AUTHOR "Sarah Sharp" #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver" -@@ -635,7 +636,11 @@ int xhci_run(struct usb_hcd *hcd) +@@ -633,7 +634,11 @@ int xhci_run(struct usb_hcd *hcd) "// Set the interrupt modulation register"); temp = readl(&xhci->ir_set->irq_control); temp &= ~ER_IRQ_INTERVAL_MASK; @@ -1479,7 +1479,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> writel(temp, &xhci->ir_set->irq_control); /* Set the HCD state before we enable the irqs */ -@@ -1730,6 +1735,9 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1728,6 +1733,9 @@ int xhci_drop_endpoint(struct usb_hcd *h xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep); @@ -1489,7 +1489,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", (unsigned int) ep->desc.bEndpointAddress, udev->slot_id, -@@ -1825,6 +1833,15 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1823,6 +1831,15 @@ int xhci_add_endpoint(struct usb_hcd *hc return -ENOMEM; } @@ -1507,7 +1507,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1638,6 +1638,7 @@ struct xhci_hcd { +@@ -1639,6 +1639,7 @@ struct xhci_hcd { /* For controllers with a broken beyond repair streams implementation */ #define XHCI_BROKEN_STREAMS (1 << 19) #define XHCI_PME_STUCK_QUIRK (1 << 20) |