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>
v19.07.3_mercusys_ac12_duma
Stijn Tintel 8 years ago
parent 06405df7a8
commit 2fc3680dd0

@ -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

@ -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);

@ -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);

@ -21,7 +21,7 @@ Cc: <stable@vger.kernel.org> # 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);
}

@ -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
/* 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;
}

@ -65,7 +65,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
{
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 <davem@davemloft.net>
/* 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 <davem@davemloft.net>
/*
* 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 <davem@davemloft.net>
/* 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 <davem@davemloft.net>
/* 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 <davem@davemloft.net>
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 <davem@davemloft.net>
/* 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 <davem@davemloft.net>
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 */
}

@ -48,7 +48,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
--- 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 <ynezz@true.cz>
{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 <ynezz@true.cz>
/* 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;
}

@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
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 <nbd@nbd.name>
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);
}

@ -324,7 +324,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
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 <juhosg@openwrt.org>
*(.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 <juhosg@openwrt.org>
*(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 <juhosg@openwrt.org>
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 <juhosg@openwrt.org>
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 <juhosg@openwrt.org>
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) = .; \

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

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

@ -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.

@ -11,7 +11,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- 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 <daniel@makrotopia.org>
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)
}
}

@ -41,7 +41,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
#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

@ -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;

@ -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;
}

@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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 <nbd@nbd.name>
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;

@ -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

@ -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);
}

@ -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)) {

@ -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;

@ -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,

@ -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),
};

@ -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;
}

@ -295,15 +295,15 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
__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 <cyrus@openwrt.org>
+ 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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
}
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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
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 <cyrus@openwrt.org>
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 },

@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
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;

@ -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_
}

@ -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);

@ -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);

@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile
@@ -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 <daniel@makrotopia.org>
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 <daniel@makrotopia.org>
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 <daniel@makrotopia.org>
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;
}

@ -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/

@ -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);

@ -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);
}

@ -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);

@ -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

@ -18,7 +18,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
--- 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 <ianchi74@outlook.com>
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);

@ -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);

@ -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++) = ' ';

@ -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;
}

@ -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,
}

Loading…
Cancel
Save