Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Honestly all the conflicts were simple overlapping changes, nothing really interesting to report. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* IPV6 GSO/GRO offload support
|
||||
* Linux INET implementation
|
||||
@@ -5,10 +6,6 @@
|
||||
* Copyright (C) 2016 secunet Security Networks AG
|
||||
* Author: Steffen Klassert <steffen.klassert@secunet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* ESP GRO support
|
||||
*/
|
||||
|
||||
|
@@ -1,13 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* net/ipv6/fib6_rules.c IPv6 Routing Policy Rules
|
||||
*
|
||||
* Copyright (C)2003-2006 Helsinki University of Technology
|
||||
* Copyright (C)2003-2006 USAGI/WIDE Project
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation, version 2.
|
||||
*
|
||||
* Authors
|
||||
* Thomas Graf <tgraf@suug.ch>
|
||||
* Ville Nuorvala <vnuorval@tcs.hut.fi>
|
||||
|
@@ -393,23 +393,28 @@ relookup_failed:
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
static int icmp6_iif(const struct sk_buff *skb)
|
||||
static struct net_device *icmp6_dev(const struct sk_buff *skb)
|
||||
{
|
||||
int iif = skb->dev->ifindex;
|
||||
struct net_device *dev = skb->dev;
|
||||
|
||||
/* for local traffic to local address, skb dev is the loopback
|
||||
* device. Check if there is a dst attached to the skb and if so
|
||||
* get the real device index. Same is needed for replies to a link
|
||||
* local address on a device enslaved to an L3 master device
|
||||
*/
|
||||
if (unlikely(iif == LOOPBACK_IFINDEX || netif_is_l3_master(skb->dev))) {
|
||||
if (unlikely(dev->ifindex == LOOPBACK_IFINDEX || netif_is_l3_master(skb->dev))) {
|
||||
const struct rt6_info *rt6 = skb_rt6_info(skb);
|
||||
|
||||
if (rt6)
|
||||
iif = rt6->rt6i_idev->dev->ifindex;
|
||||
dev = rt6->rt6i_idev->dev;
|
||||
}
|
||||
|
||||
return iif;
|
||||
return dev;
|
||||
}
|
||||
|
||||
static int icmp6_iif(const struct sk_buff *skb)
|
||||
{
|
||||
return icmp6_dev(skb)->ifindex;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -810,7 +815,7 @@ out:
|
||||
static int icmpv6_rcv(struct sk_buff *skb)
|
||||
{
|
||||
struct net *net = dev_net(skb->dev);
|
||||
struct net_device *dev = skb->dev;
|
||||
struct net_device *dev = icmp6_dev(skb);
|
||||
struct inet6_dev *idev = __in6_dev_get(dev);
|
||||
const struct in6_addr *saddr, *daddr;
|
||||
struct icmp6hdr *hdr;
|
||||
|
@@ -250,9 +250,9 @@ struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, __be32 label)
|
||||
rcu_read_lock_bh();
|
||||
for_each_sk_fl_rcu(np, sfl) {
|
||||
struct ip6_flowlabel *fl = sfl->fl;
|
||||
if (fl->label == label) {
|
||||
|
||||
if (fl->label == label && atomic_inc_not_zero(&fl->users)) {
|
||||
fl->lastuse = jiffies;
|
||||
atomic_inc(&fl->users);
|
||||
rcu_read_unlock_bh();
|
||||
return fl;
|
||||
}
|
||||
@@ -618,7 +618,8 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
|
||||
goto done;
|
||||
}
|
||||
fl1 = sfl->fl;
|
||||
atomic_inc(&fl1->users);
|
||||
if (!atomic_inc_not_zero(&fl1->users))
|
||||
fl1 = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -1400,7 +1400,7 @@ emsgsize:
|
||||
uarg = sock_zerocopy_realloc(sk, length, skb_zcopy(skb));
|
||||
if (!uarg)
|
||||
return -ENOBUFS;
|
||||
extra_uref = !skb; /* only extra ref if !MSG_MORE */
|
||||
extra_uref = !skb_zcopy(skb); /* only ref on new uarg */
|
||||
if (rt->dst.dev->features & NETIF_F_SG &&
|
||||
csummode == CHECKSUM_PARTIAL) {
|
||||
paged = true;
|
||||
|
@@ -1,19 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (C) 2010: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
|
||||
* Copyright (C) 2015: Linus Lüssing <linus.luessing@c0d3.blue>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* Based on the MLD support added to br_multicast.c by YOSHIFUJI Hideaki.
|
||||
*/
|
||||
|
||||
|
@@ -296,7 +296,7 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *skb,
|
||||
skb_network_header_len(skb));
|
||||
|
||||
rcu_read_lock();
|
||||
__IP6_INC_STATS(net, __in6_dev_get(dev), IPSTATS_MIB_REASMOKS);
|
||||
__IP6_INC_STATS(net, __in6_dev_stats_get(dev, skb), IPSTATS_MIB_REASMOKS);
|
||||
rcu_read_unlock();
|
||||
fq->q.rb_fragments = RB_ROOT;
|
||||
fq->q.fragments_tail = NULL;
|
||||
@@ -310,7 +310,7 @@ out_oom:
|
||||
net_dbg_ratelimited("ip6_frag_reasm: no memory for reassembly\n");
|
||||
out_fail:
|
||||
rcu_read_lock();
|
||||
__IP6_INC_STATS(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
|
||||
__IP6_INC_STATS(net, __in6_dev_stats_get(dev, skb), IPSTATS_MIB_REASMFAILS);
|
||||
rcu_read_unlock();
|
||||
inet_frag_kill(&fq->q);
|
||||
return -1;
|
||||
|
@@ -227,7 +227,7 @@ struct sock *udp6_lib_lookup_skb(struct sk_buff *skb,
|
||||
|
||||
return __udp6_lib_lookup(dev_net(skb->dev), &iph->saddr, sport,
|
||||
&iph->daddr, dport, inet6_iif(skb),
|
||||
inet6_sdif(skb), &udp_table, skb);
|
||||
inet6_sdif(skb), &udp_table, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(udp6_lib_lookup_skb);
|
||||
|
||||
@@ -353,6 +353,10 @@ try_again:
|
||||
inet6_iif(skb));
|
||||
}
|
||||
*addr_len = sizeof(*sin6);
|
||||
|
||||
if (cgroup_bpf_enabled)
|
||||
BPF_CGROUP_RUN_PROG_UDP6_RECVMSG_LOCK(sk,
|
||||
(struct sockaddr *)sin6);
|
||||
}
|
||||
|
||||
if (udp_sk(sk)->gro_enabled)
|
||||
@@ -499,7 +503,7 @@ int __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
struct net *net = dev_net(skb->dev);
|
||||
|
||||
sk = __udp6_lib_lookup(net, daddr, uh->dest, saddr, uh->source,
|
||||
inet6_iif(skb), inet6_sdif(skb), udptable, skb);
|
||||
inet6_iif(skb), inet6_sdif(skb), udptable, NULL);
|
||||
if (!sk) {
|
||||
/* No socket for error: try tunnels before discarding */
|
||||
sk = ERR_PTR(-ENOENT);
|
||||
|
Reference in New Issue
Block a user