Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Sun, 3 Jun 2018 13:31:58 +0000 (09:31 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Jun 2018 13:31:58 +0000 (09:31 -0400)
Filling in the padding slot in the bpf structure as a bug fix in 'ne'
overlapped with actually using that padding area for something in
'net-next'.

Signed-off-by: David S. Miller <davem@davemloft.net>
24 files changed:
1  2 
MAINTAINERS
drivers/net/dsa/b53/b53_common.c
drivers/net/dsa/b53/b53_priv.h
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/socionext/netsec.c
drivers/net/ethernet/ti/davinci_emac.c
drivers/net/tun.c
drivers/net/usb/qmi_wwan.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
drivers/vhost/net.c
include/uapi/linux/bpf.h
net/bridge/netfilter/ebtables.c
net/ipv6/seg6_iptunnel.c
net/ipv6/xfrm6_policy.c
net/ncsi/ncsi-netlink.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/nf_tables_api.c
net/netfilter/nf_tables_core.c
net/netfilter/nft_ct.c
net/netfilter/nft_meta.c
net/sched/cls_flower.c
tools/include/uapi/linux/bpf.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index 2265d2ccea47c2d0fe15bbf0667e23f726b54249,23e9eb66197fbeb3de4d5e2fdf9f22fcdb1777be..c94fffee5ea99689d8574e4e0f92a18ee85f958a
@@@ -1941,15 -1929,13 +1943,16 @@@ static ssize_t tun_get_user(struct tun_
                        }
                }
                rcu_read_unlock();
+               local_bh_enable();
        }
  
 -      rcu_read_lock();
 -      if (!rcu_dereference(tun->steering_prog))
 +      /* Compute the costly rx hash only if needed for flow updates.
 +       * We may get a very small possibility of OOO during switching, not
 +       * worth to optimize.
 +       */
 +      if (!rcu_access_pointer(tun->steering_prog) && tun->numqueues > 1 &&
 +          !tfile->detached)
                rxhash = __skb_get_hash_symmetric(skb);
 -      rcu_read_unlock();
  
        if (frags) {
                /* Exercise flow dissector code path. */
Simple merge
Simple merge
index 9b8c6e310e9a9666aefec27c74451954711d6bde,8c317737ba3f01e272724456ed2325f9a682a075..671486133988401a7ee7e8360998e194f78635c1
@@@ -2332,17 -1031,9 +2332,18 @@@ struct bpf_map_info 
        __u32 map_flags;
        char  name[BPF_OBJ_NAME_LEN];
        __u32 ifindex;
+       __u32 :32;
        __u64 netns_dev;
        __u64 netns_ino;
 +      __u32 btf_id;
 +      __u32 btf_key_type_id;
 +      __u32 btf_value_type_id;
 +} __attribute__((aligned(8)));
 +
 +struct bpf_btf_info {
 +      __aligned_u64 btf;
 +      __u32 btf_size;
 +      __u32 id;
  } __attribute__((aligned(8)));
  
  /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 2e8fd961746db00a026693856b0d249074c8b513,501e48a7965b4a1de0e71a2e7bda1ad9daf3f15d..ca4c4d994ddb09540b41fb28650552b31f85b4d9
@@@ -1336,24 -1298,12 +1336,26 @@@ static void nft_chain_stats_replace(str
                rcu_assign_pointer(chain->stats, newstats);
                synchronize_rcu();
                free_percpu(oldstats);
-       } else
+       } else {
                rcu_assign_pointer(chain->stats, newstats);
+               static_branch_inc(&nft_counters_enabled);
+       }
  }
  
 +static void nf_tables_chain_free_chain_rules(struct nft_chain *chain)
 +{
 +      struct nft_rule **g0 = rcu_dereference_raw(chain->rules_gen_0);
 +      struct nft_rule **g1 = rcu_dereference_raw(chain->rules_gen_1);
 +
 +      if (g0 != g1)
 +              kvfree(g1);
 +      kvfree(g0);
 +
 +      /* should be NULL either via abort or via successful commit */
 +      WARN_ON_ONCE(chain->rules_next);
 +      kvfree(chain->rules_next);
 +}
 +
  static void nf_tables_chain_destroy(struct nft_ctx *ctx)
  {
        struct nft_chain *chain = ctx->chain;
Simple merge
Simple merge
Simple merge
index 4e74508515f4f60b2e7966cbf32f6c54477808ba,c79f6e71512e5ec48b48ae7ec87a77c1c3ddd469..3786feab0b83635a360ac586ea6528cc792410b5
@@@ -1024,11 -976,8 +1024,11 @@@ static int fl_change(struct net *net, s
        kfree(tb);
        return 0;
  
 +errout_mask:
 +      fl_mask_put(head, fnew->mask, false);
 +
  errout_idr:
-       if (fnew->handle)
+       if (!fold)
                idr_remove(&head->handle_idr, fnew->handle);
  errout:
        tcf_exts_destroy(&fnew->exts);
index 9b8c6e310e9a9666aefec27c74451954711d6bde,8c317737ba3f01e272724456ed2325f9a682a075..671486133988401a7ee7e8360998e194f78635c1
@@@ -2332,17 -1031,9 +2332,18 @@@ struct bpf_map_info 
        __u32 map_flags;
        char  name[BPF_OBJ_NAME_LEN];
        __u32 ifindex;
+       __u32 :32;
        __u64 netns_dev;
        __u64 netns_ino;
 +      __u32 btf_id;
 +      __u32 btf_key_type_id;
 +      __u32 btf_value_type_id;
 +} __attribute__((aligned(8)));
 +
 +struct bpf_btf_info {
 +      __aligned_u64 btf;
 +      __u32 btf_size;
 +      __u32 id;
  } __attribute__((aligned(8)));
  
  /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed