mirror of https://github.com/hak5/openwrt-owl.git
kernel: update kernel 3.18 to version 3.18.43
Refresh patches for all targets supporting 3.18 and not marked broken.
Compile-tested on all targets using 3.18 and not marked broken.
Changes to generic/610-netfilter_match_bypass_default_checks.patch based
on 84d489f64f
.
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
owl
parent
2fc3680dd0
commit
75e63c2494
|
@ -2,11 +2,11 @@
|
|||
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .29
|
||||
LINUX_VERSION-3.18 = .43
|
||||
LINUX_VERSION-4.1 = .34
|
||||
LINUX_VERSION-4.4 = .27
|
||||
|
||||
LINUX_KERNEL_MD5SUM-3.18.29 = b25737a0bc98e80d12200de93f239c28
|
||||
LINUX_KERNEL_MD5SUM-3.18.43 = b1faeb4a2e1e70ffe061bdbb3452840a
|
||||
LINUX_KERNEL_MD5SUM-4.1.34 = fba99f0f4765ebf01033e69518740a3c
|
||||
LINUX_KERNEL_MD5SUM-4.4.27 = 6c437dd8f9e964c843211cf99a876b42724fe9f2013241c13e14b6ce17846afd
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
};
|
||||
|
||||
/* Uart divisor latch read */
|
||||
@@ -3174,7 +3181,11 @@ static void serial8250_console_putchar(s
|
||||
@@ -3168,7 +3175,11 @@ static void serial8250_console_putchar(s
|
||||
{
|
||||
struct uart_8250_port *up = up_to_u8250p(port);
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
--- a/arch/mips/alchemy/board-mtx1.c
|
||||
+++ b/arch/mips/alchemy/board-mtx1.c
|
||||
@@ -169,7 +169,7 @@ static struct platform_device mtx1_gpio_
|
||||
|
||||
|
||||
static struct mtd_partition mtx1_mtd_partitions[] = {
|
||||
{
|
||||
{
|
||||
- .name = "filesystem",
|
||||
+ .name = "rootfs",
|
||||
.size = 0x01C00000,
|
||||
.offset = 0,
|
||||
},
|
||||
.size = 0x01C00000,
|
||||
.offset = 0,
|
||||
},
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
--- a/drivers/net/ethernet/amd/au1000_eth.c
|
||||
+++ b/drivers/net/ethernet/amd/au1000_eth.c
|
||||
@@ -1113,10 +1113,14 @@ static void au1000_multicast_list(struct
|
||||
writel(reg, &aup->mac->control);
|
||||
writel(reg, &aup->mac->control);
|
||||
}
|
||||
|
||||
|
||||
+#define AU1000_KNOWN_PHY_IOCTLS (SIOCGMIIPHY & 0xfff0)
|
||||
static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
struct au1000_private *aup = netdev_priv(dev);
|
||||
|
||||
struct au1000_private *aup = netdev_priv(dev);
|
||||
|
||||
+ if((cmd & AU1000_KNOWN_PHY_IOCTLS) != AU1000_KNOWN_PHY_IOCTLS)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
if (!netif_running(dev))
|
||||
return -EINVAL;
|
||||
if (!netif_running(dev))
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
--- a/arch/mips/alchemy/board-mtx1.c
|
||||
+++ b/arch/mips/alchemy/board-mtx1.c
|
||||
@@ -98,6 +98,9 @@ void __init board_setup(void)
|
||||
alchemy_gpio_direction_output(211, 1); /* green on */
|
||||
alchemy_gpio_direction_output(212, 0); /* red off */
|
||||
|
||||
alchemy_gpio_direction_output(211, 1); /* green on */
|
||||
alchemy_gpio_direction_output(212, 0); /* red off */
|
||||
|
||||
+ /* Set watchdog pin low */
|
||||
+ alchemy_gpio_direction_output(215, 0);
|
||||
+
|
||||
pm_power_off = mtx1_power_off;
|
||||
_machine_halt = mtx1_power_off;
|
||||
_machine_restart = mtx1_reset;
|
||||
pm_power_off = mtx1_power_off;
|
||||
_machine_halt = mtx1_power_off;
|
||||
_machine_restart = mtx1_reset;
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
--- a/arch/mips/alchemy/devboards/db1300.c
|
||||
+++ b/arch/mips/alchemy/devboards/db1300.c
|
||||
@@ -712,6 +712,7 @@ static struct platform_device db1300_lcd
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
+#ifdef CONFIG_TOUCHSCREEN_WM97XX
|
||||
static void db1300_wm97xx_irqen(struct wm97xx *wm, int enable)
|
||||
{
|
||||
if (enable)
|
||||
if (enable)
|
||||
@@ -744,6 +745,15 @@ static int db1300_wm97xx_probe(struct pl
|
||||
return wm97xx_register_mach_ops(wm, &db1300_wm97xx_ops);
|
||||
return wm97xx_register_mach_ops(wm, &db1300_wm97xx_ops);
|
||||
}
|
||||
|
||||
|
||||
+#else
|
||||
+
|
||||
+static int db1300_wm97xx_probe(struct platform_device *pdev)
|
||||
|
@ -22,5 +22,5 @@
|
|||
+#endif
|
||||
+
|
||||
static struct platform_driver db1300_wm97xx_driver = {
|
||||
.driver.name = "wm97xx-touch",
|
||||
.driver.owner = THIS_MODULE,
|
||||
.driver.name = "wm97xx-touch",
|
||||
.driver.owner = THIS_MODULE,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/bcma/bcma_private.h
|
||||
+++ b/drivers/bcma/bcma_private.h
|
||||
@@ -24,6 +24,7 @@ struct bcma_bus;
|
||||
@@ -22,6 +22,7 @@ struct bcma_bus;
|
||||
/* main.c */
|
||||
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
|
||||
int timeout);
|
||||
|
@ -223,7 +223,7 @@
|
|||
core->core_index, bcma_device_name(&core->id),
|
||||
--- a/include/linux/bcma/bcma.h
|
||||
+++ b/include/linux/bcma/bcma.h
|
||||
@@ -447,4 +447,6 @@ extern u32 bcma_chipco_pll_read(struct b
|
||||
@@ -448,4 +448,6 @@ extern u32 bcma_chipco_pll_read(struct b
|
||||
#define BCMA_DMA_TRANSLATION_DMA64_CMT 0x80000000 /* Client Mode Translation for 64-bit DMA */
|
||||
extern u32 bcma_core_dma_translation(struct bcma_device *core);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/bcma/bcma_private.h
|
||||
+++ b/drivers/bcma/bcma_private.h
|
||||
@@ -25,22 +25,18 @@ struct bcma_bus;
|
||||
@@ -23,22 +23,18 @@ struct bcma_bus;
|
||||
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
|
||||
int timeout);
|
||||
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
||||
|
@ -26,7 +26,7 @@
|
|||
|
||||
/* sprom.c */
|
||||
int bcma_sprom_get(struct bcma_bus *bus);
|
||||
@@ -111,6 +107,14 @@ extern int bcma_chipco_watchdog_register
|
||||
@@ -109,6 +105,14 @@ extern int bcma_chipco_watchdog_register
|
||||
#ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
|
||||
bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc);
|
||||
void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc);
|
||||
|
@ -467,7 +467,7 @@
|
|||
if (!bus->drv_cc.core)
|
||||
--- a/include/linux/bcma/bcma.h
|
||||
+++ b/include/linux/bcma/bcma.h
|
||||
@@ -318,6 +318,7 @@ struct bcma_bus {
|
||||
@@ -319,6 +319,7 @@ struct bcma_bus {
|
||||
const struct bcma_host_ops *ops;
|
||||
|
||||
enum bcma_hosttype hosttype;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/bcma/bcma_private.h
|
||||
+++ b/drivers/bcma/bcma_private.h
|
||||
@@ -26,6 +26,7 @@ bool bcma_wait_value(struct bcma_device
|
||||
@@ -24,6 +24,7 @@ bool bcma_wait_value(struct bcma_device
|
||||
int timeout);
|
||||
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
||||
void bcma_init_bus(struct bcma_bus *bus);
|
||||
|
@ -8,7 +8,7 @@
|
|||
int bcma_bus_register(struct bcma_bus *bus);
|
||||
void bcma_bus_unregister(struct bcma_bus *bus);
|
||||
int __init bcma_bus_early_register(struct bcma_bus *bus);
|
||||
@@ -42,6 +43,9 @@ int bcma_bus_scan(struct bcma_bus *bus);
|
||||
@@ -40,6 +41,9 @@ int bcma_bus_scan(struct bcma_bus *bus);
|
||||
int bcma_sprom_get(struct bcma_bus *bus);
|
||||
|
||||
/* driver_chipcommon.c */
|
||||
|
@ -18,7 +18,7 @@
|
|||
#ifdef CONFIG_BCMA_DRIVER_MIPS
|
||||
void bcma_chipco_serial_init(struct bcma_drv_cc *cc);
|
||||
extern struct platform_device bcma_pflash_dev;
|
||||
@@ -52,6 +56,8 @@ int bcma_core_chipcommon_b_init(struct b
|
||||
@@ -50,6 +54,8 @@ int bcma_core_chipcommon_b_init(struct b
|
||||
void bcma_core_chipcommon_b_free(struct bcma_drv_cc_b *ccb);
|
||||
|
||||
/* driver_chipcommon_pmu.c */
|
||||
|
@ -27,7 +27,7 @@
|
|||
u32 bcma_pmu_get_alp_clock(struct bcma_drv_cc *cc);
|
||||
u32 bcma_pmu_get_cpu_clock(struct bcma_drv_cc *cc);
|
||||
|
||||
@@ -100,7 +106,35 @@ static inline void __exit bcma_host_soc_
|
||||
@@ -98,7 +104,35 @@ static inline void __exit bcma_host_soc_
|
||||
#endif /* CONFIG_BCMA_HOST_SOC && CONFIG_OF */
|
||||
|
||||
/* driver_pci.c */
|
||||
|
@ -63,7 +63,7 @@
|
|||
|
||||
extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc);
|
||||
|
||||
@@ -117,6 +151,39 @@ static inline void bcma_core_pci_hostmod
|
||||
@@ -115,6 +149,39 @@ static inline void bcma_core_pci_hostmod
|
||||
}
|
||||
#endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */
|
||||
|
||||
|
@ -500,7 +500,7 @@
|
|||
}
|
||||
--- a/include/linux/bcma/bcma.h
|
||||
+++ b/include/linux/bcma/bcma.h
|
||||
@@ -434,6 +434,27 @@ static inline struct bcma_device *bcma_f
|
||||
@@ -435,6 +435,27 @@ static inline struct bcma_device *bcma_f
|
||||
return bcma_find_core_unit(bus, coreid, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
return ret;
|
||||
}
|
||||
|
||||
@@ -919,7 +918,7 @@ void fib_del_ifaddr(struct in_ifaddr *if
|
||||
@@ -923,7 +922,7 @@ no_promotions:
|
||||
#undef BRD1_OK
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
{
|
||||
|
||||
struct fib_result res;
|
||||
@@ -929,6 +928,11 @@ static void nl_fib_lookup(struct fib_res
|
||||
@@ -933,6 +932,11 @@ static void nl_fib_lookup(struct fib_res
|
||||
.flowi4_tos = frn->fl_tos,
|
||||
.flowi4_scope = frn->fl_scope,
|
||||
};
|
||||
|
@ -155,7 +155,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
|
||||
frn->err = -ENOENT;
|
||||
if (tb) {
|
||||
@@ -945,6 +949,8 @@ static void nl_fib_lookup(struct fib_res
|
||||
@@ -949,6 +953,8 @@ static void nl_fib_lookup(struct fib_res
|
||||
}
|
||||
local_bh_enable();
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
}
|
||||
|
||||
static void nl_fib_input(struct sk_buff *skb)
|
||||
@@ -952,7 +958,6 @@ static void nl_fib_input(struct sk_buff
|
||||
@@ -956,7 +962,6 @@ static void nl_fib_input(struct sk_buff
|
||||
struct net *net;
|
||||
struct fib_result_nl *frn;
|
||||
struct nlmsghdr *nlh;
|
||||
|
@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
u32 portid;
|
||||
|
||||
net = sock_net(skb->sk);
|
||||
@@ -967,9 +972,7 @@ static void nl_fib_input(struct sk_buff
|
||||
@@ -971,9 +976,7 @@ static void nl_fib_input(struct sk_buff
|
||||
nlh = nlmsg_hdr(skb);
|
||||
|
||||
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
||||
|
|
|
@ -44,7 +44,7 @@ Miklos
|
|||
|
||||
--- a/fs/overlayfs/copy_up.c
|
||||
+++ b/fs/overlayfs/copy_up.c
|
||||
@@ -311,6 +311,9 @@ int ovl_copy_up_one(struct dentry *paren
|
||||
@@ -313,6 +313,9 @@ int ovl_copy_up_one(struct dentry *paren
|
||||
struct cred *override_cred;
|
||||
char *link = NULL;
|
||||
|
||||
|
@ -76,9 +76,9 @@ Miklos
|
|||
err = ovl_lock_rename_workdir(workdir, upperdir);
|
||||
if (err)
|
||||
goto out;
|
||||
@@ -506,6 +512,9 @@ static int ovl_remove_and_whiteout(struc
|
||||
struct dentry *opaquedir = NULL;
|
||||
@@ -507,6 +513,9 @@ static int ovl_remove_and_whiteout(struc
|
||||
int err;
|
||||
int flags = 0;
|
||||
|
||||
+ if (WARN_ON(!workdir))
|
||||
+ return -EROFS;
|
||||
|
@ -88,7 +88,7 @@ Miklos
|
|||
err = PTR_ERR(opaquedir);
|
||||
--- a/fs/overlayfs/super.c
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -741,9 +741,15 @@ static int ovl_fill_super(struct super_b
|
||||
@@ -760,9 +760,15 @@ static int ovl_fill_super(struct super_b
|
||||
ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry);
|
||||
err = PTR_ERR(ufs->workdir);
|
||||
if (IS_ERR(ufs->workdir)) {
|
||||
|
|
|
@ -1,66 +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
|
||||
@@ -88,7 +88,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;
|
||||
@@ -3325,12 +3325,18 @@ static void tcp_send_challenge_ack(struc
|
||||
static u32 challenge_timestamp;
|
||||
static unsigned int challenge_count;
|
||||
u32 now = jiffies / HZ;
|
||||
+ u32 count;
|
||||
|
||||
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);
|
||||
}
|
|
@ -145,7 +145,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
|||
#endif
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -1837,6 +1837,10 @@ void __weak module_arch_cleanup(struct m
|
||||
@@ -1840,6 +1840,10 @@ void __weak module_arch_cleanup(struct m
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
|||
/* Free a module, remove from lists, etc. */
|
||||
static void free_module(struct module *mod)
|
||||
{
|
||||
@@ -1869,6 +1873,7 @@ static void free_module(struct module *m
|
||||
@@ -1872,6 +1876,7 @@ static void free_module(struct module *m
|
||||
|
||||
/* This may be NULL, but that's OK */
|
||||
unset_module_init_ro_nx(mod);
|
||||
|
@ -164,7 +164,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
|||
module_free(mod, mod->module_init);
|
||||
kfree(mod->args);
|
||||
percpu_modfree(mod);
|
||||
@@ -2958,6 +2963,7 @@ static struct module *layout_and_allocat
|
||||
@@ -2983,6 +2988,7 @@ static struct module *layout_and_allocat
|
||||
static void module_deallocate(struct module *mod, struct load_info *info)
|
||||
{
|
||||
percpu_modfree(mod);
|
||||
|
@ -172,8 +172,8 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
|||
module_free(mod, mod->module_init);
|
||||
module_free(mod, mod->module_core);
|
||||
}
|
||||
@@ -3081,6 +3087,7 @@ static int do_init_module(struct module
|
||||
mod->strtab = mod->core_strtab;
|
||||
@@ -3105,6 +3111,7 @@ static int do_init_module(struct module
|
||||
rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
|
||||
#endif
|
||||
unset_module_init_ro_nx(mod);
|
||||
+ module_arch_freeing_init(mod);
|
||||
|
|
|
@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
{
|
||||
const struct usb_cdc_union_desc *union_desc = NULL;
|
||||
struct cdc_ncm_ctx *ctx;
|
||||
@@ -855,6 +857,17 @@ advance:
|
||||
@@ -859,6 +861,17 @@ advance:
|
||||
/* finish setting up the device specific data */
|
||||
cdc_ncm_setup(dev);
|
||||
|
||||
|
@ -79,7 +79,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
/* override ethtool_ops */
|
||||
dev->net->ethtool_ops = &cdc_ncm_ethtool_ops;
|
||||
|
||||
@@ -954,8 +967,11 @@ static int cdc_ncm_bind(struct usbnet *d
|
||||
@@ -958,8 +971,11 @@ static int cdc_ncm_bind(struct usbnet *d
|
||||
if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM)
|
||||
return -ENODEV;
|
||||
|
||||
|
@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
|
||||
/*
|
||||
* We should get an event when network connection is "connected" or
|
||||
@@ -986,6 +1002,14 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
|
||||
@@ -990,6 +1006,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);
|
||||
|
||||
|
@ -108,7 +108,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);
|
||||
@@ -995,7 +1019,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
|
||||
@@ -999,7 +1023,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
|
||||
}
|
||||
|
||||
/* align new NDP */
|
||||
|
@ -118,7 +118,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)
|
||||
@@ -1008,7 +1033,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
|
||||
@@ -1012,7 +1037,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
|
||||
nth16->wNdpIndex = cpu_to_le16(skb->len);
|
||||
|
||||
/* push a new empty NDP */
|
||||
|
@ -131,7 +131,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;
|
||||
@@ -1023,6 +1052,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
|
||||
@@ -1027,6 +1056,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
|
||||
struct sk_buff *skb_out;
|
||||
u16 n = 0, index, ndplen;
|
||||
u8 ready2send = 0;
|
||||
|
@ -147,7 +147,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
|
||||
/* if there is a remaining skb, it gets priority */
|
||||
if (skb != NULL) {
|
||||
@@ -1077,7 +1115,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
|
||||
@@ -1081,7 +1119,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 */
|
||||
|
@ -156,7 +156,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||
if (n == 0) {
|
||||
/* won't fit, MTU problem? */
|
||||
dev_kfree_skb_any(skb);
|
||||
@@ -1150,6 +1188,17 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
|
||||
@@ -1154,6 +1192,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
|
||||
@@ -819,6 +819,7 @@ static const struct usb_device_id produc
|
||||
@@ -822,6 +822,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) */
|
||||
@@ -850,10 +851,24 @@ static const struct usb_device_id produc
|
||||
@@ -853,10 +854,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
|
||||
@@ -865,6 +880,12 @@ static int qmi_wwan_probe(struct usb_int
|
||||
@@ -868,6 +883,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
|
||||
@@ -2674,6 +2674,7 @@ static struct module *setup_load_info(st
|
||||
@@ -2699,6 +2699,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;
|
||||
|
||||
@@ -2699,6 +2700,7 @@ static int check_modinfo(struct module *
|
||||
@@ -2724,6 +2725,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);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||
|
||||
--- a/drivers/mtd/ubi/build.c
|
||||
+++ b/drivers/mtd/ubi/build.c
|
||||
@@ -1209,6 +1209,49 @@ static struct mtd_info * __init open_mtd
|
||||
@@ -1212,6 +1212,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;
|
||||
@@ -1298,6 +1341,12 @@ static int __init ubi_init(void)
|
||||
@@ -1301,6 +1344,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
|
||||
@@ -527,6 +547,10 @@ void __init mount_root(void)
|
||||
@@ -527,6 +548,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
|
||||
@@ -701,6 +701,7 @@ struct ubi_attach_info {
|
||||
@@ -705,6 +705,7 @@ struct ubi_attach_info {
|
||||
int mean_ec;
|
||||
uint64_t ec_sum;
|
||||
int ec_count;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/fs/ubifs/file.c
|
||||
+++ b/fs/ubifs/file.c
|
||||
@@ -1573,6 +1573,10 @@ const struct inode_operations ubifs_syml
|
||||
@@ -1597,6 +1597,10 @@ const struct inode_operations ubifs_syml
|
||||
.follow_link = ubifs_follow_link,
|
||||
.setattr = ubifs_setattr,
|
||||
.getattr = ubifs_getattr,
|
||||
|
|
|
@ -50,25 +50,16 @@
|
|||
static bool
|
||||
ip_checkentry(const struct ipt_ip *ip)
|
||||
{
|
||||
@@ -565,7 +591,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;
|
||||
|
||||
@@ -574,6 +600,8 @@ check_entry(const struct ipt_entry *e, c
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -650,6 +676,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;
|
||||
@@ -935,6 +963,7 @@ copy_entries_to_user(unsigned int total_
|
||||
j = 0;
|
||||
mtpar.net = net;
|
||||
mtpar.table = name;
|
||||
@@ -942,6 +970,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))
|
||||
@@ -965,6 +994,14 @@ copy_entries_to_user(unsigned int total_
|
||||
@@ -972,6 +1001,14 @@ copy_entries_to_user(unsigned int total_
|
||||
ret = -EFAULT;
|
||||
goto free_counters;
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
+module_exit(connmark_cleanup_module);
|
||||
--- a/net/sched/Kconfig
|
||||
+++ b/net/sched/Kconfig
|
||||
@@ -717,6 +717,19 @@ config NET_ACT_CSUM
|
||||
@@ -686,6 +686,19 @@ config NET_ACT_CSUM
|
||||
To compile this code as a module, choose M here: the
|
||||
module will be called act_csum.
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3408,6 +3411,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3409,6 +3412,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;
|
||||
}
|
||||
@@ -3459,6 +3472,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3460,6 +3473,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
@ -51,7 +51,7 @@
|
|||
EXPORT_SYMBOL(default_qdisc_ops);
|
||||
|
||||
/* Main transmission queue. */
|
||||
@@ -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,
|
||||
|
@ -84,7 +84,7 @@
|
|||
if (qdisc == NULL) {
|
||||
--- a/net/sched/sch_api.c
|
||||
+++ b/net/sched/sch_api.c
|
||||
@@ -1947,7 +1947,7 @@ static int __init pktsched_init(void)
|
||||
@@ -1949,7 +1949,7 @@ static int __init pktsched_init(void)
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -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),
|
||||
};
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||
/**************************************************
|
||||
* BCMA bus ops
|
||||
**************************************************/
|
||||
@@ -1664,6 +1676,16 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1666,6 +1678,16 @@ static int bgmac_probe(struct bcma_devic
|
||||
net_dev->hw_features = net_dev->features;
|
||||
net_dev->vlan_features = net_dev->features;
|
||||
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||
err = register_netdev(bgmac->net_dev);
|
||||
if (err) {
|
||||
bgmac_err(bgmac, "Cannot register net device\n");
|
||||
@@ -1690,6 +1712,10 @@ static void bgmac_remove(struct bcma_dev
|
||||
@@ -1692,6 +1714,10 @@ static void bgmac_remove(struct bcma_dev
|
||||
{
|
||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||
|
||||
|
|
|
@ -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.
|
||||
@@ -2917,6 +2918,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||
@@ -2929,6 +2930,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
|
||||
@@ -2973,6 +2975,8 @@ static void fixup_debug_report(struct pc
|
||||
@@ -2985,6 +2987,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).
|
||||
@@ -3007,6 +3011,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||
@@ -3019,6 +3023,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
|
||||
@@ -444,7 +444,14 @@ extern int usb_hcd_pci_probe(struct pci_
|
||||
@@ -445,7 +445,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);
|
||||
|
||||
|
|
|
@ -830,7 +830,7 @@
|
|||
+be done automatically.
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -4279,6 +4279,11 @@ T: git git://linuxtv.org/anttip/media_tr
|
||||
@@ -4289,6 +4289,11 @@ T: git git://linuxtv.org/anttip/media_tr
|
||||
S: Maintained
|
||||
F: drivers/media/usb/hackrf/
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
+MODULE_LICENSE("GPL");
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -1801,6 +1801,7 @@ int wake_up_state(struct task_struct *p,
|
||||
@@ -1823,6 +1823,7 @@ int wake_up_state(struct task_struct *p,
|
||||
{
|
||||
return try_to_wake_up(p, state, 0);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -794,6 +794,14 @@ config GPIO_RDC321X
|
||||
@@ -795,6 +795,14 @@ config GPIO_RDC321X
|
||||
Support for the RDC R321x SoC GPIOs over southbridge
|
||||
PCI configuration space.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/char/random.c
|
||||
+++ b/drivers/char/random.c
|
||||
@@ -285,11 +285,11 @@
|
||||
@@ -275,11 +275,11 @@
|
||||
/*
|
||||
* Configuration information
|
||||
*/
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
case UPIO_AU:
|
||||
p->serial_out(p, offset, value);
|
||||
p->serial_in(p, UART_LCR); /* safe, no side-effects */
|
||||
@@ -2655,6 +2675,7 @@ static int serial8250_request_std_resour
|
||||
@@ -2649,6 +2669,7 @@ static int serial8250_request_std_resour
|
||||
case UPIO_TSI:
|
||||
case UPIO_MEM32:
|
||||
case UPIO_MEM:
|
||||
|
@ -49,7 +49,7 @@
|
|||
if (!port->mapbase)
|
||||
break;
|
||||
|
||||
@@ -2691,6 +2712,7 @@ static void serial8250_release_std_resou
|
||||
@@ -2685,6 +2706,7 @@ static void serial8250_release_std_resou
|
||||
case UPIO_TSI:
|
||||
case UPIO_MEM32:
|
||||
case UPIO_MEM:
|
||||
|
@ -57,7 +57,7 @@
|
|||
if (!port->mapbase)
|
||||
break;
|
||||
|
||||
@@ -3424,6 +3446,7 @@ static int serial8250_probe(struct platf
|
||||
@@ -3418,6 +3440,7 @@ static int serial8250_probe(struct platf
|
||||
uart.port.set_termios = p->set_termios;
|
||||
uart.port.pm = p->pm;
|
||||
uart.port.dev = &dev->dev;
|
||||
|
@ -65,7 +65,7 @@
|
|||
uart.port.irqflags |= irqflag;
|
||||
ret = serial8250_register_8250_port(&uart);
|
||||
if (ret < 0) {
|
||||
@@ -3580,6 +3603,7 @@ int serial8250_register_8250_port(struct
|
||||
@@ -3574,6 +3597,7 @@ int serial8250_register_8250_port(struct
|
||||
uart->port.flags = up->port.flags | UPF_BOOT_AUTOCONF;
|
||||
uart->bugs = up->bugs;
|
||||
uart->port.mapbase = up->port.mapbase;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -819,6 +819,12 @@ config GPIO_MC33880
|
||||
@@ -820,6 +820,12 @@ config GPIO_MC33880
|
||||
SPI driver for Freescale MC33880 high-side/low-side switch.
|
||||
This provides GPIO interface supporting inputs and outputs.
|
||||
|
||||
|
|
Loading…
Reference in New Issue