KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.14 = .294
+LINUX_VERSION-4.14 = .302
LIBRE_REV = 1
-LINUX_KERNEL_HASH-4.14.294 = 4ec2740d126d15b30764d0a8ab8308419118f4a60e92488575ed28d058c98c11
+LINUX_KERNEL_HASH-4.14.302 = f2cb4c9172e5cadc7522ab6c3e373385c81ff12086364450162ea0c24c354fd8
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
#include <linux/uaccess.h>
#include <linux/ipv6.h>
#include <linux/icmpv6.h>
-@@ -835,10 +836,10 @@ static void tcp_v6_send_response(const s
+@@ -837,10 +838,10 @@ static void tcp_v6_send_response(const s
topt = (__be32 *)(t1 + 1);
if (tsecr) {
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3895,14 +3895,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
#include <linux/uaccess.h>
#include <linux/ipv6.h>
#include <linux/icmpv6.h>
-@@ -835,10 +836,10 @@ static void tcp_v6_send_response(const s
+@@ -837,10 +838,10 @@ static void tcp_v6_send_response(const s
topt = (__be32 *)(t1 + 1);
if (tsecr) {
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3895,14 +3895,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
* Before updating sk_refcnt, we must commit prior changes to memory
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
-@@ -1702,7 +1702,7 @@ u32 tcp_tso_autosize(const struct sock *
+@@ -1707,7 +1707,7 @@ u32 tcp_tso_autosize(const struct sock *
{
u32 bytes, segs;
sk->sk_gso_max_size - 1 - MAX_TCP_HEADER);
/* Goal is to send at least one packet per ms,
-@@ -2220,7 +2220,7 @@ static bool tcp_small_queue_check(struct
+@@ -2225,7 +2225,7 @@ static bool tcp_small_queue_check(struct
{
unsigned int limit;
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
-@@ -2112,7 +2112,8 @@ static const struct usb_device_id option
+@@ -2130,7 +2130,8 @@ static const struct usb_device_id option
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) },
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) },
int __init netfilter_log_init(void);
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
-@@ -109,18 +109,15 @@ bool nf_queue_entry_get_refs(struct nf_q
+@@ -107,18 +107,15 @@ bool nf_queue_entry_get_refs(struct nf_q
}
EXPORT_SYMBOL_GPL(nf_queue_entry_get_refs);
net->nf.proc_netfilter = proc_net_mkdir(net, "netfilter",
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
-@@ -223,6 +223,23 @@ repeat:
+@@ -221,6 +221,23 @@ repeat:
return NF_ACCEPT;
}
/* Caller must hold rcu read-side lock */
void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
{
-@@ -238,12 +255,12 @@ void nf_reinject(struct nf_queue_entry *
+@@ -236,12 +253,12 @@ void nf_reinject(struct nf_queue_entry *
net = entry->state.net;
pf = entry->state.pf;
#endif
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
-@@ -226,8 +226,10 @@ repeat:
+@@ -224,8 +224,10 @@ repeat:
static struct nf_hook_entries *nf_hook_entries_head(const struct net *net, u8 pf, u8 hooknum)
{
switch (pf) {
#include <linux/netfilter_bridge.h>
#include <linux/seq_file.h>
#include <linux/rcupdate.h>
-@@ -121,6 +123,35 @@ void nf_queue_nf_hook_drop(struct net *n
+@@ -119,6 +121,35 @@ void nf_queue_nf_hook_drop(struct net *n
}
EXPORT_SYMBOL_GPL(nf_queue_nf_hook_drop);
static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
const struct nf_hook_entries *entries,
unsigned int index, unsigned int queuenum)
-@@ -165,7 +196,15 @@ static int __nf_queue(struct sk_buff *sk
+@@ -163,7 +194,15 @@ static int __nf_queue(struct sk_buff *sk
return -ENOTCONN;
}
};
--- a/net/ipv6/netfilter/nft_fib_ipv6.c
+++ b/net/ipv6/netfilter/nft_fib_ipv6.c
-@@ -60,7 +60,6 @@ static u32 __nft_fib6_eval_type(const st
+@@ -63,7 +63,6 @@ static u32 __nft_fib6_eval_type(const st
{
const struct net_device *dev = NULL;
const struct nf_ipv6_ops *v6ops;
int route_err, addrtype;
struct rt6_info *rt;
struct flowi6 fl6 = {
-@@ -69,8 +68,8 @@ static u32 __nft_fib6_eval_type(const st
+@@ -72,8 +71,8 @@ static u32 __nft_fib6_eval_type(const st
};
u32 ret = 0;
return RTN_UNREACHABLE;
if (priv->flags & NFTA_FIB_F_IIF)
-@@ -80,12 +79,11 @@ static u32 __nft_fib6_eval_type(const st
+@@ -83,12 +82,11 @@ static u32 __nft_fib6_eval_type(const st
nft_fib6_flowi_init(&fl6, priv, pkt, dev, iph);
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
-@@ -287,7 +287,6 @@ void nf_reinject(struct nf_queue_entry *
+@@ -285,7 +285,6 @@ void nf_reinject(struct nf_queue_entry *
const struct nf_hook_entry *hook_entry;
const struct nf_hook_entries *hooks;
struct sk_buff *skb = entry->skb;
const struct net *net;
unsigned int i;
int err;
-@@ -314,8 +313,7 @@ void nf_reinject(struct nf_queue_entry *
+@@ -312,8 +311,7 @@ void nf_reinject(struct nf_queue_entry *
verdict = nf_hook_entry_hookfn(hook_entry, skb, &entry->state);
if (verdict == NF_ACCEPT) {
#include <net/protocol.h>
#include <net/netfilter/nf_queue.h>
#include <net/dst.h>
-@@ -158,9 +160,9 @@ static int __nf_queue(struct sk_buff *sk
+@@ -156,9 +158,9 @@ static int __nf_queue(struct sk_buff *sk
{
int status = -ENOENT;
struct nf_queue_entry *entry = NULL;
/* QUEUE == DROP if no one is waiting, to be safe. */
qh = rcu_dereference(net->nf.queue_handler);
-@@ -169,11 +171,19 @@ static int __nf_queue(struct sk_buff *sk
+@@ -167,11 +169,19 @@ static int __nf_queue(struct sk_buff *sk
goto err;
}
if (!entry) {
status = -ENOMEM;
goto err;
-@@ -188,7 +198,7 @@ static int __nf_queue(struct sk_buff *sk
+@@ -186,7 +196,7 @@ static int __nf_queue(struct sk_buff *sk
.skb = skb,
.state = *state,
.hook_index = index,
# CONFIG_IMX_THERMAL is not set
# CONFIG_INA2XX_ADC is not set
CONFIG_INET=y
+CONFIG_INET_TABLE_PERTURB_ORDER=16
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1467,6 +1467,9 @@ int genphy_update_link(struct phy_device
+@@ -1468,6 +1468,9 @@ int genphy_update_link(struct phy_device
{
int status;
u64 res;
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
-@@ -421,6 +421,7 @@ config INET_XFRM_MODE_BEET
+@@ -431,6 +431,7 @@ config INET_XFRM_MODE_BEET
config INET_DIAG
tristate "INET: socket monitoring interface"
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
-@@ -6152,7 +6152,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6197,7 +6197,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)
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3337,6 +3339,7 @@ static int packet_create(struct net *net
+@@ -3336,6 +3338,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;
-@@ -3969,6 +3972,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3967,6 +3970,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4021,6 +4034,13 @@ static int packet_getsockopt(struct sock
+@@ -4019,6 +4032,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1110,6 +1110,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1111,6 +1111,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = dev->dev.parent->driver->owner;
struct mii_bus *bus;