Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[linux-2.6-microblaze.git] / net / ipv4 / raw_diag.c
index a93e7d1..1b5b8af 100644 (file)
@@ -87,15 +87,16 @@ out_unlock:
        return sk ? sk : ERR_PTR(-ENOENT);
 }
 
-static int raw_diag_dump_one(struct sk_buff *in_skb,
-                            const struct nlmsghdr *nlh,
+static int raw_diag_dump_one(struct netlink_callback *cb,
                             const struct inet_diag_req_v2 *r)
 {
-       struct net *net = sock_net(in_skb->sk);
+       struct sk_buff *in_skb = cb->skb;
        struct sk_buff *rep;
        struct sock *sk;
+       struct net *net;
        int err;
 
+       net = sock_net(in_skb->sk);
        sk = raw_sock_get(net, r);
        if (IS_ERR(sk))
                return PTR_ERR(sk);
@@ -109,10 +110,7 @@ static int raw_diag_dump_one(struct sk_buff *in_skb,
                return -ENOMEM;
        }
 
-       err = inet_sk_diag_fill(sk, NULL, rep, r,
-                               sk_user_ns(NETLINK_CB(in_skb).sk),
-                               NETLINK_CB(in_skb).portid,
-                               nlh->nlmsg_seq, 0, nlh,
+       err = inet_sk_diag_fill(sk, NULL, rep, cb, r, 0,
                                netlink_net_capable(in_skb, CAP_NET_ADMIN));
        sock_put(sk);
 
@@ -137,25 +135,25 @@ static int sk_diag_dump(struct sock *sk, struct sk_buff *skb,
        if (!inet_diag_bc_sk(bc, sk))
                return 0;
 
-       return inet_sk_diag_fill(sk, NULL, skb, r,
-                                sk_user_ns(NETLINK_CB(cb->skb).sk),
-                                NETLINK_CB(cb->skb).portid,
-                                cb->nlh->nlmsg_seq, NLM_F_MULTI,
-                                cb->nlh, net_admin);
+       return inet_sk_diag_fill(sk, NULL, skb, cb, r, NLM_F_MULTI, net_admin);
 }
 
 static void raw_diag_dump(struct sk_buff *skb, struct netlink_callback *cb,
-                         const struct inet_diag_req_v2 *r, struct nlattr *bc)
+                         const struct inet_diag_req_v2 *r)
 {
        bool net_admin = netlink_net_capable(cb->skb, CAP_NET_ADMIN);
        struct raw_hashinfo *hashinfo = raw_get_hashinfo(r);
        struct net *net = sock_net(skb->sk);
+       struct inet_diag_dump_data *cb_data;
        int num, s_num, slot, s_slot;
        struct sock *sk = NULL;
+       struct nlattr *bc;
 
        if (IS_ERR(hashinfo))
                return;
 
+       cb_data = cb->data;
+       bc = cb_data->inet_diag_nla_bc;
        s_slot = cb->args[0];
        num = s_num = cb->args[1];