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>
This commit is contained in:
parent
2fc3680dd0
commit
75e63c2494
37 changed files with 107 additions and 181 deletions
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
LINUX_RELEASE?=1
|
LINUX_RELEASE?=1
|
||||||
|
|
||||||
LINUX_VERSION-3.18 = .29
|
LINUX_VERSION-3.18 = .43
|
||||||
LINUX_VERSION-4.1 = .34
|
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.43 = b1faeb4a2e1e70ffe061bdbb3452840a
|
||||||
LINUX_KERNEL_MD5SUM-4.1.34 = fba99f0f4765ebf01033e69518740a3c
|
LINUX_KERNEL_MD5SUM-4.1.34 = fba99f0f4765ebf01033e69518740a3c
|
||||||
LINUX_KERNEL_MD5SUM-4.4.27 = 6c437dd8f9e964c843211cf99a876b42724fe9f2013241c13e14b6ce17846afd
|
LINUX_KERNEL_MD5SUM-4.4.27 = 6c437dd8f9e964c843211cf99a876b42724fe9f2013241c13e14b6ce17846afd
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Uart divisor latch read */
|
/* 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);
|
struct uart_8250_port *up = up_to_u8250p(port);
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
--- a/arch/mips/alchemy/board-mtx1.c
|
--- a/arch/mips/alchemy/board-mtx1.c
|
||||||
+++ b/arch/mips/alchemy/board-mtx1.c
|
+++ b/arch/mips/alchemy/board-mtx1.c
|
||||||
@@ -169,7 +169,7 @@ static struct platform_device mtx1_gpio_
|
@@ -169,7 +169,7 @@ static struct platform_device mtx1_gpio_
|
||||||
|
|
||||||
static struct mtd_partition mtx1_mtd_partitions[] = {
|
static struct mtd_partition mtx1_mtd_partitions[] = {
|
||||||
{
|
{
|
||||||
- .name = "filesystem",
|
- .name = "filesystem",
|
||||||
+ .name = "rootfs",
|
+ .name = "rootfs",
|
||||||
.size = 0x01C00000,
|
.size = 0x01C00000,
|
||||||
.offset = 0,
|
.offset = 0,
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
--- a/drivers/net/ethernet/amd/au1000_eth.c
|
--- a/drivers/net/ethernet/amd/au1000_eth.c
|
||||||
+++ b/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
|
@@ -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)
|
+#define AU1000_KNOWN_PHY_IOCTLS (SIOCGMIIPHY & 0xfff0)
|
||||||
static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
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)
|
+ if((cmd & AU1000_KNOWN_PHY_IOCTLS) != AU1000_KNOWN_PHY_IOCTLS)
|
||||||
+ return -EINVAL;
|
+ return -EINVAL;
|
||||||
+
|
+
|
||||||
if (!netif_running(dev))
|
if (!netif_running(dev))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
--- a/arch/mips/alchemy/board-mtx1.c
|
--- a/arch/mips/alchemy/board-mtx1.c
|
||||||
+++ b/arch/mips/alchemy/board-mtx1.c
|
+++ b/arch/mips/alchemy/board-mtx1.c
|
||||||
@@ -98,6 +98,9 @@ void __init board_setup(void)
|
@@ -98,6 +98,9 @@ void __init board_setup(void)
|
||||||
alchemy_gpio_direction_output(211, 1); /* green on */
|
alchemy_gpio_direction_output(211, 1); /* green on */
|
||||||
alchemy_gpio_direction_output(212, 0); /* red off */
|
alchemy_gpio_direction_output(212, 0); /* red off */
|
||||||
|
|
||||||
+ /* Set watchdog pin low */
|
+ /* Set watchdog pin low */
|
||||||
+ alchemy_gpio_direction_output(215, 0);
|
+ alchemy_gpio_direction_output(215, 0);
|
||||||
+
|
+
|
||||||
pm_power_off = mtx1_power_off;
|
pm_power_off = mtx1_power_off;
|
||||||
_machine_halt = mtx1_power_off;
|
_machine_halt = mtx1_power_off;
|
||||||
_machine_restart = mtx1_reset;
|
_machine_restart = mtx1_reset;
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
--- a/arch/mips/alchemy/devboards/db1300.c
|
--- a/arch/mips/alchemy/devboards/db1300.c
|
||||||
+++ b/arch/mips/alchemy/devboards/db1300.c
|
+++ b/arch/mips/alchemy/devboards/db1300.c
|
||||||
@@ -712,6 +712,7 @@ static struct platform_device db1300_lcd
|
@@ -712,6 +712,7 @@ static struct platform_device db1300_lcd
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
+#ifdef CONFIG_TOUCHSCREEN_WM97XX
|
+#ifdef CONFIG_TOUCHSCREEN_WM97XX
|
||||||
static void db1300_wm97xx_irqen(struct wm97xx *wm, int enable)
|
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
|
@@ -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
|
+#else
|
||||||
+
|
+
|
||||||
+static int db1300_wm97xx_probe(struct platform_device *pdev)
|
+static int db1300_wm97xx_probe(struct platform_device *pdev)
|
||||||
|
@ -22,5 +22,5 @@
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
static struct platform_driver db1300_wm97xx_driver = {
|
static struct platform_driver db1300_wm97xx_driver = {
|
||||||
.driver.name = "wm97xx-touch",
|
.driver.name = "wm97xx-touch",
|
||||||
.driver.owner = THIS_MODULE,
|
.driver.owner = THIS_MODULE,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/bcma/bcma_private.h
|
--- a/drivers/bcma/bcma_private.h
|
||||||
+++ b/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 */
|
/* main.c */
|
||||||
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
|
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
|
||||||
int timeout);
|
int timeout);
|
||||||
|
@ -223,7 +223,7 @@
|
||||||
core->core_index, bcma_device_name(&core->id),
|
core->core_index, bcma_device_name(&core->id),
|
||||||
--- a/include/linux/bcma/bcma.h
|
--- a/include/linux/bcma/bcma.h
|
||||||
+++ b/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 */
|
#define BCMA_DMA_TRANSLATION_DMA64_CMT 0x80000000 /* Client Mode Translation for 64-bit DMA */
|
||||||
extern u32 bcma_core_dma_translation(struct bcma_device *core);
|
extern u32 bcma_core_dma_translation(struct bcma_device *core);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/bcma/bcma_private.h
|
--- a/drivers/bcma/bcma_private.h
|
||||||
+++ b/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,
|
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
|
||||||
int timeout);
|
int timeout);
|
||||||
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
/* sprom.c */
|
/* sprom.c */
|
||||||
int bcma_sprom_get(struct bcma_bus *bus);
|
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
|
#ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
|
||||||
bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc);
|
bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc);
|
||||||
void bcma_core_pci_hostmode_init(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)
|
if (!bus->drv_cc.core)
|
||||||
--- a/include/linux/bcma/bcma.h
|
--- a/include/linux/bcma/bcma.h
|
||||||
+++ b/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;
|
const struct bcma_host_ops *ops;
|
||||||
|
|
||||||
enum bcma_hosttype hosttype;
|
enum bcma_hosttype hosttype;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/bcma/bcma_private.h
|
--- a/drivers/bcma/bcma_private.h
|
||||||
+++ b/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);
|
int timeout);
|
||||||
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
|
||||||
void bcma_init_bus(struct bcma_bus *bus);
|
void bcma_init_bus(struct bcma_bus *bus);
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
int bcma_bus_register(struct bcma_bus *bus);
|
int bcma_bus_register(struct bcma_bus *bus);
|
||||||
void bcma_bus_unregister(struct bcma_bus *bus);
|
void bcma_bus_unregister(struct bcma_bus *bus);
|
||||||
int __init bcma_bus_early_register(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);
|
int bcma_sprom_get(struct bcma_bus *bus);
|
||||||
|
|
||||||
/* driver_chipcommon.c */
|
/* driver_chipcommon.c */
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
#ifdef CONFIG_BCMA_DRIVER_MIPS
|
#ifdef CONFIG_BCMA_DRIVER_MIPS
|
||||||
void bcma_chipco_serial_init(struct bcma_drv_cc *cc);
|
void bcma_chipco_serial_init(struct bcma_drv_cc *cc);
|
||||||
extern struct platform_device bcma_pflash_dev;
|
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);
|
void bcma_core_chipcommon_b_free(struct bcma_drv_cc_b *ccb);
|
||||||
|
|
||||||
/* driver_chipcommon_pmu.c */
|
/* driver_chipcommon_pmu.c */
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
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);
|
||||||
|
|
||||||
@@ -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 */
|
#endif /* CONFIG_BCMA_HOST_SOC && CONFIG_OF */
|
||||||
|
|
||||||
/* driver_pci.c */
|
/* driver_pci.c */
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc);
|
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 */
|
#endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */
|
||||||
|
|
||||||
|
@ -500,7 +500,7 @@
|
||||||
}
|
}
|
||||||
--- a/include/linux/bcma/bcma.h
|
--- a/include/linux/bcma/bcma.h
|
||||||
+++ b/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);
|
return bcma_find_core_unit(bus, coreid, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -919,7 +918,7 @@ void fib_del_ifaddr(struct in_ifaddr *if
|
@@ -923,7 +922,7 @@ no_promotions:
|
||||||
#undef BRD1_OK
|
#undef BRD1_OK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
{
|
{
|
||||||
|
|
||||||
struct fib_result res;
|
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_tos = frn->fl_tos,
|
||||||
.flowi4_scope = frn->fl_scope,
|
.flowi4_scope = frn->fl_scope,
|
||||||
};
|
};
|
||||||
|
@ -155,7 +155,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
frn->err = -ENOENT;
|
frn->err = -ENOENT;
|
||||||
if (tb) {
|
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();
|
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)
|
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 net *net;
|
||||||
struct fib_result_nl *frn;
|
struct fib_result_nl *frn;
|
||||||
struct nlmsghdr *nlh;
|
struct nlmsghdr *nlh;
|
||||||
|
@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
u32 portid;
|
u32 portid;
|
||||||
|
|
||||||
net = sock_net(skb->sk);
|
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);
|
nlh = nlmsg_hdr(skb);
|
||||||
|
|
||||||
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
||||||
|
|
|
@ -44,7 +44,7 @@ Miklos
|
||||||
|
|
||||||
--- a/fs/overlayfs/copy_up.c
|
--- a/fs/overlayfs/copy_up.c
|
||||||
+++ b/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;
|
struct cred *override_cred;
|
||||||
char *link = NULL;
|
char *link = NULL;
|
||||||
|
|
||||||
|
@ -76,9 +76,9 @@ Miklos
|
||||||
err = ovl_lock_rename_workdir(workdir, upperdir);
|
err = ovl_lock_rename_workdir(workdir, upperdir);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -506,6 +512,9 @@ static int ovl_remove_and_whiteout(struc
|
@@ -507,6 +513,9 @@ static int ovl_remove_and_whiteout(struc
|
||||||
struct dentry *opaquedir = NULL;
|
|
||||||
int err;
|
int err;
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
+ if (WARN_ON(!workdir))
|
+ if (WARN_ON(!workdir))
|
||||||
+ return -EROFS;
|
+ return -EROFS;
|
||||||
|
@ -88,7 +88,7 @@ Miklos
|
||||||
err = PTR_ERR(opaquedir);
|
err = PTR_ERR(opaquedir);
|
||||||
--- a/fs/overlayfs/super.c
|
--- a/fs/overlayfs/super.c
|
||||||
+++ b/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);
|
ufs->workdir = ovl_workdir_create(ufs->upper_mnt, workpath.dentry);
|
||||||
err = PTR_ERR(ufs->workdir);
|
err = PTR_ERR(ufs->workdir);
|
||||||
if (IS_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
|
#endif
|
||||||
--- a/kernel/module.c
|
--- a/kernel/module.c
|
||||||
+++ b/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. */
|
/* Free a module, remove from lists, etc. */
|
||||||
static void free_module(struct module *mod)
|
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 */
|
/* This may be NULL, but that's OK */
|
||||||
unset_module_init_ro_nx(mod);
|
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);
|
module_free(mod, mod->module_init);
|
||||||
kfree(mod->args);
|
kfree(mod->args);
|
||||||
percpu_modfree(mod);
|
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)
|
static void module_deallocate(struct module *mod, struct load_info *info)
|
||||||
{
|
{
|
||||||
percpu_modfree(mod);
|
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_init);
|
||||||
module_free(mod, mod->module_core);
|
module_free(mod, mod->module_core);
|
||||||
}
|
}
|
||||||
@@ -3081,6 +3087,7 @@ static int do_init_module(struct module
|
@@ -3105,6 +3111,7 @@ static int do_init_module(struct module
|
||||||
mod->strtab = mod->core_strtab;
|
rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
|
||||||
#endif
|
#endif
|
||||||
unset_module_init_ro_nx(mod);
|
unset_module_init_ro_nx(mod);
|
||||||
+ module_arch_freeing_init(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;
|
const struct usb_cdc_union_desc *union_desc = NULL;
|
||||||
struct cdc_ncm_ctx *ctx;
|
struct cdc_ncm_ctx *ctx;
|
||||||
@@ -855,6 +857,17 @@ advance:
|
@@ -859,6 +861,17 @@ advance:
|
||||||
/* finish setting up the device specific data */
|
/* finish setting up the device specific data */
|
||||||
cdc_ncm_setup(dev);
|
cdc_ncm_setup(dev);
|
||||||
|
|
||||||
|
@ -79,7 +79,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;
|
||||||
|
|
||||||
@@ -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)
|
if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM)
|
||||||
return -ENODEV;
|
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
|
* 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;
|
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);
|
||||||
|
|
||||||
|
@ -108,7 +108,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);
|
||||||
@@ -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 */
|
/* 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) */
|
/* 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)
|
||||||
@@ -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);
|
nth16->wNdpIndex = cpu_to_le16(skb->len);
|
||||||
|
|
||||||
/* push a new empty NDP */
|
/* push a new empty NDP */
|
||||||
|
@ -131,7 +131,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;
|
||||||
@@ -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;
|
struct sk_buff *skb_out;
|
||||||
u16 n = 0, index, ndplen;
|
u16 n = 0, index, ndplen;
|
||||||
u8 ready2send = 0;
|
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 there is a remaining skb, it gets priority */
|
||||||
if (skb != NULL) {
|
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);
|
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 */
|
||||||
|
@ -156,7 +156,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);
|
||||||
@@ -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 */
|
/* 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
|
||||||
@@ -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(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) */
|
||||||
@@ -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);
|
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
|
||||||
@@ -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;
|
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
|
||||||
@@ -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)
|
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;
|
||||||
|
|
||||||
@@ -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 "
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
@@ -1209,6 +1209,49 @@ static struct mtd_info * __init open_mtd
|
@@ -1212,6 +1212,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;
|
||||||
@@ -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
|
#ifdef CONFIG_ROOT_NFS
|
||||||
|
|
||||||
#define NFSROOT_TIMEOUT_MIN 5
|
#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");
|
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
|
||||||
@@ -701,6 +701,7 @@ struct ubi_attach_info {
|
@@ -705,6 +705,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;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/fs/ubifs/file.c
|
--- a/fs/ubifs/file.c
|
||||||
+++ b/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,
|
.follow_link = ubifs_follow_link,
|
||||||
.setattr = ubifs_setattr,
|
.setattr = ubifs_setattr,
|
||||||
.getattr = ubifs_getattr,
|
.getattr = ubifs_getattr,
|
||||||
|
|
|
@ -50,25 +50,16 @@
|
||||||
static bool
|
static bool
|
||||||
ip_checkentry(const struct ipt_ip *ip)
|
ip_checkentry(const struct ipt_ip *ip)
|
||||||
{
|
{
|
||||||
@@ -565,7 +591,7 @@ static void cleanup_match(struct xt_entr
|
@@ -650,6 +676,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;
|
|
||||||
|
|
||||||
@@ -574,6 +600,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;
|
||||||
@@ -935,6 +963,7 @@ copy_entries_to_user(unsigned int total_
|
@@ -942,6 +970,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))
|
||||||
@@ -965,6 +994,14 @@ copy_entries_to_user(unsigned int total_
|
@@ -972,6 +1001,14 @@ copy_entries_to_user(unsigned int total_
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
goto free_counters;
|
goto free_counters;
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,7 @@
|
||||||
+module_exit(connmark_cleanup_module);
|
+module_exit(connmark_cleanup_module);
|
||||||
--- a/net/sched/Kconfig
|
--- a/net/sched/Kconfig
|
||||||
+++ b/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
|
To compile this code as a module, choose M here: the
|
||||||
module will be called act_csum.
|
module will be called act_csum.
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
@@ -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;
|
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;
|
||||||
}
|
}
|
||||||
@@ -3459,6 +3472,13 @@ static int packet_getsockopt(struct sock
|
@@ -3460,6 +3473,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;
|
||||||
|
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
EXPORT_SYMBOL(default_qdisc_ops);
|
EXPORT_SYMBOL(default_qdisc_ops);
|
||||||
|
|
||||||
/* Main transmission queue. */
|
/* 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) {
|
if (dev->tx_queue_len) {
|
||||||
qdisc = qdisc_create_dflt(dev_queue,
|
qdisc = qdisc_create_dflt(dev_queue,
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
if (qdisc == NULL) {
|
if (qdisc == NULL) {
|
||||||
--- a/net/sched/sch_api.c
|
--- a/net/sched/sch_api.c
|
||||||
+++ b/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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* BCMA bus ops
|
* 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->hw_features = net_dev->features;
|
||||||
net_dev->vlan_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);
|
err = register_netdev(bgmac->net_dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
bgmac_err(bgmac, "Cannot register net device\n");
|
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);
|
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
@@ -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, 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
|
||||||
@@ -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,
|
* 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).
|
||||||
@@ -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, 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
|
||||||
@@ -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_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);
|
||||||
|
|
||||||
|
|
|
@ -830,7 +830,7 @@
|
||||||
+be done automatically.
|
+be done automatically.
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/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
|
S: Maintained
|
||||||
F: drivers/media/usb/hackrf/
|
F: drivers/media/usb/hackrf/
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
@@ -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);
|
return try_to_wake_up(p, state, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/gpio/Kconfig
|
--- a/drivers/gpio/Kconfig
|
||||||
+++ b/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
|
Support for the RDC R321x SoC GPIOs over southbridge
|
||||||
PCI configuration space.
|
PCI configuration space.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/char/random.c
|
--- a/drivers/char/random.c
|
||||||
+++ b/drivers/char/random.c
|
+++ b/drivers/char/random.c
|
||||||
@@ -285,11 +285,11 @@
|
@@ -275,11 +275,11 @@
|
||||||
/*
|
/*
|
||||||
* Configuration information
|
* Configuration information
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
case UPIO_AU:
|
case UPIO_AU:
|
||||||
p->serial_out(p, offset, value);
|
p->serial_out(p, offset, value);
|
||||||
p->serial_in(p, UART_LCR); /* safe, no side-effects */
|
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_TSI:
|
||||||
case UPIO_MEM32:
|
case UPIO_MEM32:
|
||||||
case UPIO_MEM:
|
case UPIO_MEM:
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
if (!port->mapbase)
|
if (!port->mapbase)
|
||||||
break;
|
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_TSI:
|
||||||
case UPIO_MEM32:
|
case UPIO_MEM32:
|
||||||
case UPIO_MEM:
|
case UPIO_MEM:
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
if (!port->mapbase)
|
if (!port->mapbase)
|
||||||
break;
|
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.set_termios = p->set_termios;
|
||||||
uart.port.pm = p->pm;
|
uart.port.pm = p->pm;
|
||||||
uart.port.dev = &dev->dev;
|
uart.port.dev = &dev->dev;
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
uart.port.irqflags |= irqflag;
|
uart.port.irqflags |= irqflag;
|
||||||
ret = serial8250_register_8250_port(&uart);
|
ret = serial8250_register_8250_port(&uart);
|
||||||
if (ret < 0) {
|
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->port.flags = up->port.flags | UPF_BOOT_AUTOCONF;
|
||||||
uart->bugs = up->bugs;
|
uart->bugs = up->bugs;
|
||||||
uart->port.mapbase = up->port.mapbase;
|
uart->port.mapbase = up->port.mapbase;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/gpio/Kconfig
|
--- a/drivers/gpio/Kconfig
|
||||||
+++ b/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.
|
SPI driver for Freescale MC33880 high-side/low-side switch.
|
||||||
This provides GPIO interface supporting inputs and outputs.
|
This provides GPIO interface supporting inputs and outputs.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue