From 2fc3680dd066419576cb0129d0c1bd7618b90f1a Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Thu, 15 Sep 2016 15:27:45 +0200 Subject: [PATCH] kernel: update kernel 4.1 to version 4.1.34 Refresh patches for all targets supporting 4.1 and not marked broken. Compile-tested on all targets using 4.1 and not marked broken. Changes to generic/610-netfilter_match_bypass_default_checks.patch based on 84d489f64f3b382d5544e342f66d8806e94e85d3. Changes to generic/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch based on a90ee92337d60fd14b6431adcda9929b955f3408. Signed-off-by: Stijn Tintel --- include/kernel-version.mk | 4 +- .../ar7/patches-4.1/500-serial_kludge.patch | 2 +- .../patches-4.1/025-bcma-from-4.6.patch | 6 +- .../040-fs-overlay-fix-stacking.patch | 2 +- ...make-challenge-acks-less-predictable.patch | 76 ------------------- .../103-packet_allow_empty_payload.patch | 17 ----- ...11-jffs2-add-RENAME_EXCHANGE-support.patch | 2 +- ...t_for_moving_ndp_to_end_of_ncm_frame.patch | 16 ++-- ...-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch | 6 +- .../patches-4.1/204-module_strip.patch | 4 +- .../generic/patches-4.1/220-gc_sections.patch | 12 +-- .../patches-4.1/221-module_exports.patch | 2 +- .../300-mips_expose_boot_raw.patch | 2 +- .../patches-4.1/304-mips_disable_fpu.patch | 2 +- ...mtd-device-named-ubi-or-data-on-boot.patch | 4 +- ...ting-ubi0-rootfs-in-init-do_mounts.c.patch | 2 +- .../494-mtd-ubi-add-EOF-marker-support.patch | 2 +- ...etfilter_match_bypass_default_checks.patch | 25 ++---- .../patches-4.1/630-packet_socket_type.patch | 10 +-- .../patches-4.1/655-increase_skb_pad.patch | 2 +- .../656-skb_reduce_truesize-helper.patch | 2 +- .../657-qdisc_reduce_truesize.patch | 2 +- .../patches-4.1/660-fq_codel_defaults.patch | 2 +- .../662-use_fq_codel_by_default.patch | 6 +- .../patches-4.1/663-remove_pfifo_fast.patch | 2 +- .../patches-4.1/664-codel_fix_3_12.patch | 2 +- ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 30 ++++---- ...T-skip-GRO-for-foreign-MAC-addresses.patch | 2 +- .../generic/patches-4.1/721-phy_packets.patch | 12 +-- .../810-pci_disable_common_quirks.patch | 6 +- .../811-pci_disable_usb_common_quirks.patch | 2 +- .../patches-4.1/834-ledtrig-libata.patch | 8 +- .../generic/patches-4.1/863-gpiommc.patch | 2 +- .../patches-4.1/903-debloat_direct_io.patch | 4 +- .../patches-4.1/904-debloat_dma_buf.patch | 2 +- .../oxnas/patches-4.1/320-oxnas-irqchip.patch | 2 +- .../oxnas/patches-4.1/800-oxnas-ehci.patch | 2 +- .../996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch | 4 +- .../oxnas/patches-4.1/999-libata-hacks.patch | 4 +- .../rb532/patches-4.1/001-cmdline_hack.patch | 18 ++--- .../patches-4.1/002-rb532_nand_fixup.patch | 16 ++-- ...info-rename-rootfs-to-rootfs_onboard.patch | 12 +-- 42 files changed, 120 insertions(+), 220 deletions(-) delete mode 100644 target/linux/generic/patches-4.1/096-tcp-make-challenge-acks-less-predictable.patch delete mode 100644 target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 5f64358d54..da96e1e727 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -3,11 +3,11 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .29 -LINUX_VERSION-4.1 = .20 +LINUX_VERSION-4.1 = .34 LINUX_VERSION-4.4 = .27 LINUX_KERNEL_MD5SUM-3.18.29 = b25737a0bc98e80d12200de93f239c28 -LINUX_KERNEL_MD5SUM-4.1.20 = 075c38a3a23ca5bc80437b13606df00a +LINUX_KERNEL_MD5SUM-4.1.34 = fba99f0f4765ebf01033e69518740a3c LINUX_KERNEL_MD5SUM-4.4.27 = 6c437dd8f9e964c843211cf99a876b42724fe9f2013241c13e14b6ce17846afd ifdef KERNEL_PATCHVER diff --git a/target/linux/ar7/patches-4.1/500-serial_kludge.patch b/target/linux/ar7/patches-4.1/500-serial_kludge.patch index 23214491a1..c7bb29707a 100644 --- a/target/linux/ar7/patches-4.1/500-serial_kludge.patch +++ b/target/linux/ar7/patches-4.1/500-serial_kludge.patch @@ -14,7 +14,7 @@ }; /* Uart divisor latch read */ -@@ -3348,7 +3355,11 @@ static void serial8250_console_putchar(s +@@ -3342,7 +3349,11 @@ static void serial8250_console_putchar(s { struct uart_8250_port *up = up_to_u8250p(port); diff --git a/target/linux/generic/patches-4.1/025-bcma-from-4.6.patch b/target/linux/generic/patches-4.1/025-bcma-from-4.6.patch index 39396f2125..c0504ac55c 100644 --- a/target/linux/generic/patches-4.1/025-bcma-from-4.6.patch +++ b/target/linux/generic/patches-4.1/025-bcma-from-4.6.patch @@ -359,7 +359,7 @@ #define BCMA_CORE_ARM_CA7 0x847 #define BCMA_CORE_SYS_MEM 0x849 #define BCMA_CORE_DEFAULT 0xFFF -@@ -199,6 +201,7 @@ struct bcma_host_ops { +@@ -200,6 +202,7 @@ struct bcma_host_ops { #define BCMA_PKG_ID_BCM4707 1 #define BCMA_PKG_ID_BCM4708 2 #define BCMA_PKG_ID_BCM4709 0 @@ -470,7 +470,7 @@ extern u32 bcma_chipco_get_alp_clock(struct bcma_drv_cc *cc); --- a/drivers/bcma/bcma_private.h +++ b/drivers/bcma/bcma_private.h -@@ -46,10 +46,6 @@ int bcma_sprom_get(struct bcma_bus *bus) +@@ -44,10 +44,6 @@ int bcma_sprom_get(struct bcma_bus *bus) void bcma_core_chipcommon_early_init(struct bcma_drv_cc *cc); void bcma_core_chipcommon_init(struct bcma_drv_cc *cc); void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable); @@ -481,7 +481,7 @@ /* driver_chipcommon_b.c */ int bcma_core_chipcommon_b_init(struct bcma_drv_cc_b *ccb); -@@ -61,6 +57,21 @@ void bcma_pmu_init(struct bcma_drv_cc *c +@@ -59,6 +55,21 @@ void bcma_pmu_init(struct bcma_drv_cc *c u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc); u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc); diff --git a/target/linux/generic/patches-4.1/040-fs-overlay-fix-stacking.patch b/target/linux/generic/patches-4.1/040-fs-overlay-fix-stacking.patch index 6c13e5ff41..6474da6ebf 100644 --- a/target/linux/generic/patches-4.1/040-fs-overlay-fix-stacking.patch +++ b/target/linux/generic/patches-4.1/040-fs-overlay-fix-stacking.patch @@ -21,7 +21,7 @@ Cc: # v4.2+ --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c -@@ -375,6 +375,9 @@ struct inode *ovl_d_select_inode(struct +@@ -383,6 +383,9 @@ struct inode *ovl_d_select_inode(struct ovl_path_upper(dentry, &realpath); } diff --git a/target/linux/generic/patches-4.1/096-tcp-make-challenge-acks-less-predictable.patch b/target/linux/generic/patches-4.1/096-tcp-make-challenge-acks-less-predictable.patch deleted file mode 100644 index cf1da63b07..0000000000 --- a/target/linux/generic/patches-4.1/096-tcp-make-challenge-acks-less-predictable.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 75ff39ccc1bd5d3c455b6822ab09e533c551f758 Mon Sep 17 00:00:00 2001 -From: Eric Dumazet -Date: Sun, 10 Jul 2016 10:04:02 +0200 -Subject: [PATCH] tcp: make challenge acks less predictable - -Yue Cao claims that current host rate limiting of challenge ACKS -(RFC 5961) could leak enough information to allow a patient attacker -to hijack TCP sessions. He will soon provide details in an academic -paper. - -This patch increases the default limit from 100 to 1000, and adds -some randomization so that the attacker can no longer hijack -sessions without spending a considerable amount of probes. - -Based on initial analysis and patch from Linus. - -Note that we also have per socket rate limiting, so it is tempting -to remove the host limit in the future. - -v2: randomize the count of challenge acks per second, not the period. - -Fixes: 282f23c6ee34 ("tcp: implement RFC 5961 3.2") -Reported-by: Yue Cao -Signed-off-by: Eric Dumazet -Suggested-by: Linus Torvalds -Cc: Yuchung Cheng -Cc: Neal Cardwell -Acked-by: Neal Cardwell -Acked-by: Yuchung Cheng -Signed-off-by: David S. Miller ---- - net/ipv4/tcp_input.c | 15 ++++++++++----- - 1 file changed, 10 insertions(+), 5 deletions(-) - ---- a/net/ipv4/tcp_input.c -+++ b/net/ipv4/tcp_input.c -@@ -89,7 +89,7 @@ int sysctl_tcp_adv_win_scale __read_most - EXPORT_SYMBOL(sysctl_tcp_adv_win_scale); - - /* rfc5961 challenge ack rate limiting */ --int sysctl_tcp_challenge_ack_limit = 100; -+int sysctl_tcp_challenge_ack_limit = 1000; - - int sysctl_tcp_stdurg __read_mostly; - int sysctl_tcp_rfc1337 __read_mostly; -@@ -3380,7 +3380,7 @@ static void tcp_send_challenge_ack(struc - static u32 challenge_timestamp; - static unsigned int challenge_count; - struct tcp_sock *tp = tcp_sk(sk); -- u32 now; -+ u32 count, now; - - /* First check our per-socket dupack rate limit. */ - if (tcp_oow_rate_limited(sock_net(sk), skb, -@@ -3388,13 +3388,18 @@ static void tcp_send_challenge_ack(struc - &tp->last_oow_ack_time)) - return; - -- /* Then check the check host-wide RFC 5961 rate limit. */ -+ /* Then check host-wide RFC 5961 rate limit. */ - now = jiffies / HZ; - if (now != challenge_timestamp) { -+ u32 half = (sysctl_tcp_challenge_ack_limit + 1) >> 1; -+ - challenge_timestamp = now; -- challenge_count = 0; -+ WRITE_ONCE(challenge_count, half + -+ prandom_u32_max(sysctl_tcp_challenge_ack_limit)); - } -- if (++challenge_count <= sysctl_tcp_challenge_ack_limit) { -+ count = READ_ONCE(challenge_count); -+ if (count > 0) { -+ WRITE_ONCE(challenge_count, count - 1); - NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPCHALLENGEACK); - tcp_send_ack(sk); - } diff --git a/target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch b/target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch deleted file mode 100644 index 2b9c4b00a2..0000000000 --- a/target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch +++ /dev/null @@ -1,17 +0,0 @@ -Fix a regression in the af_packet code that was breaking PPPoE - -pppd sends packets with only a header and no payload. - -Signed-off-by: Felix Fietkau - ---- a/net/packet/af_packet.c -+++ b/net/packet/af_packet.c -@@ -2112,7 +2112,7 @@ static void tpacket_destruct_skb(struct - static bool ll_header_truncated(const struct net_device *dev, int len) - { - /* net device doesn't like empty head */ -- if (unlikely(len <= dev->hard_header_len)) { -+ if (unlikely(len < dev->hard_header_len)) { - net_warn_ratelimited("%s: packet size is too short (%d <= %d)\n", - current->comm, len, dev->hard_header_len); - return true; diff --git a/target/linux/generic/patches-4.1/111-jffs2-add-RENAME_EXCHANGE-support.patch b/target/linux/generic/patches-4.1/111-jffs2-add-RENAME_EXCHANGE-support.patch index 0e1842186a..e1f1b29e1e 100644 --- a/target/linux/generic/patches-4.1/111-jffs2-add-RENAME_EXCHANGE-support.patch +++ b/target/linux/generic/patches-4.1/111-jffs2-add-RENAME_EXCHANGE-support.patch @@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau else /* Unlink the original */ ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), -@@ -879,7 +885,7 @@ static int jffs2_rename (struct inode *o +@@ -884,7 +890,7 @@ static int jffs2_rename (struct inode *o return ret; } diff --git a/target/linux/generic/patches-4.1/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch b/target/linux/generic/patches-4.1/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch index bd0718d7f9..02644d0583 100644 --- a/target/linux/generic/patches-4.1/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch +++ b/target/linux/generic/patches-4.1/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch @@ -65,7 +65,7 @@ Signed-off-by: David S. Miller { const struct usb_cdc_union_desc *union_desc = NULL; struct cdc_ncm_ctx *ctx; -@@ -883,6 +885,17 @@ advance: +@@ -894,6 +896,17 @@ advance: /* finish setting up the device specific data */ cdc_ncm_setup(dev); @@ -83,7 +83,7 @@ Signed-off-by: David S. Miller /* override ethtool_ops */ dev->net->ethtool_ops = &cdc_ncm_ethtool_ops; -@@ -985,8 +998,11 @@ static int cdc_ncm_bind(struct usbnet *d +@@ -996,8 +1009,11 @@ static int cdc_ncm_bind(struct usbnet *d if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM) return -ENODEV; @@ -97,7 +97,7 @@ Signed-off-by: David S. Miller /* * We should get an event when network connection is "connected" or -@@ -1017,6 +1033,14 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm +@@ -1028,6 +1044,14 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm struct usb_cdc_ncm_nth16 *nth16 = (void *)skb->data; size_t ndpoffset = le16_to_cpu(nth16->wNdpIndex); @@ -112,7 +112,7 @@ Signed-off-by: David S. Miller /* follow the chain of NDPs, looking for a match */ while (ndpoffset) { ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb->data + ndpoffset); -@@ -1026,7 +1050,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm +@@ -1037,7 +1061,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm } /* align new NDP */ @@ -122,7 +122,7 @@ Signed-off-by: David S. Miller /* verify that there is room for the NDP and the datagram (reserve) */ if ((ctx->tx_max - skb->len - reserve) < ctx->max_ndp_size) -@@ -1039,7 +1064,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm +@@ -1050,7 +1075,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm nth16->wNdpIndex = cpu_to_le16(skb->len); /* push a new empty NDP */ @@ -135,7 +135,7 @@ Signed-off-by: David S. Miller ndp16->dwSignature = sign; ndp16->wLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp16) + sizeof(struct usb_cdc_ncm_dpe16)); return ndp16; -@@ -1054,6 +1083,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev +@@ -1065,6 +1094,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev struct sk_buff *skb_out; u16 n = 0, index, ndplen; u8 ready2send = 0; @@ -151,7 +151,7 @@ Signed-off-by: David S. Miller /* if there is a remaining skb, it gets priority */ if (skb != NULL) { -@@ -1108,7 +1146,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev +@@ -1119,7 +1157,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev cdc_ncm_align_tail(skb_out, ctx->tx_modulus, ctx->tx_remainder, ctx->tx_max); /* check if we had enough room left for both NDP and frame */ @@ -160,7 +160,7 @@ Signed-off-by: David S. Miller if (n == 0) { /* won't fit, MTU problem? */ dev_kfree_skb_any(skb); -@@ -1181,6 +1219,17 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev +@@ -1192,6 +1230,17 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev /* variables will be reset at next call */ } diff --git a/target/linux/generic/patches-4.1/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch b/target/linux/generic/patches-4.1/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch index 2cd5a046d3..c7bf45a2a8 100644 --- a/target/linux/generic/patches-4.1/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch +++ b/target/linux/generic/patches-4.1/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch @@ -48,7 +48,7 @@ Signed-off-by: Petr Å tetiar --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c -@@ -821,6 +821,7 @@ static const struct usb_device_id produc +@@ -824,6 +824,7 @@ static const struct usb_device_id produc {QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */ {QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */ {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */ @@ -56,7 +56,7 @@ Signed-off-by: Petr Å tetiar {QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */ {QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */ {QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */ -@@ -852,10 +853,24 @@ static const struct usb_device_id produc +@@ -855,10 +856,24 @@ static const struct usb_device_id produc }; MODULE_DEVICE_TABLE(usb, products); @@ -81,7 +81,7 @@ Signed-off-by: Petr Å tetiar /* Workaround to enable dynamic IDs. This disables usbnet * blacklisting functionality. Which, if required, can be -@@ -867,6 +882,12 @@ static int qmi_wwan_probe(struct usb_int +@@ -870,6 +885,12 @@ static int qmi_wwan_probe(struct usb_int id->driver_info = (unsigned long)&qmi_wwan_info; } diff --git a/target/linux/generic/patches-4.1/204-module_strip.patch b/target/linux/generic/patches-4.1/204-module_strip.patch index e46421ac90..4f5f6474ee 100644 --- a/target/linux/generic/patches-4.1/204-module_strip.patch +++ b/target/linux/generic/patches-4.1/204-module_strip.patch @@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau config INIT_ALL_POSSIBLE --- a/kernel/module.c +++ b/kernel/module.c -@@ -2685,6 +2685,7 @@ static struct module *setup_load_info(st +@@ -2709,6 +2709,7 @@ static struct module *setup_load_info(st static int check_modinfo(struct module *mod, struct load_info *info, int flags) { @@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau const char *modmagic = get_modinfo(info, "vermagic"); int err; -@@ -2710,6 +2711,7 @@ static int check_modinfo(struct module * +@@ -2734,6 +2735,7 @@ static int check_modinfo(struct module * pr_warn("%s: module is from the staging directory, the quality " "is unknown, you have been warned.\n", mod->name); } diff --git a/target/linux/generic/patches-4.1/220-gc_sections.patch b/target/linux/generic/patches-4.1/220-gc_sections.patch index 832be4fcf0..d18fabafbc 100644 --- a/target/linux/generic/patches-4.1/220-gc_sections.patch +++ b/target/linux/generic/patches-4.1/220-gc_sections.patch @@ -324,7 +324,7 @@ Signed-off-by: Gabor Juhos VMLINUX_SYMBOL(__ctors_end) = .; #else #define KERNEL_CTORS() -@@ -542,7 +543,7 @@ +@@ -546,7 +547,7 @@ #define SBSS(sbss_align) \ . = ALIGN(sbss_align); \ .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ @@ -333,7 +333,7 @@ Signed-off-by: Gabor Juhos *(.scommon) \ } -@@ -560,7 +561,7 @@ +@@ -564,7 +565,7 @@ BSS_FIRST_SECTIONS \ *(.bss..page_aligned) \ *(.dynbss) \ @@ -342,7 +342,7 @@ Signed-off-by: Gabor Juhos *(COMMON) \ } -@@ -609,7 +610,7 @@ +@@ -613,7 +614,7 @@ . = ALIGN(8); \ __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___bug_table) = .; \ @@ -351,7 +351,7 @@ Signed-off-by: Gabor Juhos VMLINUX_SYMBOL(__stop___bug_table) = .; \ } #else -@@ -621,7 +622,7 @@ +@@ -625,7 +626,7 @@ . = ALIGN(4); \ .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__tracedata_start) = .; \ @@ -360,7 +360,7 @@ Signed-off-by: Gabor Juhos VMLINUX_SYMBOL(__tracedata_end) = .; \ } #else -@@ -638,17 +639,17 @@ +@@ -642,17 +643,17 @@ #define INIT_SETUP(initsetup_align) \ . = ALIGN(initsetup_align); \ VMLINUX_SYMBOL(__setup_start) = .; \ @@ -382,7 +382,7 @@ Signed-off-by: Gabor Juhos INIT_CALLS_LEVEL(0) \ INIT_CALLS_LEVEL(1) \ INIT_CALLS_LEVEL(2) \ -@@ -662,21 +663,21 @@ +@@ -666,21 +667,21 @@ #define CON_INITCALL \ VMLINUX_SYMBOL(__con_initcall_start) = .; \ diff --git a/target/linux/generic/patches-4.1/221-module_exports.patch b/target/linux/generic/patches-4.1/221-module_exports.patch index 57e2549494..38ea10a47f 100644 --- a/target/linux/generic/patches-4.1/221-module_exports.patch +++ b/target/linux/generic/patches-4.1/221-module_exports.patch @@ -43,7 +43,7 @@ } \ \ /* __*init sections */ \ -@@ -696,6 +706,8 @@ +@@ -700,6 +710,8 @@ EXIT_TEXT \ EXIT_DATA \ EXIT_CALL \ diff --git a/target/linux/generic/patches-4.1/300-mips_expose_boot_raw.patch b/target/linux/generic/patches-4.1/300-mips_expose_boot_raw.patch index 49f2ded56c..b9cf5ba25a 100644 --- a/target/linux/generic/patches-4.1/300-mips_expose_boot_raw.patch +++ b/target/linux/generic/patches-4.1/300-mips_expose_boot_raw.patch @@ -18,7 +18,7 @@ Acked-by: Rob Landley config CEVT_BCM1480 bool -@@ -2676,6 +2673,18 @@ config USE_OF +@@ -2677,6 +2674,18 @@ config USE_OF config BUILTIN_DTB bool diff --git a/target/linux/generic/patches-4.1/304-mips_disable_fpu.patch b/target/linux/generic/patches-4.1/304-mips_disable_fpu.patch index 3288d19d8e..646fe53ad1 100644 --- a/target/linux/generic/patches-4.1/304-mips_disable_fpu.patch +++ b/target/linux/generic/patches-4.1/304-mips_disable_fpu.patch @@ -26,7 +26,7 @@ v2: incorporated changes suggested by Jonas Gorski --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig -@@ -2668,6 +2668,20 @@ config MIPS_O32_FP64_SUPPORT +@@ -2669,6 +2669,20 @@ config MIPS_O32_FP64_SUPPORT If unsure, say N. diff --git a/target/linux/generic/patches-4.1/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/patches-4.1/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch index d2fb8022e4..7afc1386b1 100644 --- a/target/linux/generic/patches-4.1/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch +++ b/target/linux/generic/patches-4.1/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch @@ -11,7 +11,7 @@ Signed-off-by: Daniel Golle --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c -@@ -1218,6 +1218,49 @@ static struct mtd_info * __init open_mtd +@@ -1221,6 +1221,49 @@ static struct mtd_info * __init open_mtd return mtd; } @@ -61,7 +61,7 @@ Signed-off-by: Daniel Golle static int __init ubi_init(void) { int err, i, k; -@@ -1310,6 +1353,12 @@ static int __init ubi_init(void) +@@ -1313,6 +1356,12 @@ static int __init ubi_init(void) } } diff --git a/target/linux/generic/patches-4.1/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch b/target/linux/generic/patches-4.1/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch index f6c71a2f63..c4a672c964 100644 --- a/target/linux/generic/patches-4.1/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch +++ b/target/linux/generic/patches-4.1/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch @@ -41,7 +41,7 @@ Signed-off-by: Daniel Golle #ifdef CONFIG_ROOT_NFS #define NFSROOT_TIMEOUT_MIN 5 -@@ -532,6 +552,10 @@ void __init mount_root(void) +@@ -532,6 +553,10 @@ void __init mount_root(void) change_floppy("root floppy"); } #endif diff --git a/target/linux/generic/patches-4.1/494-mtd-ubi-add-EOF-marker-support.patch b/target/linux/generic/patches-4.1/494-mtd-ubi-add-EOF-marker-support.patch index 14fae764fe..dd5ee306ef 100644 --- a/target/linux/generic/patches-4.1/494-mtd-ubi-add-EOF-marker-support.patch +++ b/target/linux/generic/patches-4.1/494-mtd-ubi-add-EOF-marker-support.patch @@ -41,7 +41,7 @@ break; --- a/drivers/mtd/ubi/ubi.h +++ b/drivers/mtd/ubi/ubi.h -@@ -739,6 +739,7 @@ struct ubi_attach_info { +@@ -741,6 +741,7 @@ struct ubi_attach_info { int mean_ec; uint64_t ec_sum; int ec_count; diff --git a/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch index 282cbdd0de..1187845879 100644 --- a/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch +++ b/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch @@ -50,25 +50,16 @@ static bool ip_checkentry(const struct ipt_ip *ip) { -@@ -564,7 +590,7 @@ static void cleanup_match(struct xt_entr - } - - static int --check_entry(const struct ipt_entry *e, const char *name) -+check_entry(struct ipt_entry *e, const char *name) - { - const struct xt_entry_target *t; - -@@ -573,6 +599,8 @@ check_entry(const struct ipt_entry *e, c - return -EINVAL; - } +@@ -649,6 +675,8 @@ find_check_entry(struct ipt_entry *e, st + struct xt_mtchk_param mtpar; + struct xt_entry_match *ematch; + ip_checkdefault(&e->ip); + - if (e->target_offset + sizeof(struct xt_entry_target) > - e->next_offset) - return -EINVAL; -@@ -934,6 +962,7 @@ copy_entries_to_user(unsigned int total_ + j = 0; + mtpar.net = net; + mtpar.table = name; +@@ -941,6 +969,7 @@ copy_entries_to_user(unsigned int total_ const struct xt_table_info *private = table->private; int ret = 0; const void *loc_cpu_entry; @@ -76,7 +67,7 @@ counters = alloc_counters(table); if (IS_ERR(counters)) -@@ -964,6 +993,14 @@ copy_entries_to_user(unsigned int total_ +@@ -971,6 +1000,14 @@ copy_entries_to_user(unsigned int total_ ret = -EFAULT; goto free_counters; } diff --git a/target/linux/generic/patches-4.1/630-packet_socket_type.patch b/target/linux/generic/patches-4.1/630-packet_socket_type.patch index a52c45413e..a59cba33d6 100644 --- a/target/linux/generic/patches-4.1/630-packet_socket_type.patch +++ b/target/linux/generic/patches-4.1/630-packet_socket_type.patch @@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -1765,12 +1767,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -1769,12 +1771,12 @@ static int packet_rcv(struct sk_buff *sk int skb_len = skb->len; unsigned int snaplen, res; @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -1890,12 +1892,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -1894,12 +1896,12 @@ static int tpacket_rcv(struct sk_buff *s BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2871,6 +2873,7 @@ static int packet_create(struct net *net +@@ -2866,6 +2868,7 @@ static int packet_create(struct net *net spin_lock_init(&po->bind_lock); mutex_init(&po->pg_vec_lock); po->prot_hook.func = packet_rcv; @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3476,6 +3479,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3472,6 +3475,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 default: return -ENOPROTOOPT; } -@@ -3527,6 +3540,13 @@ static int packet_getsockopt(struct sock +@@ -3523,6 +3536,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.1/655-increase_skb_pad.patch b/target/linux/generic/patches-4.1/655-increase_skb_pad.patch index ad872ff87a..dfc93efad3 100644 --- a/target/linux/generic/patches-4.1/655-increase_skb_pad.patch +++ b/target/linux/generic/patches-4.1/655-increase_skb_pad.patch @@ -1,6 +1,6 @@ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2028,7 +2028,7 @@ static inline int pskb_network_may_pull( +@@ -2052,7 +2052,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.1/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-4.1/656-skb_reduce_truesize-helper.patch index 762ba25d4b..6baee5220b 100644 --- a/target/linux/generic/patches-4.1/656-skb_reduce_truesize-helper.patch +++ b/target/linux/generic/patches-4.1/656-skb_reduce_truesize-helper.patch @@ -14,7 +14,7 @@ when needed. --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2073,6 +2073,24 @@ static inline void pskb_trim_unique(stru +@@ -2097,6 +2097,24 @@ static inline void pskb_trim_unique(stru BUG_ON(err); } diff --git a/target/linux/generic/patches-4.1/657-qdisc_reduce_truesize.patch b/target/linux/generic/patches-4.1/657-qdisc_reduce_truesize.patch index 6777eecf5a..410e0b763d 100644 --- a/target/linux/generic/patches-4.1/657-qdisc_reduce_truesize.patch +++ b/target/linux/generic/patches-4.1/657-qdisc_reduce_truesize.patch @@ -13,7 +13,7 @@ commont qdiscs. --- a/net/sched/sch_codel.c +++ b/net/sched/sch_codel.c -@@ -96,6 +96,8 @@ static int codel_qdisc_enqueue(struct sk +@@ -97,6 +97,8 @@ static int codel_qdisc_enqueue(struct sk struct codel_sched_data *q; if (likely(qdisc_qlen(sch) < sch->limit)) { diff --git a/target/linux/generic/patches-4.1/660-fq_codel_defaults.patch b/target/linux/generic/patches-4.1/660-fq_codel_defaults.patch index e0f73dedb9..8a870cccc1 100644 --- a/target/linux/generic/patches-4.1/660-fq_codel_defaults.patch +++ b/target/linux/generic/patches-4.1/660-fq_codel_defaults.patch @@ -1,6 +1,6 @@ --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c -@@ -387,8 +387,8 @@ static int fq_codel_init(struct Qdisc *s +@@ -394,8 +394,8 @@ static int fq_codel_init(struct Qdisc *s struct fq_codel_sched_data *q = qdisc_priv(sch); int i; diff --git a/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch b/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch index 7e42cdd3d0..cb80c3f54c 100644 --- a/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch +++ b/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch @@ -13,7 +13,7 @@ device, it has to decide which ones to send first, which ones to --- a/net/sched/sch_fq_codel.c +++ b/net/sched/sch_fq_codel.c -@@ -592,7 +592,7 @@ static const struct Qdisc_class_ops fq_c +@@ -599,7 +599,7 @@ static const struct Qdisc_class_ops fq_c .walk = fq_codel_walk, }; @@ -22,7 +22,7 @@ .cl_ops = &fq_codel_class_ops, .id = "fq_codel", .priv_size = sizeof(struct fq_codel_sched_data), -@@ -608,6 +608,7 @@ static struct Qdisc_ops fq_codel_qdisc_o +@@ -615,6 +615,7 @@ static struct Qdisc_ops fq_codel_qdisc_o .dump_stats = fq_codel_dump_stats, .owner = THIS_MODULE, }; @@ -42,7 +42,7 @@ struct Qdisc_class_common { --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c -@@ -739,7 +739,7 @@ static void attach_one_default_qdisc(str +@@ -742,7 +742,7 @@ static void attach_one_default_qdisc(str if (dev->tx_queue_len) { qdisc = qdisc_create_dflt(dev_queue, diff --git a/target/linux/generic/patches-4.1/663-remove_pfifo_fast.patch b/target/linux/generic/patches-4.1/663-remove_pfifo_fast.patch index 5b26ca3515..50b90b375f 100644 --- a/target/linux/generic/patches-4.1/663-remove_pfifo_fast.patch +++ b/target/linux/generic/patches-4.1/663-remove_pfifo_fast.patch @@ -1,6 +1,6 @@ --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c -@@ -442,140 +442,6 @@ static struct Qdisc noqueue_qdisc = { +@@ -445,140 +445,6 @@ static struct Qdisc noqueue_qdisc = { .busylock = __SPIN_LOCK_UNLOCKED(noqueue_qdisc.busylock), }; diff --git a/target/linux/generic/patches-4.1/664-codel_fix_3_12.patch b/target/linux/generic/patches-4.1/664-codel_fix_3_12.patch index 8e156fd79d..d17acd02ed 100644 --- a/target/linux/generic/patches-4.1/664-codel_fix_3_12.patch +++ b/target/linux/generic/patches-4.1/664-codel_fix_3_12.patch @@ -1,6 +1,6 @@ --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c -@@ -1960,7 +1960,7 @@ static int __init pktsched_init(void) +@@ -1962,7 +1962,7 @@ static int __init pktsched_init(void) return err; } diff --git a/target/linux/generic/patches-4.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/patches-4.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index f40fc386f5..b990f50608 100644 --- a/target/linux/generic/patches-4.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/patches-4.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -295,15 +295,15 @@ Signed-off-by: Steven Barth __skb_tunnel_rx(skb, t->dev, t->net); -@@ -1123,6 +1260,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1168,6 +1305,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str __u32 mtu; u8 tproto; int err; + struct __ip6_tnl_fmr *fmr; tproto = ACCESS_ONCE(t->parms.proto); - if (tproto != IPPROTO_IPIP && tproto != 0) -@@ -1142,6 +1280,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str + if ((tproto != IPPROTO_IPV6 && tproto != 0) || +@@ -1198,6 +1336,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK) fl6.flowi6_mark = skb->mark; @@ -311,18 +311,18 @@ Signed-off-by: Steven Barth + for (fmr = t->parms.fmrs; fmr; fmr = fmr->next) { + unsigned mshift = 32 - fmr->ip4_prefix_len; + if (ntohl(fmr->ip4_prefix.s_addr) >> mshift == -+ ntohl(iph->daddr) >> mshift) ++ ntohl(ip_hdr(skb)->daddr) >> mshift) + break; + } + + /* change dstaddr according to FMR */ + if (fmr) -+ ip4ip6_fmr_calc(&fl6.daddr, iph, skb_tail_pointer(skb), fmr, true); ++ ip4ip6_fmr_calc(&fl6.daddr, ip_hdr(skb), skb_tail_pointer(skb), fmr, true); + err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu); if (err != 0) { - /* XXX: send ICMP error even if DF is not set. */ -@@ -1310,6 +1460,14 @@ ip6_tnl_change(struct ip6_tnl *t, const + if (err == -EMSGSIZE) +@@ -1312,6 +1462,14 @@ ip6_tnl_change(struct ip6_tnl *t, const t->parms.flowinfo = p->flowinfo; t->parms.link = p->link; t->parms.proto = p->proto; @@ -337,7 +337,7 @@ Signed-off-by: Steven Barth ip6_tnl_dst_reset(t); ip6_tnl_link_config(t); return 0; -@@ -1348,6 +1506,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ +@@ -1350,6 +1508,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ p->flowinfo = u->flowinfo; p->link = u->link; p->proto = u->proto; @@ -345,7 +345,7 @@ Signed-off-by: Steven Barth memcpy(p->name, u->name, sizeof(u->name)); } -@@ -1634,6 +1793,15 @@ static int ip6_tnl_validate(struct nlatt +@@ -1636,6 +1795,15 @@ static int ip6_tnl_validate(struct nlatt return 0; } @@ -361,7 +361,7 @@ Signed-off-by: Steven Barth static void ip6_tnl_netlink_parms(struct nlattr *data[], struct __ip6_tnl_parm *parms) { -@@ -1665,6 +1833,46 @@ static void ip6_tnl_netlink_parms(struct +@@ -1667,6 +1835,46 @@ static void ip6_tnl_netlink_parms(struct if (data[IFLA_IPTUN_PROTO]) parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]); @@ -408,7 +408,7 @@ Signed-off-by: Steven Barth } static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev, -@@ -1717,6 +1925,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -1719,6 +1927,12 @@ static void ip6_tnl_dellink(struct net_d static size_t ip6_tnl_get_size(const struct net_device *dev) { @@ -421,7 +421,7 @@ Signed-off-by: Steven Barth return /* IFLA_IPTUN_LINK */ nla_total_size(4) + -@@ -1734,6 +1948,24 @@ static size_t ip6_tnl_get_size(const str +@@ -1736,6 +1950,24 @@ static size_t ip6_tnl_get_size(const str nla_total_size(4) + /* IFLA_IPTUN_PROTO */ nla_total_size(1) + @@ -446,7 +446,7 @@ Signed-off-by: Steven Barth 0; } -@@ -1741,6 +1973,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1743,6 +1975,9 @@ static int ip6_tnl_fill_info(struct sk_b { struct ip6_tnl *tunnel = netdev_priv(dev); struct __ip6_tnl_parm *parm = &tunnel->parms; @@ -456,7 +456,7 @@ Signed-off-by: Steven Barth if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || -@@ -1749,8 +1984,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1751,8 +1986,27 @@ static int ip6_tnl_fill_info(struct sk_b nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) || nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || @@ -485,7 +485,7 @@ Signed-off-by: Steven Barth return 0; nla_put_failure: -@@ -1774,6 +2028,7 @@ static const struct nla_policy ip6_tnl_p +@@ -1776,6 +2030,7 @@ static const struct nla_policy ip6_tnl_p [IFLA_IPTUN_FLOWINFO] = { .type = NLA_U32 }, [IFLA_IPTUN_FLAGS] = { .type = NLA_U32 }, [IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, diff --git a/target/linux/generic/patches-4.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-4.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index a7cfa23521..98abfacb85 100644 --- a/target/linux/generic/patches-4.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-4.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau return 0; --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1602,6 +1602,8 @@ struct net_device { +@@ -1603,6 +1603,8 @@ struct net_device { struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; diff --git a/target/linux/generic/patches-4.1/721-phy_packets.patch b/target/linux/generic/patches-4.1/721-phy_packets.patch index 3a963b5d69..ecf1851dfb 100644 --- a/target/linux/generic/patches-4.1/721-phy_packets.patch +++ b/target/linux/generic/patches-4.1/721-phy_packets.patch @@ -1,6 +1,6 @@ --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1270,6 +1270,7 @@ enum netdev_priv_flags { +@@ -1271,6 +1271,7 @@ enum netdev_priv_flags { IFF_XMIT_DST_RELEASE_PERM = 1<<22, IFF_IPVLAN_MASTER = 1<<23, IFF_IPVLAN_SLAVE = 1<<24, @@ -8,7 +8,7 @@ }; #define IFF_802_1Q_VLAN IFF_802_1Q_VLAN -@@ -1297,6 +1298,7 @@ enum netdev_priv_flags { +@@ -1298,6 +1299,7 @@ enum netdev_priv_flags { #define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM #define IFF_IPVLAN_MASTER IFF_IPVLAN_MASTER #define IFF_IPVLAN_SLAVE IFF_IPVLAN_SLAVE @@ -16,7 +16,7 @@ /** * struct net_device - The DEVICE structure. -@@ -1567,6 +1569,11 @@ struct net_device { +@@ -1568,6 +1570,11 @@ struct net_device { const struct swdev_ops *swdev_ops; #endif @@ -28,7 +28,7 @@ const struct header_ops *header_ops; unsigned int flags; -@@ -1633,6 +1640,10 @@ struct net_device { +@@ -1634,6 +1641,10 @@ struct net_device { struct mpls_dev __rcu *mpls_ptr; #endif @@ -41,7 +41,7 @@ */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -2059,6 +2059,10 @@ static inline int pskb_trim(struct sk_bu +@@ -2083,6 +2083,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 -@@ -2185,16 +2189,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -2209,16 +2213,6 @@ static inline struct sk_buff *dev_alloc_ } diff --git a/target/linux/generic/patches-4.1/810-pci_disable_common_quirks.patch b/target/linux/generic/patches-4.1/810-pci_disable_common_quirks.patch index 89d93e1a9e..742618b03a 100644 --- a/target/linux/generic/patches-4.1/810-pci_disable_common_quirks.patch +++ b/target/linux/generic/patches-4.1/810-pci_disable_common_quirks.patch @@ -23,7 +23,7 @@ /* The Mellanox Tavor device gives false positive parity errors * Mark this device with a broken_parity_status, to allow * PCI scanning code to "skip" this now blacklisted device. -@@ -2965,6 +2966,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -2977,6 +2978,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata); @@ -31,7 +31,7 @@ /* * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To -@@ -3021,6 +3023,8 @@ static void fixup_debug_report(struct pc +@@ -3033,6 +3035,8 @@ static void fixup_debug_report(struct pc } } @@ -40,7 +40,7 @@ /* * Some BIOS implementations leave the Intel GPU interrupts enabled, * even though no one is handling them (f.e. i915 driver is never loaded). -@@ -3055,6 +3059,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN +@@ -3067,6 +3071,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); diff --git a/target/linux/generic/patches-4.1/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-4.1/811-pci_disable_usb_common_quirks.patch index 6de4f6b9c7..e078b4e8aa 100644 --- a/target/linux/generic/patches-4.1/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/patches-4.1/811-pci_disable_usb_common_quirks.patch @@ -84,7 +84,7 @@ #endif /* __LINUX_USB_PCI_QUIRKS_H */ --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h -@@ -447,7 +447,14 @@ extern int usb_hcd_pci_probe(struct pci_ +@@ -448,7 +448,14 @@ extern int usb_hcd_pci_probe(struct pci_ extern void usb_hcd_pci_remove(struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev); diff --git a/target/linux/generic/patches-4.1/834-ledtrig-libata.patch b/target/linux/generic/patches-4.1/834-ledtrig-libata.patch index 84b722d548..41b7d9aa30 100644 --- a/target/linux/generic/patches-4.1/834-ledtrig-libata.patch +++ b/target/linux/generic/patches-4.1/834-ledtrig-libata.patch @@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -4773,6 +4786,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -4779,6 +4792,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (tag < 0) return NULL; } @@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle qc = __ata_qc_from_tag(ap, tag); qc->tag = tag; -@@ -5670,6 +5686,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5676,6 +5692,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 ata_sff_port_init(ap); return ap; -@@ -5691,6 +5710,12 @@ static void ata_host_release(struct devi +@@ -5697,6 +5716,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 kfree(ap); host->ports[i] = NULL; } -@@ -6137,7 +6162,23 @@ int ata_host_register(struct ata_host *h +@@ -6143,7 +6168,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.1/863-gpiommc.patch b/target/linux/generic/patches-4.1/863-gpiommc.patch index bd3cc84f90..a8a8ec6502 100644 --- a/target/linux/generic/patches-4.1/863-gpiommc.patch +++ b/target/linux/generic/patches-4.1/863-gpiommc.patch @@ -830,7 +830,7 @@ +be done automatically. --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -4531,6 +4531,11 @@ T: git git://linuxtv.org/anttip/media_tr +@@ -4541,6 +4541,11 @@ T: git git://linuxtv.org/anttip/media_tr S: Maintained F: drivers/media/usb/hackrf/ diff --git a/target/linux/generic/patches-4.1/903-debloat_direct_io.patch b/target/linux/generic/patches-4.1/903-debloat_direct_io.patch index ca35e57619..92e36f0bb1 100644 --- a/target/linux/generic/patches-4.1/903-debloat_direct_io.patch +++ b/target/linux/generic/patches-4.1/903-debloat_direct_io.patch @@ -26,7 +26,7 @@ endif --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -2657,6 +2657,7 @@ enum { +@@ -2659,6 +2659,7 @@ enum { DIO_SKIP_DIO_COUNT = 0x08, }; @@ -34,7 +34,7 @@ void dio_end_io(struct bio *bio, int error); ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, -@@ -2664,6 +2665,18 @@ ssize_t __blockdev_direct_IO(struct kioc +@@ -2666,6 +2667,18 @@ ssize_t __blockdev_direct_IO(struct kioc loff_t offset, get_block_t get_block, dio_iodone_t end_io, dio_submit_t submit_io, int flags); diff --git a/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch index 9fffa19766..8aca297377 100644 --- a/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch +++ b/target/linux/generic/patches-4.1/904-debloat_dma_buf.patch @@ -34,7 +34,7 @@ +MODULE_LICENSE("GPL"); --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1768,6 +1768,7 @@ int wake_up_state(struct task_struct *p, +@@ -1790,6 +1790,7 @@ int wake_up_state(struct task_struct *p, { return try_to_wake_up(p, state, 0); } diff --git a/target/linux/oxnas/patches-4.1/320-oxnas-irqchip.patch b/target/linux/oxnas/patches-4.1/320-oxnas-irqchip.patch index d0833eaaf0..5a2447d5cb 100644 --- a/target/linux/oxnas/patches-4.1/320-oxnas-irqchip.patch +++ b/target/linux/oxnas/patches-4.1/320-oxnas-irqchip.patch @@ -24,7 +24,7 @@ obj-$(CONFIG_ARCH_VT8500) += irq-vt8500.o --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c -@@ -1036,6 +1036,7 @@ IRQCHIP_DECLARE(arm1176jzf_dc_gic, "arm, +@@ -1044,6 +1044,7 @@ IRQCHIP_DECLARE(arm1176jzf_dc_gic, "arm, IRQCHIP_DECLARE(cortex_a15_gic, "arm,cortex-a15-gic", gic_of_init); IRQCHIP_DECLARE(cortex_a9_gic, "arm,cortex-a9-gic", gic_of_init); IRQCHIP_DECLARE(cortex_a7_gic, "arm,cortex-a7-gic", gic_of_init); diff --git a/target/linux/oxnas/patches-4.1/800-oxnas-ehci.patch b/target/linux/oxnas/patches-4.1/800-oxnas-ehci.patch index b283bbd3f6..87377e7cad 100644 --- a/target/linux/oxnas/patches-4.1/800-oxnas-ehci.patch +++ b/target/linux/oxnas/patches-4.1/800-oxnas-ehci.patch @@ -16,7 +16,7 @@ config USB_OXU210HP_HCD --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile -@@ -42,6 +42,7 @@ obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci- +@@ -39,6 +39,7 @@ obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci- obj-$(CONFIG_USB_EHCI_MSM) += ehci-msm.o obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o obj-$(CONFIG_USB_W90X900_EHCI) += ehci-w90x900.o diff --git a/target/linux/oxnas/patches-4.1/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch b/target/linux/oxnas/patches-4.1/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch index be15ec4772..297fc7fbbd 100644 --- a/target/linux/oxnas/patches-4.1/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch +++ b/target/linux/oxnas/patches-4.1/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch @@ -18,7 +18,7 @@ Signed-off-by: Adrian Panella --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -1928,6 +1928,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN +@@ -1894,6 +1894,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN The command-line arguments provided by the boot loader will be appended to the the device tree bootargs property. @@ -164,7 +164,7 @@ Signed-off-by: Adrian Panella static int kernel_init(void *); extern void init_IRQ(void); -@@ -560,6 +564,18 @@ asmlinkage __visible void __init start_k +@@ -555,6 +559,18 @@ asmlinkage __visible void __init start_k page_alloc_init(); pr_notice("Kernel command line: %s\n", boot_command_line); diff --git a/target/linux/oxnas/patches-4.1/999-libata-hacks.patch b/target/linux/oxnas/patches-4.1/999-libata-hacks.patch index 7d6670be56..f4574da9ba 100644 --- a/target/linux/oxnas/patches-4.1/999-libata-hacks.patch +++ b/target/linux/oxnas/patches-4.1/999-libata-hacks.patch @@ -15,7 +15,7 @@ /* initialize internal qc */ /* XXX: Tag 0 is used for drivers with legacy EH as some -@@ -4780,6 +4788,9 @@ struct ata_queued_cmd *ata_qc_new_init(s +@@ -4786,6 +4794,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); -@@ -4825,6 +4836,8 @@ void ata_qc_free(struct ata_queued_cmd * +@@ -4831,6 +4842,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/rb532/patches-4.1/001-cmdline_hack.patch b/target/linux/rb532/patches-4.1/001-cmdline_hack.patch index 2429b1bfc5..a39da9c14a 100644 --- a/target/linux/rb532/patches-4.1/001-cmdline_hack.patch +++ b/target/linux/rb532/patches-4.1/001-cmdline_hack.patch @@ -1,20 +1,20 @@ --- a/arch/mips/rb532/prom.c +++ b/arch/mips/rb532/prom.c @@ -67,6 +67,7 @@ static inline unsigned long tag2ul(char - return simple_strtoul(num, 0, 10); + return simple_strtoul(num, 0, 10); } - + +extern char __image_cmdline[]; void __init prom_setup_cmdline(void) { - static char cmd_line[COMMAND_LINE_SIZE] __initdata; + static char cmd_line[COMMAND_LINE_SIZE] __initdata; @@ -108,6 +109,9 @@ void __init prom_setup_cmdline(void) - } - *(cp++) = ' '; - + } + *(cp++) = ' '; + + strcpy(cp,(__image_cmdline)); + cp += strlen(__image_cmdline); + - i = strlen(arcs_cmdline); - if (i > 0) { - *(cp++) = ' '; + i = strlen(arcs_cmdline); + if (i > 0) { + *(cp++) = ' '; diff --git a/target/linux/rb532/patches-4.1/002-rb532_nand_fixup.patch b/target/linux/rb532/patches-4.1/002-rb532_nand_fixup.patch index 5b1dd51104..6f885997fc 100644 --- a/target/linux/rb532/patches-4.1/002-rb532_nand_fixup.patch +++ b/target/linux/rb532/patches-4.1/002-rb532_nand_fixup.patch @@ -2,7 +2,7 @@ +++ b/arch/mips/rb532/devices.c @@ -140,6 +140,19 @@ static struct platform_device cf_slot0 = }; - + /* Resources and device for NAND */ + +/* @@ -19,11 +19,11 @@ + static int rb532_dev_ready(struct mtd_info *mtd) { - return gpio_get_value(GPIO_RDY); + return gpio_get_value(GPIO_RDY); @@ -254,6 +267,16 @@ static struct platform_device *rb532_dev /* NAND definitions */ #define NAND_CHIP_DELAY 25 - + +static int rb532_nand_fixup(struct mtd_info *mtd) +{ + struct nand_chip *chip = mtd->priv; @@ -36,10 +36,12 @@ + static void __init rb532_nand_setup(void) { - switch (mips_machtype) { + switch (mips_machtype) { @@ -272,6 +295,7 @@ static void __init rb532_nand_setup(void - rb532_nand_data.chip.nr_partitions = ARRAY_SIZE(rb532_partition_info); - rb532_nand_data.chip.partitions = rb532_partition_info; - rb532_nand_data.chip.chip_delay = NAND_CHIP_DELAY; + rb532_nand_data.chip.nr_partitions = ARRAY_SIZE(rb532_partition_info); + rb532_nand_data.chip.partitions = rb532_partition_info; + rb532_nand_data.chip.chip_delay = NAND_CHIP_DELAY; + rb532_nand_data.chip.chip_fixup = &rb532_nand_fixup; } + + diff --git a/target/linux/rb532/patches-4.1/004-rb532_partition_info-rename-rootfs-to-rootfs_onboard.patch b/target/linux/rb532/patches-4.1/004-rb532_partition_info-rename-rootfs-to-rootfs_onboard.patch index 2ef9e51c1e..ad4dfc4c08 100644 --- a/target/linux/rb532/patches-4.1/004-rb532_partition_info-rename-rootfs-to-rootfs_onboard.patch +++ b/target/linux/rb532/patches-4.1/004-rb532_partition_info-rename-rootfs-to-rootfs_onboard.patch @@ -1,11 +1,11 @@ --- a/arch/mips/rb532/devices.c +++ b/arch/mips/rb532/devices.c @@ -202,7 +202,7 @@ static struct mtd_partition rb532_partit - .offset = 0, - .size = 4 * 1024 * 1024, - }, { + .offset = 0, + .size = 4 * 1024 * 1024, + }, { - .name = "rootfs", + .name = "rootfs_onboard", - .offset = MTDPART_OFS_NXTBLK, - .size = MTDPART_SIZ_FULL, - } + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL, + } -- 2.30.2