Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
S390 bpf_jit.S is removed in net-next and had changes in 'net', since that code isn't used any more take the removal. TLS data structures split the TX and RX components in 'net-next', put the new struct members from the bug fix in 'net' into the RX part. The 'net-next' tree had some reworking of how the ERSPAN code works in the GRE tunneling code, overlapping with a one-line headroom calculation fix in 'net'. Overlapping changes in __sock_map_ctx_update_elem(), keep the bits that read the prog members via READ_ONCE() into local variables before using them. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -326,10 +326,11 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
|
||||
u8 tos, int oif, struct net_device *dev,
|
||||
int rpf, struct in_device *idev, u32 *itag)
|
||||
{
|
||||
struct net *net = dev_net(dev);
|
||||
struct flow_keys flkeys;
|
||||
int ret, no_addr;
|
||||
struct fib_result res;
|
||||
struct flowi4 fl4;
|
||||
struct net *net = dev_net(dev);
|
||||
bool dev_match;
|
||||
|
||||
fl4.flowi4_oif = 0;
|
||||
@@ -347,6 +348,11 @@ static int __fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,
|
||||
no_addr = idev->ifa_list == NULL;
|
||||
|
||||
fl4.flowi4_mark = IN_DEV_SRC_VMARK(idev) ? skb->mark : 0;
|
||||
if (!fib4_rules_early_flow_dissect(net, skb, &fl4, &flkeys)) {
|
||||
fl4.flowi4_proto = 0;
|
||||
fl4.fl4_sport = 0;
|
||||
fl4.fl4_dport = 0;
|
||||
}
|
||||
|
||||
trace_fib_validate_source(dev, &fl4);
|
||||
|
||||
|
@@ -734,10 +734,12 @@ static netdev_tx_t erspan_xmit(struct sk_buff *skb,
|
||||
erspan_build_header(skb, ntohl(tunnel->parms.o_key),
|
||||
tunnel->index,
|
||||
truncate, true);
|
||||
else
|
||||
else if (tunnel->erspan_ver == 2)
|
||||
erspan_build_header_v2(skb, ntohl(tunnel->parms.o_key),
|
||||
tunnel->dir, tunnel->hwid,
|
||||
truncate, true);
|
||||
else
|
||||
goto free_skb;
|
||||
|
||||
tunnel->parms.o_flags &= ~TUNNEL_KEY;
|
||||
__gre_xmit(skb, dev, &tunnel->parms.iph, htons(ETH_P_ERSPAN));
|
||||
|
@@ -1053,7 +1053,8 @@ alloc_new_skb:
|
||||
if (copy > length)
|
||||
copy = length;
|
||||
|
||||
if (!(rt->dst.dev->features&NETIF_F_SG)) {
|
||||
if (!(rt->dst.dev->features&NETIF_F_SG) &&
|
||||
skb_tailroom(skb) >= copy) {
|
||||
unsigned int off;
|
||||
|
||||
off = skb->len;
|
||||
|
@@ -34,6 +34,7 @@
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Netfilter Core Team <coreteam@netfilter.org>");
|
||||
MODULE_DESCRIPTION("IPv4 packet filter");
|
||||
MODULE_ALIAS("ipt_icmp");
|
||||
|
||||
void *ipt_alloc_initial_table(const struct xt_table *info)
|
||||
{
|
||||
|
@@ -89,10 +89,10 @@ static bool rpfilter_mt(const struct sk_buff *skb, struct xt_action_param *par)
|
||||
return true ^ invert;
|
||||
}
|
||||
|
||||
memset(&flow, 0, sizeof(flow));
|
||||
flow.flowi4_iif = LOOPBACK_IFINDEX;
|
||||
flow.daddr = iph->saddr;
|
||||
flow.saddr = rpfilter_get_saddr(iph->daddr);
|
||||
flow.flowi4_oif = 0;
|
||||
flow.flowi4_mark = info->flags & XT_RPFILTER_VALID_MARK ? skb->mark : 0;
|
||||
flow.flowi4_tos = RT_TOS(iph->tos);
|
||||
flow.flowi4_scope = RT_SCOPE_UNIVERSE;
|
||||
|
@@ -1961,8 +1961,13 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
||||
fl4.saddr = saddr;
|
||||
fl4.flowi4_uid = sock_net_uid(net, NULL);
|
||||
|
||||
if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys))
|
||||
if (fib4_rules_early_flow_dissect(net, skb, &fl4, &_flkeys)) {
|
||||
flkeys = &_flkeys;
|
||||
} else {
|
||||
fl4.flowi4_proto = 0;
|
||||
fl4.fl4_sport = 0;
|
||||
fl4.fl4_dport = 0;
|
||||
}
|
||||
|
||||
err = fib_lookup(net, &fl4, res, 0);
|
||||
if (err != 0) {
|
||||
|
@@ -2823,8 +2823,10 @@ int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs)
|
||||
return -EBUSY;
|
||||
|
||||
if (before(TCP_SKB_CB(skb)->seq, tp->snd_una)) {
|
||||
if (before(TCP_SKB_CB(skb)->end_seq, tp->snd_una))
|
||||
BUG();
|
||||
if (unlikely(before(TCP_SKB_CB(skb)->end_seq, tp->snd_una))) {
|
||||
WARN_ON_ONCE(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (tcp_trim_head(sk, skb, tp->snd_una - TCP_SKB_CB(skb)->seq))
|
||||
return -ENOMEM;
|
||||
}
|
||||
@@ -3332,6 +3334,7 @@ static void tcp_connect_init(struct sock *sk)
|
||||
sock_reset_flag(sk, SOCK_DONE);
|
||||
tp->snd_wnd = 0;
|
||||
tcp_init_wl(tp, 0);
|
||||
tcp_write_queue_purge(sk);
|
||||
tp->snd_una = tp->write_seq;
|
||||
tp->snd_sml = tp->write_seq;
|
||||
tp->snd_up = tp->write_seq;
|
||||
|
Reference in New Issue
Block a user