hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/appletalk/atalk_proc.c
....@@ -1,11 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * atalk_proc.c - proc support for Appletalk
34 *
45 * Copyright(c) Arnaldo Carvalho de Melo <acme@conectiva.com.br>
5
- *
6
- * This program is free software; you can redistribute it and/or modify it
7
- * under the terms of the GNU General Public License as published by the
8
- * Free Software Foundation, version 2.
96 */
107
118 #include <linux/init.h>
....@@ -210,56 +207,36 @@
210207 .show = atalk_seq_socket_show,
211208 };
212209
213
-static struct proc_dir_entry *atalk_proc_dir;
214
-
215210 int __init atalk_proc_init(void)
216211 {
217
- struct proc_dir_entry *p;
218
- int rc = -ENOMEM;
212
+ if (!proc_mkdir("atalk", init_net.proc_net))
213
+ return -ENOMEM;
219214
220
- atalk_proc_dir = proc_mkdir("atalk", init_net.proc_net);
221
- if (!atalk_proc_dir)
215
+ if (!proc_create_seq("atalk/interface", 0444, init_net.proc_net,
216
+ &atalk_seq_interface_ops))
222217 goto out;
223218
224
- p = proc_create_seq("interface", 0444, atalk_proc_dir,
225
- &atalk_seq_interface_ops);
226
- if (!p)
227
- goto out_interface;
219
+ if (!proc_create_seq("atalk/route", 0444, init_net.proc_net,
220
+ &atalk_seq_route_ops))
221
+ goto out;
228222
229
- p = proc_create_seq("route", 0444, atalk_proc_dir,
230
- &atalk_seq_route_ops);
231
- if (!p)
232
- goto out_route;
223
+ if (!proc_create_seq("atalk/socket", 0444, init_net.proc_net,
224
+ &atalk_seq_socket_ops))
225
+ goto out;
233226
234
- p = proc_create_seq("socket", 0444, atalk_proc_dir,
235
- &atalk_seq_socket_ops);
236
- if (!p)
237
- goto out_socket;
227
+ if (!proc_create_seq_private("atalk/arp", 0444, init_net.proc_net,
228
+ &aarp_seq_ops,
229
+ sizeof(struct aarp_iter_state), NULL))
230
+ goto out;
238231
239
- p = proc_create_seq_private("arp", 0444, atalk_proc_dir, &aarp_seq_ops,
240
- sizeof(struct aarp_iter_state), NULL);
241
- if (!p)
242
- goto out_arp;
232
+ return 0;
243233
244
- rc = 0;
245234 out:
246
- return rc;
247
-out_arp:
248
- remove_proc_entry("socket", atalk_proc_dir);
249
-out_socket:
250
- remove_proc_entry("route", atalk_proc_dir);
251
-out_route:
252
- remove_proc_entry("interface", atalk_proc_dir);
253
-out_interface:
254
- remove_proc_entry("atalk", init_net.proc_net);
255
- goto out;
235
+ remove_proc_subtree("atalk", init_net.proc_net);
236
+ return -ENOMEM;
256237 }
257238
258239 void atalk_proc_exit(void)
259240 {
260
- remove_proc_entry("interface", atalk_proc_dir);
261
- remove_proc_entry("route", atalk_proc_dir);
262
- remove_proc_entry("socket", atalk_proc_dir);
263
- remove_proc_entry("arp", atalk_proc_dir);
264
- remove_proc_entry("atalk", init_net.proc_net);
241
+ remove_proc_subtree("atalk", init_net.proc_net);
265242 }