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 on84d489f64f
. Changes to generic/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch based ona90ee92337
. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
parent
06405df7a8
commit
2fc3680dd0
42 changed files with 120 additions and 220 deletions
|
@ -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…
Reference in a new issue