Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/geneve.c Here we had an overlapping change, where in 'net' the extraneous stats bump was being removed whilst in 'net-next' the final argument to udp_tunnel6_xmit_skb() was being changed. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -257,6 +257,9 @@ static int inet_create(struct net *net, struct socket *sock, int protocol,
|
||||
int try_loading_module = 0;
|
||||
int err;
|
||||
|
||||
if (protocol < 0 || protocol >= IPPROTO_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
sock->state = SS_UNCONNECTED;
|
||||
|
||||
/* Look for the requested type/protocol pair. */
|
||||
|
||||
@@ -1155,6 +1155,7 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
|
||||
static int fib_netdev_event(struct notifier_block *this, unsigned long event, void *ptr)
|
||||
{
|
||||
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
|
||||
struct netdev_notifier_changeupper_info *info;
|
||||
struct in_device *in_dev;
|
||||
struct net *net = dev_net(dev);
|
||||
unsigned int flags;
|
||||
@@ -1193,6 +1194,14 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
|
||||
case NETDEV_CHANGEMTU:
|
||||
rt_cache_flush(net);
|
||||
break;
|
||||
case NETDEV_CHANGEUPPER:
|
||||
info = ptr;
|
||||
/* flush all routes if dev is linked to or unlinked from
|
||||
* an L3 master device (e.g., VRF)
|
||||
*/
|
||||
if (info->upper_dev && netif_is_l3_master(info->upper_dev))
|
||||
fib_disable_ip(dev, NETDEV_DOWN, true);
|
||||
break;
|
||||
}
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ struct fou {
|
||||
u16 type;
|
||||
struct udp_offload udp_offloads;
|
||||
struct list_head list;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
#define FOU_F_REMCSUM_NOPARTIAL BIT(0)
|
||||
@@ -417,7 +418,7 @@ static void fou_release(struct fou *fou)
|
||||
list_del(&fou->list);
|
||||
udp_tunnel_sock_release(sock);
|
||||
|
||||
kfree(fou);
|
||||
kfree_rcu(fou, rcu);
|
||||
}
|
||||
|
||||
static int fou_encap_init(struct sock *sk, struct fou *fou, struct fou_cfg *cfg)
|
||||
|
||||
@@ -60,6 +60,7 @@ config NFT_REJECT_IPV4
|
||||
|
||||
config NFT_DUP_IPV4
|
||||
tristate "IPv4 nf_tables packet duplication support"
|
||||
depends on !NF_CONNTRACK || NF_CONNTRACK
|
||||
select NF_DUP_IPV4
|
||||
help
|
||||
This module enables IPv4 packet duplication support for nf_tables.
|
||||
|
||||
@@ -1493,7 +1493,7 @@ bool tcp_prequeue(struct sock *sk, struct sk_buff *skb)
|
||||
if (likely(sk->sk_rx_dst))
|
||||
skb_dst_drop(skb);
|
||||
else
|
||||
skb_dst_force(skb);
|
||||
skb_dst_force_safe(skb);
|
||||
|
||||
__skb_queue_tail(&tp->ucopy.prequeue, skb);
|
||||
tp->ucopy.memory += skb->truesize;
|
||||
@@ -1721,8 +1721,7 @@ void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
|
||||
{
|
||||
struct dst_entry *dst = skb_dst(skb);
|
||||
|
||||
if (dst) {
|
||||
dst_hold(dst);
|
||||
if (dst && dst_hold_safe(dst)) {
|
||||
sk->sk_rx_dst = dst;
|
||||
inet_sk(sk)->rx_dst_ifindex = skb->skb_iif;
|
||||
}
|
||||
|
||||
@@ -3150,7 +3150,7 @@ static int tcp_send_syn_data(struct sock *sk, struct sk_buff *syn)
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
struct tcp_fastopen_request *fo = tp->fastopen_req;
|
||||
int syn_loss = 0, space, err = 0, copied;
|
||||
int syn_loss = 0, space, err = 0;
|
||||
unsigned long last_syn_loss = 0;
|
||||
struct sk_buff *syn_data;
|
||||
|
||||
@@ -3188,17 +3188,18 @@ static int tcp_send_syn_data(struct sock *sk, struct sk_buff *syn)
|
||||
goto fallback;
|
||||
syn_data->ip_summed = CHECKSUM_PARTIAL;
|
||||
memcpy(syn_data->cb, syn->cb, sizeof(syn->cb));
|
||||
copied = copy_from_iter(skb_put(syn_data, space), space,
|
||||
&fo->data->msg_iter);
|
||||
if (unlikely(!copied)) {
|
||||
kfree_skb(syn_data);
|
||||
goto fallback;
|
||||
if (space) {
|
||||
int copied = copy_from_iter(skb_put(syn_data, space), space,
|
||||
&fo->data->msg_iter);
|
||||
if (unlikely(!copied)) {
|
||||
kfree_skb(syn_data);
|
||||
goto fallback;
|
||||
}
|
||||
if (copied != space) {
|
||||
skb_trim(syn_data, copied);
|
||||
space = copied;
|
||||
}
|
||||
}
|
||||
if (copied != space) {
|
||||
skb_trim(syn_data, copied);
|
||||
space = copied;
|
||||
}
|
||||
|
||||
/* No more data pending in inet_wait_for_connect() */
|
||||
if (space == fo->size)
|
||||
fo->data = NULL;
|
||||
|
||||
Reference in New Issue
Block a user