Compile and runtime tested on ar71xx/generic.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
LINUX_RELEASE?=1
-LINUX_VERSION-4.9 = .237
+LINUX_VERSION-4.9 = .240
LINUX_VERSION-4.14 = .199
-LINUX_KERNEL_HASH-4.9.237 = 81ec5792c0ccdc244faff9dbb3d9c97857d9df4cb1f0c1c3db6bc4031faf861f
+LINUX_KERNEL_HASH-4.9.240 = 06e470c66988da200ae95dc5d5fdfd1e1f8611e8c3445620e3566ecd0bdf776f
LINUX_KERNEL_HASH-4.14.199 = 02f3432a262b3804745501f8c3c51d735133af48a39909df8b031d0b9653d4f9
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1637,7 +1637,7 @@ static int __xipram do_write_oneword(str
+@@ -1636,7 +1636,7 @@ static int __xipram do_write_oneword(str
}
if (chip_good(map, adr, datum))
/* Latency issues. Drop the lock, wait a while and retry */
UDELAY(map, chip, adr, 1);
-@@ -1654,6 +1654,8 @@ static int __xipram do_write_oneword(str
+@@ -1653,6 +1653,8 @@ static int __xipram do_write_oneword(str
goto retry;
}
}
xip_enable(map, chip, adr);
op_done:
if (mode == FL_OTP_WRITE)
-@@ -2236,7 +2238,6 @@ static int cfi_amdstd_panic_write(struct
+@@ -2235,7 +2237,6 @@ static int cfi_amdstd_panic_write(struct
return 0;
}
/*
* Handle devices with one erase region, that only implement
* the chip erase command.
-@@ -2304,7 +2305,7 @@ static int __xipram do_erase_chip(struct
+@@ -2303,7 +2304,7 @@ static int __xipram do_erase_chip(struct
}
if (chip_good(map, adr, map_word_ff(map)))
if (time_after(jiffies, timeo)) {
printk(KERN_WARNING "MTD %s(): software timeout\n",
-@@ -2328,6 +2329,7 @@ static int __xipram do_erase_chip(struct
+@@ -2327,6 +2328,7 @@ static int __xipram do_erase_chip(struct
}
}
chip->state = FL_READY;
xip_enable(map, chip, adr);
DISABLE_VPP(map);
-@@ -2401,7 +2403,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2400,7 +2402,7 @@ static int __xipram do_erase_oneblock(st
if (chip_good(map, adr, map_word_ff(map))) {
xip_enable(map, chip, adr);
}
if (time_after(jiffies, timeo)) {
-@@ -2427,6 +2429,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2426,6 +2428,7 @@ static int __xipram do_erase_oneblock(st
}
}
/* Atmel chips don't use the same PRI format as AMD chips */
static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1796,6 +1800,7 @@ static int cfi_amdstd_write_words(struct
+@@ -1795,6 +1799,7 @@ static int cfi_amdstd_write_words(struct
/*
* FIXME: interleaved mode not tested, and probably not supported!
*/
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
unsigned long adr, const u_char *buf,
int len)
-@@ -1928,7 +1933,6 @@ static int __xipram do_write_buffer(stru
+@@ -1927,7 +1932,6 @@ static int __xipram do_write_buffer(stru
return ret;
}
static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
size_t *retlen, const u_char *buf)
{
-@@ -2003,6 +2007,7 @@ static int cfi_amdstd_write_buffers(stru
+@@ -2002,6 +2006,7 @@ static int cfi_amdstd_write_buffers(stru
return 0;
}
for (p = *head; p; p = p->next) {
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -459,7 +459,7 @@ static struct neighbour *ipv4_neigh_look
+@@ -460,7 +460,7 @@ static struct neighbour *ipv4_neigh_look
else if (skb)
pkey = &ip_hdr(skb)->daddr;
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
-@@ -452,16 +452,22 @@ static enum hrtimer_restart wbuf_timer_c
+@@ -464,16 +464,22 @@ static enum hrtimer_restart wbuf_timer_c
*/
static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
{
HRTIMER_MODE_REL);
}
-@@ -1059,10 +1065,6 @@ int ubifs_wbuf_init(struct ubifs_info *c
+@@ -1071,10 +1077,6 @@ int ubifs_wbuf_init(struct ubifs_info *c
hrtimer_init(&wbuf->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
wbuf->timer.function = wbuf_timer_callback_nolock;
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
-@@ -452,11 +452,11 @@ static enum hrtimer_restart wbuf_timer_c
+@@ -464,11 +464,11 @@ static enum hrtimer_restart wbuf_timer_c
*/
static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
{
extern void __free_page_frag(void *addr);
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -3941,6 +3941,20 @@ static struct page *__page_frag_refill(s
+@@ -3942,6 +3942,20 @@ static struct page *__page_frag_refill(s
return page;
}
#define free_page(addr) free_pages((addr), 0)
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2477,7 +2477,7 @@ static inline struct sk_buff *netdev_all
+@@ -2489,7 +2489,7 @@ static inline struct sk_buff *netdev_all
static inline void skb_free_frag(void *addr)
{
void *napi_alloc_frag(unsigned int fragsz);
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -3955,8 +3955,8 @@ void __page_frag_drain(struct page *page
+@@ -3956,8 +3956,8 @@ void __page_frag_drain(struct page *page
}
EXPORT_SYMBOL(__page_frag_drain);
{
unsigned int size = PAGE_SIZE;
struct page *page;
-@@ -4007,19 +4007,19 @@ refill:
+@@ -4008,19 +4008,19 @@ refill:
return nc->va + offset;
}
extern void page_frag_free(void *addr);
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -3920,8 +3920,8 @@ EXPORT_SYMBOL(free_pages);
+@@ -3921,8 +3921,8 @@ EXPORT_SYMBOL(free_pages);
* drivers to provide a backing region of memory for use as either an
* sk_buff->head, or to be used in the "frags" portion of skb_shared_info.
*/
{
struct page *page = NULL;
gfp_t gfp = gfp_mask;
-@@ -3941,19 +3941,20 @@ static struct page *__page_frag_refill(s
+@@ -3942,19 +3942,20 @@ static struct page *__page_frag_refill(s
return page;
}
void *page_frag_alloc(struct page_frag_cache *nc,
unsigned int fragsz, gfp_t gfp_mask)
-@@ -3964,7 +3965,7 @@ void *page_frag_alloc(struct page_frag_c
+@@ -3965,7 +3966,7 @@ void *page_frag_alloc(struct page_frag_c
if (unlikely(!nc->va)) {
refill:
{ PHY_ID_BCM50610M, 0xfffffff0 },
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -204,7 +204,7 @@ config BROADCOM_PHY
+@@ -205,7 +205,7 @@ config BROADCOM_PHY
select BCM_NET_PHYLIB
---help---
Currently supports the BCM5411, BCM5421, BCM5461, BCM54616S, BCM5464,
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -147,6 +147,89 @@ config MDIO_XGENE
+@@ -148,6 +148,89 @@ config MDIO_XGENE
This module provides a driver for the MDIO busses found in the
APM X-Gene SoC's.
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1320,6 +1320,9 @@ int genphy_update_link(struct phy_device
+@@ -1321,6 +1321,9 @@ int genphy_update_link(struct phy_device
{
int status;
* @__phy_drivers: array of PHY drivers to register
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -149,6 +149,10 @@ config MDIO_XGENE
+@@ -150,6 +150,10 @@ config MDIO_XGENE
comment "Switch configuration API + drivers"
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2340,6 +2340,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2352,6 +2352,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2460,16 +2464,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2472,16 +2476,6 @@ static inline struct sk_buff *dev_alloc_
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -421,6 +421,9 @@ static struct pernet_operations ip_rt_pr
+@@ -422,6 +422,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -5931,7 +5931,7 @@ static void __ref alloc_node_mem_map(str
+@@ -5932,7 +5932,7 @@ static void __ref alloc_node_mem_map(str
mem_map = NODE_DATA(0)->node_mem_map;
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -807,7 +807,7 @@ static int get_chip(struct map_info *map
+@@ -806,7 +806,7 @@ static int get_chip(struct map_info *map
return 0;
case FL_ERASING:
1 file changed, 1 insertion(+)
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1835,6 +1835,7 @@ static int __xipram do_write_buffer(stru
+@@ -1834,6 +1834,7 @@ static int __xipram do_write_buffer(stru
/* Write Buffer Load */
map_write(map, CMD(0x25), cmd_adr);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2175,12 +2177,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2176,12 +2178,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3298,6 +3300,7 @@ static int packet_create(struct net *net
+@@ -3305,6 +3307,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3920,6 +3923,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3927,6 +3930,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -3972,6 +3985,13 @@ static int packet_getsockopt(struct sock
+@@ -3979,6 +3992,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2304,7 +2304,7 @@ static inline int pskb_network_may_pull(
+@@ -2316,7 +2316,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile
-@@ -4996,6 +5009,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4999,6 +5012,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
if (tag < 0)
return NULL;
}
qc = __ata_qc_from_tag(ap, tag);
qc->tag = tag;
-@@ -5897,6 +5913,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5902,6 +5918,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
return ap;
-@@ -5918,6 +5937,12 @@ static void ata_host_release(struct devi
+@@ -5923,6 +5942,12 @@ static void ata_host_release(struct devi
kfree(ap->pmp_link);
kfree(ap->slave_link);
kfree(ap);
host->ports[i] = NULL;
}
-@@ -6364,7 +6389,23 @@ int ata_host_register(struct ata_host *h
+@@ -6369,7 +6394,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1;
}
/*
* Define if arch has non-standard setup. This is a _PCI_ standard
-@@ -888,6 +891,12 @@ struct ata_port {
+@@ -889,6 +892,12 @@ struct ata_port {
#ifdef CONFIG_ATA_ACPI
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
#endif
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
-@@ -2766,6 +2786,7 @@ static int serial8250_request_std_resour
+@@ -2780,6 +2800,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
if (!port->mapbase)
break;
-@@ -2804,6 +2825,7 @@ static void serial8250_release_std_resou
+@@ -2818,6 +2839,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
void __kfree_skb(struct sk_buff *skb);
extern struct kmem_cache *skbuff_head_cache;
-@@ -3083,6 +3084,7 @@ static inline void skb_free_datagram_loc
+@@ -3095,6 +3096,7 @@ static inline void skb_free_datagram_loc
}
int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
config MDIO_GPIO
tristate "GPIO lib-based bitbanged MDIO buses"
depends on MDIO_BITBANG && GPIOLIB
-@@ -298,6 +304,11 @@ config CICADA_PHY
+@@ -299,6 +305,11 @@ config CICADA_PHY
---help---
Currently supports the cis8204
EXPORT_SYMBOL(phy_ethtool_get_wol);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1054,7 +1054,7 @@ int phy_suspend(struct phy_device *phyde
+@@ -1055,7 +1055,7 @@ int phy_suspend(struct phy_device *phyde
if (wol.wolopts)
return -EBUSY;
ret = phydrv->suspend(phydev);
if (ret)
-@@ -1071,7 +1071,7 @@ int phy_resume(struct phy_device *phydev
+@@ -1072,7 +1072,7 @@ int phy_resume(struct phy_device *phydev
struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver);
int ret = 0;
ret = phydrv->resume(phydev);
if (ret)
-@@ -1728,7 +1728,7 @@ static int phy_remove(struct device *dev
+@@ -1729,7 +1729,7 @@ static int phy_remove(struct device *dev
phydev->state = PHY_DOWN;
mutex_unlock(&phydev->lock);
#endif /* __LINUX_KMOD_H__ */
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
-@@ -39,6 +39,7 @@
+@@ -40,6 +40,7 @@
#include <linux/rwsem.h>
#include <linux/ptrace.h>
#include <linux/async.h>
#include <asm/uaccess.h>
#include <trace/events/module.h>
-@@ -222,6 +223,28 @@ static int call_usermodehelper_exec_asyn
+@@ -223,6 +224,28 @@ static int call_usermodehelper_exec_asyn
flush_signal_handlers(current, 1);
spin_unlock_irq(¤t->sighand->siglock);
+ }
+
/*
- * Our parent (unbound workqueue) runs with elevated scheduling
- * priority. Avoid propagating that into the userspace child.
-@@ -540,6 +563,20 @@ struct subprocess_info *call_usermodehel
+ * Initial kernel threads share ther FS with init, in order to
+ * get the init root directory. But we've now created a new
+@@ -549,6 +572,20 @@ struct subprocess_info *call_usermodehel
}
EXPORT_SYMBOL(call_usermodehelper_setup);