Skip to content

Commit e2bcd8b

Browse files
YueHaibingdavem330
authored andcommitted
appletalk: use remove_proc_subtree to simplify procfs code
Use remove_proc_subtree to remove the whole subtree on cleanup.Also do some cleanup. Signed-off-by: YueHaibing <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 084e5bb commit e2bcd8b

1 file changed

Lines changed: 17 additions & 39 deletions

File tree

net/appletalk/atalk_proc.c

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -210,56 +210,34 @@ static const struct seq_operations atalk_seq_socket_ops = {
210210
.show = atalk_seq_socket_show,
211211
};
212212

213-
static struct proc_dir_entry *atalk_proc_dir;
214-
215213
int __init atalk_proc_init(void)
216214
{
217-
struct proc_dir_entry *p;
218-
int rc = -ENOMEM;
215+
if (!proc_mkdir("atalk", init_net.proc_net))
216+
return -ENOMEM;
219217

220-
atalk_proc_dir = proc_mkdir("atalk", init_net.proc_net);
221-
if (!atalk_proc_dir)
218+
if (!proc_create_seq("atalk/interface", 0444, init_net.proc_net,
219+
&atalk_seq_interface_ops))
222220
goto out;
223221

224-
p = proc_create_seq("interface", 0444, atalk_proc_dir,
225-
&atalk_seq_interface_ops);
226-
if (!p)
227-
goto out_interface;
228-
229-
p = proc_create_seq("route", 0444, atalk_proc_dir,
230-
&atalk_seq_route_ops);
231-
if (!p)
232-
goto out_route;
222+
if (!proc_create_seq("atalk/route", 0444, init_net.proc_net,
223+
&atalk_seq_route_ops))
224+
goto out;
233225

234-
p = proc_create_seq("socket", 0444, atalk_proc_dir,
235-
&atalk_seq_socket_ops);
236-
if (!p)
237-
goto out_socket;
226+
if (!proc_create_seq("atalk/socket", 0444, init_net.proc_net,
227+
&atalk_seq_socket_ops))
228+
goto out;
238229

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;
230+
if (!proc_create_seq_private("atalk/arp", 0444, init_net.proc_net,
231+
&aarp_seq_ops,
232+
sizeof(struct aarp_iter_state), NULL))
233+
goto out;
243234

244-
rc = 0;
245235
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;
236+
remove_proc_subtree("atalk", init_net.proc_net);
237+
return -ENOMEM;
256238
}
257239

258240
void __exit atalk_proc_exit(void)
259241
{
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);
242+
remove_proc_subtree("atalk", init_net.proc_net);
265243
}

0 commit comments

Comments
 (0)