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 84d489f64f.
Changes to generic/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch based
on a90ee92337.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
master
Stijn Tintel 8 years ago
parent 06405df7a8
commit 2fc3680dd0
  1. 4
      include/kernel-version.mk
  2. 2
      target/linux/ar7/patches-4.1/500-serial_kludge.patch
  3. 6
      target/linux/generic/patches-4.1/025-bcma-from-4.6.patch
  4. 2
      target/linux/generic/patches-4.1/040-fs-overlay-fix-stacking.patch
  5. 76
      target/linux/generic/patches-4.1/096-tcp-make-challenge-acks-less-predictable.patch
  6. 17
      target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch
  7. 2
      target/linux/generic/patches-4.1/111-jffs2-add-RENAME_EXCHANGE-support.patch
  8. 16
      target/linux/generic/patches-4.1/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch
  9. 6
      target/linux/generic/patches-4.1/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch
  10. 4
      target/linux/generic/patches-4.1/204-module_strip.patch
  11. 12
      target/linux/generic/patches-4.1/220-gc_sections.patch
  12. 2
      target/linux/generic/patches-4.1/221-module_exports.patch
  13. 2
      target/linux/generic/patches-4.1/300-mips_expose_boot_raw.patch
  14. 2
      target/linux/generic/patches-4.1/304-mips_disable_fpu.patch
  15. 4
      target/linux/generic/patches-4.1/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch
  16. 2
      target/linux/generic/patches-4.1/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch
  17. 2
      target/linux/generic/patches-4.1/494-mtd-ubi-add-EOF-marker-support.patch
  18. 25
      target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch
  19. 10
      target/linux/generic/patches-4.1/630-packet_socket_type.patch
  20. 2
      target/linux/generic/patches-4.1/655-increase_skb_pad.patch
  21. 2
      target/linux/generic/patches-4.1/656-skb_reduce_truesize-helper.patch
  22. 2
      target/linux/generic/patches-4.1/657-qdisc_reduce_truesize.patch
  23. 2
      target/linux/generic/patches-4.1/660-fq_codel_defaults.patch
  24. 6
      target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch
  25. 2
      target/linux/generic/patches-4.1/663-remove_pfifo_fast.patch
  26. 2
      target/linux/generic/patches-4.1/664-codel_fix_3_12.patch
  27. 30
      target/linux/generic/patches-4.1/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
  28. 2
      target/linux/generic/patches-4.1/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
  29. 12
      target/linux/generic/patches-4.1/721-phy_packets.patch
  30. 6
      target/linux/generic/patches-4.1/810-pci_disable_common_quirks.patch
  31. 2
      target/linux/generic/patches-4.1/811-pci_disable_usb_common_quirks.patch
  32. 8
      target/linux/generic/patches-4.1/834-ledtrig-libata.patch
  33. 2
      target/linux/generic/patches-4.1/863-gpiommc.patch
  34. 4
      target/linux/generic/patches-4.1/903-debloat_direct_io.patch
  35. 2
      target/linux/generic/patches-4.1/904-debloat_dma_buf.patch
  36. 2
      target/linux/oxnas/patches-4.1/320-oxnas-irqchip.patch
  37. 2
      target/linux/oxnas/patches-4.1/800-oxnas-ehci.patch
  38. 4
      target/linux/oxnas/patches-4.1/996-ATAG_DTB_COMPAT_CMDLINE_MANGLE.patch
  39. 4
      target/linux/oxnas/patches-4.1/999-libata-hacks.patch
  40. 18
      target/linux/rb532/patches-4.1/001-cmdline_hack.patch
  41. 16
      target/linux/rb532/patches-4.1/002-rb532_nand_fixup.patch
  42. 12
      target/linux/rb532/patches-4.1/004-rb532_partition_info-rename-rootfs-to-rootfs_onboard.patch

@ -3,11 +3,11 @@
LINUX_RELEASE?=1 LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .29 LINUX_VERSION-3.18 = .29
LINUX_VERSION-4.1 = .20 LINUX_VERSION-4.1 = .34
LINUX_VERSION-4.4 = .27 LINUX_VERSION-4.4 = .27
LINUX_KERNEL_MD5SUM-3.18.29 = b25737a0bc98e80d12200de93f239c28 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 LINUX_KERNEL_MD5SUM-4.4.27 = 6c437dd8f9e964c843211cf99a876b42724fe9f2013241c13e14b6ce17846afd
ifdef KERNEL_PATCHVER ifdef KERNEL_PATCHVER

@ -14,7 +14,7 @@
}; };
/* Uart divisor latch read */ /* 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); struct uart_8250_port *up = up_to_u8250p(port);

@ -359,7 +359,7 @@
#define BCMA_CORE_ARM_CA7 0x847 #define BCMA_CORE_ARM_CA7 0x847
#define BCMA_CORE_SYS_MEM 0x849 #define BCMA_CORE_SYS_MEM 0x849
#define BCMA_CORE_DEFAULT 0xFFF #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_BCM4707 1
#define BCMA_PKG_ID_BCM4708 2 #define BCMA_PKG_ID_BCM4708 2
#define BCMA_PKG_ID_BCM4709 0 #define BCMA_PKG_ID_BCM4709 0
@ -470,7 +470,7 @@
extern u32 bcma_chipco_get_alp_clock(struct bcma_drv_cc *cc); extern u32 bcma_chipco_get_alp_clock(struct bcma_drv_cc *cc);
--- a/drivers/bcma/bcma_private.h --- a/drivers/bcma/bcma_private.h
+++ b/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_early_init(struct bcma_drv_cc *cc);
void bcma_core_chipcommon_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); void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable);
@ -481,7 +481,7 @@
/* driver_chipcommon_b.c */ /* driver_chipcommon_b.c */
int bcma_core_chipcommon_b_init(struct bcma_drv_cc_b *ccb); 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_alp_clock(struct bcma_drv_cc *cc);
u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc); u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc);

@ -21,7 +21,7 @@ Cc: <stable@vger.kernel.org> # v4.2+
--- a/fs/overlayfs/inode.c --- a/fs/overlayfs/inode.c
+++ b/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); ovl_path_upper(dentry, &realpath);
} }

@ -1,76 +0,0 @@
From 75ff39ccc1bd5d3c455b6822ab09e533c551f758 Mon Sep 17 00:00:00 2001
From: Eric Dumazet <edumazet@google.com>
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 <ycao009@ucr.edu>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
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);
}

@ -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 <nbd@nbd.name>
--- 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;

@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
else else
/* Unlink the original */ /* Unlink the original */
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), 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; return ret;
} }

@ -65,7 +65,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
{ {
const struct usb_cdc_union_desc *union_desc = NULL; const struct usb_cdc_union_desc *union_desc = NULL;
struct cdc_ncm_ctx *ctx; struct cdc_ncm_ctx *ctx;
@@ -883,6 +885,17 @@ advance: @@ -894,6 +896,17 @@ advance:
/* finish setting up the device specific data */ /* finish setting up the device specific data */
cdc_ncm_setup(dev); cdc_ncm_setup(dev);
@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* override ethtool_ops */ /* override ethtool_ops */
dev->net->ethtool_ops = &cdc_ncm_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) if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM)
return -ENODEV; return -ENODEV;
@ -97,7 +97,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* /*
* We should get an event when network connection is "connected" or * 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; struct usb_cdc_ncm_nth16 *nth16 = (void *)skb->data;
size_t ndpoffset = le16_to_cpu(nth16->wNdpIndex); size_t ndpoffset = le16_to_cpu(nth16->wNdpIndex);
@ -112,7 +112,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* follow the chain of NDPs, looking for a match */ /* follow the chain of NDPs, looking for a match */
while (ndpoffset) { while (ndpoffset) {
ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb->data + 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 */ /* align new NDP */
@ -122,7 +122,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* verify that there is room for the NDP and the datagram (reserve) */ /* verify that there is room for the NDP and the datagram (reserve) */
if ((ctx->tx_max - skb->len - reserve) < ctx->max_ndp_size) 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); nth16->wNdpIndex = cpu_to_le16(skb->len);
/* push a new empty NDP */ /* push a new empty NDP */
@ -135,7 +135,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
ndp16->dwSignature = sign; ndp16->dwSignature = sign;
ndp16->wLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp16) + sizeof(struct usb_cdc_ncm_dpe16)); ndp16->wLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp16) + sizeof(struct usb_cdc_ncm_dpe16));
return ndp16; 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; struct sk_buff *skb_out;
u16 n = 0, index, ndplen; u16 n = 0, index, ndplen;
u8 ready2send = 0; u8 ready2send = 0;
@ -151,7 +151,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* if there is a remaining skb, it gets priority */ /* if there is a remaining skb, it gets priority */
if (skb != NULL) { 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); 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 */ /* check if we had enough room left for both NDP and frame */
@ -160,7 +160,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (n == 0) { if (n == 0) {
/* won't fit, MTU problem? */ /* won't fit, MTU problem? */
dev_kfree_skb_any(skb); 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 */ /* variables will be reset at next call */
} }

@ -48,7 +48,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
--- a/drivers/net/usb/qmi_wwan.c --- a/drivers/net/usb/qmi_wwan.c
+++ b/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(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
{QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */ {QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
{QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */ {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
@ -56,7 +56,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
{QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */ {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, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
{QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */ {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); MODULE_DEVICE_TABLE(usb, products);
@ -81,7 +81,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
/* Workaround to enable dynamic IDs. This disables usbnet /* Workaround to enable dynamic IDs. This disables usbnet
* blacklisting functionality. Which, if required, can be * 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; id->driver_info = (unsigned long)&qmi_wwan_info;
} }

@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
config INIT_ALL_POSSIBLE config INIT_ALL_POSSIBLE
--- a/kernel/module.c --- a/kernel/module.c
+++ b/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) static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{ {
@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
const char *modmagic = get_modinfo(info, "vermagic"); const char *modmagic = get_modinfo(info, "vermagic");
int err; 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 " pr_warn("%s: module is from the staging directory, the quality "
"is unknown, you have been warned.\n", mod->name); "is unknown, you have been warned.\n", mod->name);
} }

@ -324,7 +324,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
VMLINUX_SYMBOL(__ctors_end) = .; VMLINUX_SYMBOL(__ctors_end) = .;
#else #else
#define KERNEL_CTORS() #define KERNEL_CTORS()
@@ -542,7 +543,7 @@ @@ -546,7 +547,7 @@
#define SBSS(sbss_align) \ #define SBSS(sbss_align) \
. = ALIGN(sbss_align); \ . = ALIGN(sbss_align); \
.sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \
@ -333,7 +333,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
*(.scommon) \ *(.scommon) \
} }
@@ -560,7 +561,7 @@ @@ -564,7 +565,7 @@
BSS_FIRST_SECTIONS \ BSS_FIRST_SECTIONS \
*(.bss..page_aligned) \ *(.bss..page_aligned) \
*(.dynbss) \ *(.dynbss) \
@ -342,7 +342,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
*(COMMON) \ *(COMMON) \
} }
@@ -609,7 +610,7 @@ @@ -613,7 +614,7 @@
. = ALIGN(8); \ . = ALIGN(8); \
__bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___bug_table) = .; \ VMLINUX_SYMBOL(__start___bug_table) = .; \
@ -351,7 +351,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
VMLINUX_SYMBOL(__stop___bug_table) = .; \ VMLINUX_SYMBOL(__stop___bug_table) = .; \
} }
#else #else
@@ -621,7 +622,7 @@ @@ -625,7 +626,7 @@
. = ALIGN(4); \ . = ALIGN(4); \
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \ .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__tracedata_start) = .; \ VMLINUX_SYMBOL(__tracedata_start) = .; \
@ -360,7 +360,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
VMLINUX_SYMBOL(__tracedata_end) = .; \ VMLINUX_SYMBOL(__tracedata_end) = .; \
} }
#else #else
@@ -638,17 +639,17 @@ @@ -642,17 +643,17 @@
#define INIT_SETUP(initsetup_align) \ #define INIT_SETUP(initsetup_align) \
. = ALIGN(initsetup_align); \ . = ALIGN(initsetup_align); \
VMLINUX_SYMBOL(__setup_start) = .; \ VMLINUX_SYMBOL(__setup_start) = .; \
@ -382,7 +382,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
INIT_CALLS_LEVEL(0) \ INIT_CALLS_LEVEL(0) \
INIT_CALLS_LEVEL(1) \ INIT_CALLS_LEVEL(1) \
INIT_CALLS_LEVEL(2) \ INIT_CALLS_LEVEL(2) \
@@ -662,21 +663,21 @@ @@ -666,21 +667,21 @@
#define CON_INITCALL \ #define CON_INITCALL \
VMLINUX_SYMBOL(__con_initcall_start) = .; \ VMLINUX_SYMBOL(__con_initcall_start) = .; \

@ -43,7 +43,7 @@
} \ } \
\ \
/* __*init sections */ \ /* __*init sections */ \
@@ -696,6 +706,8 @@ @@ -700,6 +710,8 @@
EXIT_TEXT \ EXIT_TEXT \
EXIT_DATA \ EXIT_DATA \
EXIT_CALL \ EXIT_CALL \

@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
config CEVT_BCM1480 config CEVT_BCM1480
bool bool
@@ -2676,6 +2673,18 @@ config USE_OF @@ -2677,6 +2674,18 @@ config USE_OF
config BUILTIN_DTB config BUILTIN_DTB
bool bool

@ -26,7 +26,7 @@ v2: incorporated changes suggested by Jonas Gorski
--- a/arch/mips/Kconfig --- a/arch/mips/Kconfig
+++ b/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. If unsure, say N.

@ -11,7 +11,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/mtd/ubi/build.c --- a/drivers/mtd/ubi/build.c
+++ b/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; return mtd;
} }
@ -61,7 +61,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
static int __init ubi_init(void) static int __init ubi_init(void)
{ {
int err, i, k; int err, i, k;
@@ -1310,6 +1353,12 @@ static int __init ubi_init(void) @@ -1313,6 +1356,12 @@ static int __init ubi_init(void)
} }
} }

@ -41,7 +41,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#ifdef CONFIG_ROOT_NFS #ifdef CONFIG_ROOT_NFS
#define NFSROOT_TIMEOUT_MIN 5 #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"); change_floppy("root floppy");
} }
#endif #endif

@ -41,7 +41,7 @@
break; break;
--- a/drivers/mtd/ubi/ubi.h --- a/drivers/mtd/ubi/ubi.h
+++ b/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; int mean_ec;
uint64_t ec_sum; uint64_t ec_sum;
int ec_count; int ec_count;

@ -50,25 +50,16 @@
static bool static bool
ip_checkentry(const struct ipt_ip *ip) ip_checkentry(const struct ipt_ip *ip)
{ {
@@ -564,7 +590,7 @@ static void cleanup_match(struct xt_entr @@ -649,6 +675,8 @@ find_check_entry(struct ipt_entry *e, st
} struct xt_mtchk_param mtpar;
struct xt_entry_match *ematch;
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;
}
+ ip_checkdefault(&e->ip); + ip_checkdefault(&e->ip);
+ +
if (e->target_offset + sizeof(struct xt_entry_target) > j = 0;
e->next_offset) mtpar.net = net;
return -EINVAL; mtpar.table = name;
@@ -934,6 +962,7 @@ copy_entries_to_user(unsigned int total_ @@ -941,6 +969,7 @@ copy_entries_to_user(unsigned int total_
const struct xt_table_info *private = table->private; const struct xt_table_info *private = table->private;
int ret = 0; int ret = 0;
const void *loc_cpu_entry; const void *loc_cpu_entry;
@ -76,7 +67,7 @@
counters = alloc_counters(table); counters = alloc_counters(table);
if (IS_ERR(counters)) 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; ret = -EFAULT;
goto free_counters; goto free_counters;
} }

@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
goto out; goto out;
if (!net_eq(dev_net(dev), sock_net(sk))) 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; int skb_len = skb->len;
unsigned int snaplen, res; unsigned int snaplen, res;
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk))) if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop; goto drop;
@@ -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.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk))) if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop; goto drop;
@@ -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); spin_lock_init(&po->bind_lock);
mutex_init(&po->pg_vec_lock); mutex_init(&po->pg_vec_lock);
po->prot_hook.func = packet_rcv; po->prot_hook.func = packet_rcv;
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sock->type == SOCK_PACKET) if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt; po->prot_hook.func = packet_rcv_spkt;
@@ -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; po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0; return 0;
} }
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
default: default:
return -ENOPROTOOPT; 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: case PACKET_VNET_HDR:
val = po->has_vnet_hdr; val = po->has_vnet_hdr;
break; break;

@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/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) * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/ */
#ifndef NET_SKB_PAD #ifndef NET_SKB_PAD

@ -14,7 +14,7 @@ when needed.
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/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); BUG_ON(err);
} }

@ -13,7 +13,7 @@ commont qdiscs.
--- a/net/sched/sch_codel.c --- a/net/sched/sch_codel.c
+++ b/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; struct codel_sched_data *q;
if (likely(qdisc_qlen(sch) < sch->limit)) { if (likely(qdisc_qlen(sch) < sch->limit)) {

@ -1,6 +1,6 @@
--- a/net/sched/sch_fq_codel.c --- a/net/sched/sch_fq_codel.c
+++ b/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); struct fq_codel_sched_data *q = qdisc_priv(sch);
int i; int i;

@ -13,7 +13,7 @@
device, it has to decide which ones to send first, which ones to device, it has to decide which ones to send first, which ones to
--- a/net/sched/sch_fq_codel.c --- a/net/sched/sch_fq_codel.c
+++ b/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, .walk = fq_codel_walk,
}; };
@ -22,7 +22,7 @@
.cl_ops = &fq_codel_class_ops, .cl_ops = &fq_codel_class_ops,
.id = "fq_codel", .id = "fq_codel",
.priv_size = sizeof(struct fq_codel_sched_data), .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, .dump_stats = fq_codel_dump_stats,
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
@ -42,7 +42,7 @@
struct Qdisc_class_common { struct Qdisc_class_common {
--- a/net/sched/sch_generic.c --- a/net/sched/sch_generic.c
+++ b/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) { if (dev->tx_queue_len) {
qdisc = qdisc_create_dflt(dev_queue, qdisc = qdisc_create_dflt(dev_queue,

@ -1,6 +1,6 @@
--- a/net/sched/sch_generic.c --- a/net/sched/sch_generic.c
+++ b/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), .busylock = __SPIN_LOCK_UNLOCKED(noqueue_qdisc.busylock),
}; };

@ -1,6 +1,6 @@
--- a/net/sched/sch_api.c --- a/net/sched/sch_api.c
+++ b/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; return err;
} }

@ -295,15 +295,15 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
__skb_tunnel_rx(skb, t->dev, t->net); __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; __u32 mtu;
u8 tproto; u8 tproto;
int err; int err;
+ struct __ip6_tnl_fmr *fmr; + struct __ip6_tnl_fmr *fmr;
tproto = ACCESS_ONCE(t->parms.proto); tproto = ACCESS_ONCE(t->parms.proto);
if (tproto != IPPROTO_IPIP && tproto != 0) if ((tproto != IPPROTO_IPV6 && tproto != 0) ||
@@ -1142,6 +1280,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str @@ -1198,6 +1336,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK) if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
fl6.flowi6_mark = skb->mark; fl6.flowi6_mark = skb->mark;
@ -311,18 +311,18 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
+ for (fmr = t->parms.fmrs; fmr; fmr = fmr->next) { + for (fmr = t->parms.fmrs; fmr; fmr = fmr->next) {
+ unsigned mshift = 32 - fmr->ip4_prefix_len; + unsigned mshift = 32 - fmr->ip4_prefix_len;
+ if (ntohl(fmr->ip4_prefix.s_addr) >> mshift == + if (ntohl(fmr->ip4_prefix.s_addr) >> mshift ==
+ ntohl(iph->daddr) >> mshift) + ntohl(ip_hdr(skb)->daddr) >> mshift)
+ break; + break;
+ } + }
+ +
+ /* change dstaddr according to FMR */ + /* change dstaddr according to FMR */
+ if (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); err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
if (err != 0) { if (err != 0) {
/* XXX: send ICMP error even if DF is not set. */ if (err == -EMSGSIZE)
@@ -1310,6 +1460,14 @@ ip6_tnl_change(struct ip6_tnl *t, const @@ -1312,6 +1462,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
t->parms.flowinfo = p->flowinfo; t->parms.flowinfo = p->flowinfo;
t->parms.link = p->link; t->parms.link = p->link;
t->parms.proto = p->proto; t->parms.proto = p->proto;
@ -337,7 +337,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
ip6_tnl_dst_reset(t); ip6_tnl_dst_reset(t);
ip6_tnl_link_config(t); ip6_tnl_link_config(t);
return 0; 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->flowinfo = u->flowinfo;
p->link = u->link; p->link = u->link;
p->proto = u->proto; p->proto = u->proto;
@ -345,7 +345,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
memcpy(p->name, u->name, sizeof(u->name)); memcpy(p->name, u->name, sizeof(u->name));
} }
@@ -1634,6 +1793,15 @@ static int ip6_tnl_validate(struct nlatt @@ -1636,6 +1795,15 @@ static int ip6_tnl_validate(struct nlatt
return 0; return 0;
} }
@ -361,7 +361,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
static void ip6_tnl_netlink_parms(struct nlattr *data[], static void ip6_tnl_netlink_parms(struct nlattr *data[],
struct __ip6_tnl_parm *parms) struct __ip6_tnl_parm *parms)
{ {
@@ -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]) if (data[IFLA_IPTUN_PROTO])
parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]); parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
@ -408,7 +408,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
} }
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev, 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) static size_t ip6_tnl_get_size(const struct net_device *dev)
{ {
@ -421,7 +421,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
return return
/* IFLA_IPTUN_LINK */ /* IFLA_IPTUN_LINK */
nla_total_size(4) + nla_total_size(4) +
@@ -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) + nla_total_size(4) +
/* IFLA_IPTUN_PROTO */ /* IFLA_IPTUN_PROTO */
nla_total_size(1) + nla_total_size(1) +
@ -446,7 +446,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
0; 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 *tunnel = netdev_priv(dev);
struct __ip6_tnl_parm *parm = &tunnel->parms; struct __ip6_tnl_parm *parm = &tunnel->parms;
@ -456,7 +456,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
@@ -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_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
@ -485,7 +485,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
return 0; return 0;
nla_put_failure: 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_FLOWINFO] = { .type = NLA_U32 },
[IFLA_IPTUN_FLAGS] = { .type = NLA_U32 }, [IFLA_IPTUN_FLAGS] = { .type = NLA_U32 },
[IFLA_IPTUN_PROTO] = { .type = NLA_U8 }, [IFLA_IPTUN_PROTO] = { .type = NLA_U8 },

@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return 0; return 0;
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/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 mc;
struct netdev_hw_addr_list dev_addrs; struct netdev_hw_addr_list dev_addrs;

@ -1,6 +1,6 @@
--- a/include/linux/netdevice.h --- a/include/linux/netdevice.h
+++ b/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_XMIT_DST_RELEASE_PERM = 1<<22,
IFF_IPVLAN_MASTER = 1<<23, IFF_IPVLAN_MASTER = 1<<23,
IFF_IPVLAN_SLAVE = 1<<24, IFF_IPVLAN_SLAVE = 1<<24,
@ -8,7 +8,7 @@
}; };
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN #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_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
#define IFF_IPVLAN_MASTER IFF_IPVLAN_MASTER #define IFF_IPVLAN_MASTER IFF_IPVLAN_MASTER
#define IFF_IPVLAN_SLAVE IFF_IPVLAN_SLAVE #define IFF_IPVLAN_SLAVE IFF_IPVLAN_SLAVE
@ -16,7 +16,7 @@
/** /**
* struct net_device - The DEVICE structure. * 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; const struct swdev_ops *swdev_ops;
#endif #endif
@ -28,7 +28,7 @@
const struct header_ops *header_ops; const struct header_ops *header_ops;
unsigned int flags; unsigned int flags;
@@ -1633,6 +1640,10 @@ struct net_device { @@ -1634,6 +1641,10 @@ struct net_device {
struct mpls_dev __rcu *mpls_ptr; struct mpls_dev __rcu *mpls_ptr;
#endif #endif
@ -41,7 +41,7 @@
*/ */
--- a/include/linux/skbuff.h --- a/include/linux/skbuff.h
+++ b/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; 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 * pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter * @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_
} }

@ -23,7 +23,7 @@
/* The Mellanox Tavor device gives false positive parity errors /* The Mellanox Tavor device gives false positive parity errors
* Mark this device with a broken_parity_status, to allow * Mark this device with a broken_parity_status, to allow
* PCI scanning code to "skip" this now blacklisted device. * 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, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, 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 * 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, * Some BIOS implementations leave the Intel GPU interrupts enabled,
* even though no one is handling them (f.e. i915 driver is never loaded). * 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, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);

@ -84,7 +84,7 @@
#endif /* __LINUX_USB_PCI_QUIRKS_H */ #endif /* __LINUX_USB_PCI_QUIRKS_H */
--- a/include/linux/usb/hcd.h --- a/include/linux/usb/hcd.h
+++ b/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_remove(struct pci_dev *dev);
extern void usb_hcd_pci_shutdown(struct pci_dev *dev); extern void usb_hcd_pci_shutdown(struct pci_dev *dev);

@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/** /**
* ata_build_rw_tf - Build ATA taskfile for given read/write request * ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile * @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) if (tag < 0)
return NULL; return NULL;
} }
@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
qc = __ata_qc_from_tag(ap, tag); qc = __ata_qc_from_tag(ap, tag);
qc->tag = 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.unhandled_irq = 1;
ap->stats.idle_irq = 1; ap->stats.idle_irq = 1;
#endif #endif
@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ata_sff_port_init(ap); ata_sff_port_init(ap);
return 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->pmp_link);
kfree(ap->slave_link); kfree(ap->slave_link);
@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
kfree(ap); kfree(ap);
host->ports[i] = NULL; 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]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1; host->ports[i]->local_port_no = i + 1;
} }

@ -830,7 +830,7 @@
+be done automatically. +be done automatically.
--- a/MAINTAINERS --- a/MAINTAINERS
+++ b/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 S: Maintained
F: drivers/media/usb/hackrf/ F: drivers/media/usb/hackrf/

@ -26,7 +26,7 @@
endif endif
--- a/include/linux/fs.h --- a/include/linux/fs.h
+++ b/include/linux/fs.h +++ b/include/linux/fs.h
@@ -2657,6 +2657,7 @@ enum { @@ -2659,6 +2659,7 @@ enum {
DIO_SKIP_DIO_COUNT = 0x08, DIO_SKIP_DIO_COUNT = 0x08,
}; };
@ -34,7 +34,7 @@
void dio_end_io(struct bio *bio, int error); void dio_end_io(struct bio *bio, int error);
ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, 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, loff_t offset, get_block_t get_block,
dio_iodone_t end_io, dio_submit_t submit_io, dio_iodone_t end_io, dio_submit_t submit_io,
int flags); int flags);

@ -34,7 +34,7 @@
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c --- a/kernel/sched/core.c
+++ b/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); return try_to_wake_up(p, state, 0);
} }

@ -24,7 +24,7 @@
obj-$(CONFIG_ARCH_VT8500) += irq-vt8500.o obj-$(CONFIG_ARCH_VT8500) += irq-vt8500.o
--- a/drivers/irqchip/irq-gic.c --- a/drivers/irqchip/irq-gic.c
+++ b/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_a15_gic, "arm,cortex-a15-gic", gic_of_init);
IRQCHIP_DECLARE(cortex_a9_gic, "arm,cortex-a9-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); IRQCHIP_DECLARE(cortex_a7_gic, "arm,cortex-a7-gic", gic_of_init);

@ -16,7 +16,7 @@
config USB_OXU210HP_HCD config USB_OXU210HP_HCD
--- a/drivers/usb/host/Makefile --- a/drivers/usb/host/Makefile
+++ b/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_MSM) += ehci-msm.o
obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o obj-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
obj-$(CONFIG_USB_W90X900_EHCI) += ehci-w90x900.o obj-$(CONFIG_USB_W90X900_EHCI) += ehci-w90x900.o

@ -18,7 +18,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
--- a/arch/arm/Kconfig --- a/arch/arm/Kconfig
+++ b/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 The command-line arguments provided by the boot loader will be
appended to the the device tree bootargs property. appended to the the device tree bootargs property.
@ -164,7 +164,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
static int kernel_init(void *); static int kernel_init(void *);
extern void init_IRQ(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(); page_alloc_init();
pr_notice("Kernel command line: %s\n", boot_command_line); pr_notice("Kernel command line: %s\n", boot_command_line);

@ -15,7 +15,7 @@
/* initialize internal qc */ /* initialize internal qc */
/* XXX: Tag 0 is used for drivers with legacy EH as some /* 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)) if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
return NULL; return NULL;
@ -25,7 +25,7 @@
/* libsas case */ /* libsas case */
if (ap->flags & ATA_FLAG_SAS_HOST) { if (ap->flags & ATA_FLAG_SAS_HOST) {
tag = ata_sas_allocate_tag(ap); 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; qc->tag = ATA_TAG_POISON;
if (ap->flags & ATA_FLAG_SAS_HOST) if (ap->flags & ATA_FLAG_SAS_HOST)
ata_sas_free_tag(tag, ap); ata_sas_free_tag(tag, ap);

@ -1,20 +1,20 @@
--- a/arch/mips/rb532/prom.c --- a/arch/mips/rb532/prom.c
+++ b/arch/mips/rb532/prom.c +++ b/arch/mips/rb532/prom.c
@@ -67,6 +67,7 @@ static inline unsigned long tag2ul(char @@ -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[]; +extern char __image_cmdline[];
void __init prom_setup_cmdline(void) 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) @@ -108,6 +109,9 @@ void __init prom_setup_cmdline(void)
} }
*(cp++) = ' '; *(cp++) = ' ';
+ strcpy(cp,(__image_cmdline)); + strcpy(cp,(__image_cmdline));
+ cp += strlen(__image_cmdline); + cp += strlen(__image_cmdline);
+ +
i = strlen(arcs_cmdline); i = strlen(arcs_cmdline);
if (i > 0) { if (i > 0) {
*(cp++) = ' '; *(cp++) = ' ';

@ -2,7 +2,7 @@
+++ b/arch/mips/rb532/devices.c +++ b/arch/mips/rb532/devices.c
@@ -140,6 +140,19 @@ static struct platform_device cf_slot0 = @@ -140,6 +140,19 @@ static struct platform_device cf_slot0 =
}; };
/* Resources and device for NAND */ /* Resources and device for NAND */
+ +
+/* +/*
@ -19,11 +19,11 @@
+ +
static int rb532_dev_ready(struct mtd_info *mtd) 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 @@ -254,6 +267,16 @@ static struct platform_device *rb532_dev
/* NAND definitions */ /* NAND definitions */
#define NAND_CHIP_DELAY 25 #define NAND_CHIP_DELAY 25
+static int rb532_nand_fixup(struct mtd_info *mtd) +static int rb532_nand_fixup(struct mtd_info *mtd)
+{ +{
+ struct nand_chip *chip = mtd->priv; + struct nand_chip *chip = mtd->priv;
@ -36,10 +36,12 @@
+ +
static void __init rb532_nand_setup(void) static void __init rb532_nand_setup(void)
{ {
switch (mips_machtype) { switch (mips_machtype) {
@@ -272,6 +295,7 @@ static void __init rb532_nand_setup(void @@ -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.nr_partitions = ARRAY_SIZE(rb532_partition_info);
rb532_nand_data.chip.partitions = 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_delay = NAND_CHIP_DELAY;
+ rb532_nand_data.chip.chip_fixup = &rb532_nand_fixup; + rb532_nand_data.chip.chip_fixup = &rb532_nand_fixup;
} }

@ -1,11 +1,11 @@
--- a/arch/mips/rb532/devices.c --- a/arch/mips/rb532/devices.c
+++ b/arch/mips/rb532/devices.c +++ b/arch/mips/rb532/devices.c
@@ -202,7 +202,7 @@ static struct mtd_partition rb532_partit @@ -202,7 +202,7 @@ static struct mtd_partition rb532_partit
.offset = 0, .offset = 0,
.size = 4 * 1024 * 1024, .size = 4 * 1024 * 1024,
}, { }, {
- .name = "rootfs", - .name = "rootfs",
+ .name = "rootfs_onboard", + .name = "rootfs_onboard",
.offset = MTDPART_OFS_NXTBLK, .offset = MTDPART_OFS_NXTBLK,
.size = MTDPART_SIZ_FULL, .size = MTDPART_SIZ_FULL,
} }

Loading…
Cancel
Save