hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/net/ipv4/raw_diag.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 #include <linux/module.h>
23
34 #include <linux/inet_diag.h>
....@@ -86,15 +87,16 @@
8687 return sk ? sk : ERR_PTR(-ENOENT);
8788 }
8889
89
-static int raw_diag_dump_one(struct sk_buff *in_skb,
90
- const struct nlmsghdr *nlh,
90
+static int raw_diag_dump_one(struct netlink_callback *cb,
9191 const struct inet_diag_req_v2 *r)
9292 {
93
- struct net *net = sock_net(in_skb->sk);
93
+ struct sk_buff *in_skb = cb->skb;
9494 struct sk_buff *rep;
9595 struct sock *sk;
96
+ struct net *net;
9697 int err;
9798
99
+ net = sock_net(in_skb->sk);
98100 sk = raw_sock_get(net, r);
99101 if (IS_ERR(sk))
100102 return PTR_ERR(sk);
....@@ -108,10 +110,7 @@
108110 return -ENOMEM;
109111 }
110112
111
- err = inet_sk_diag_fill(sk, NULL, rep, r,
112
- sk_user_ns(NETLINK_CB(in_skb).sk),
113
- NETLINK_CB(in_skb).portid,
114
- nlh->nlmsg_seq, 0, nlh,
113
+ err = inet_sk_diag_fill(sk, NULL, rep, cb, r, 0,
115114 netlink_net_capable(in_skb, CAP_NET_ADMIN));
116115 sock_put(sk);
117116
....@@ -136,25 +135,25 @@
136135 if (!inet_diag_bc_sk(bc, sk))
137136 return 0;
138137
139
- return inet_sk_diag_fill(sk, NULL, skb, r,
140
- sk_user_ns(NETLINK_CB(cb->skb).sk),
141
- NETLINK_CB(cb->skb).portid,
142
- cb->nlh->nlmsg_seq, NLM_F_MULTI,
143
- cb->nlh, net_admin);
138
+ return inet_sk_diag_fill(sk, NULL, skb, cb, r, NLM_F_MULTI, net_admin);
144139 }
145140
146141 static void raw_diag_dump(struct sk_buff *skb, struct netlink_callback *cb,
147
- const struct inet_diag_req_v2 *r, struct nlattr *bc)
142
+ const struct inet_diag_req_v2 *r)
148143 {
149144 bool net_admin = netlink_net_capable(cb->skb, CAP_NET_ADMIN);
150145 struct raw_hashinfo *hashinfo = raw_get_hashinfo(r);
151146 struct net *net = sock_net(skb->sk);
147
+ struct inet_diag_dump_data *cb_data;
152148 int num, s_num, slot, s_slot;
153149 struct sock *sk = NULL;
150
+ struct nlattr *bc;
154151
155152 if (IS_ERR(hashinfo))
156153 return;
157154
155
+ cb_data = cb->data;
156
+ bc = cb_data->inet_diag_nla_bc;
158157 s_slot = cb->args[0];
159158 num = s_num = cb->args[1];
160159