aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-04-10 13:53:58 -0400
committerChristoph Hellwig <hch@lst.de>2018-05-16 01:24:30 -0400
commit2ad17b1950cb823f8dc820da801c4e5d7eef8113 (patch)
treea5f46c3917924502763d7ba307732b5f412aae96
parentad08978ab41c38edb9c162ba5e3ebc30f69191d6 (diff)
net/kcm: simplify proc registration
Remove a couple indirections to make the code look like most other protocols. Signed-off-by: Christoph Hellwig <hch@lst.de>
-rw-r--r--net/kcm/kcmproc.c71
1 files changed, 17 insertions, 54 deletions
diff --git a/net/kcm/kcmproc.c b/net/kcm/kcmproc.c
index 1fac92543094..6d0667e62baf 100644
--- a/net/kcm/kcmproc.c
+++ b/net/kcm/kcmproc.c
@@ -15,12 +15,6 @@
15#include <net/tcp.h> 15#include <net/tcp.h>
16 16
17#ifdef CONFIG_PROC_FS 17#ifdef CONFIG_PROC_FS
18struct kcm_seq_muxinfo {
19 char *name;
20 const struct file_operations *seq_fops;
21 const struct seq_operations seq_ops;
22};
23
24static struct kcm_mux *kcm_get_first(struct seq_file *seq) 18static struct kcm_mux *kcm_get_first(struct seq_file *seq)
25{ 19{
26 struct net *net = seq_file_net(seq); 20 struct net *net = seq_file_net(seq);
@@ -86,14 +80,6 @@ struct kcm_proc_mux_state {
86 int idx; 80 int idx;
87}; 81};
88 82
89static int kcm_seq_open(struct inode *inode, struct file *file)
90{
91 struct kcm_seq_muxinfo *muxinfo = PDE_DATA(inode);
92
93 return seq_open_net(inode, file, &muxinfo->seq_ops,
94 sizeof(struct kcm_proc_mux_state));
95}
96
97static void kcm_format_mux_header(struct seq_file *seq) 83static void kcm_format_mux_header(struct seq_file *seq)
98{ 84{
99 struct net *net = seq_file_net(seq); 85 struct net *net = seq_file_net(seq);
@@ -246,6 +232,19 @@ static int kcm_seq_show(struct seq_file *seq, void *v)
246 return 0; 232 return 0;
247} 233}
248 234
235static const struct seq_operations kcm_seq_ops = {
236 .show = kcm_seq_show,
237 .start = kcm_seq_start,
238 .next = kcm_seq_next,
239 .stop = kcm_seq_stop,
240};
241
242static int kcm_seq_open(struct inode *inode, struct file *file)
243{
244 return seq_open_net(inode, file, &kcm_seq_ops,
245 sizeof(struct kcm_proc_mux_state));
246}
247
249static const struct file_operations kcm_seq_fops = { 248static const struct file_operations kcm_seq_fops = {
250 .open = kcm_seq_open, 249 .open = kcm_seq_open,
251 .read = seq_read, 250 .read = seq_read,
@@ -253,37 +252,6 @@ static const struct file_operations kcm_seq_fops = {
253 .release = seq_release_net, 252 .release = seq_release_net,
254}; 253};
255 254
256static struct kcm_seq_muxinfo kcm_seq_muxinfo = {
257 .name = "kcm",
258 .seq_fops = &kcm_seq_fops,
259 .seq_ops = {
260 .show = kcm_seq_show,
261 .start = kcm_seq_start,
262 .next = kcm_seq_next,
263 .stop = kcm_seq_stop,
264 }
265};
266
267static int kcm_proc_register(struct net *net, struct kcm_seq_muxinfo *muxinfo)
268{
269 struct proc_dir_entry *p;
270 int rc = 0;
271
272 p = proc_create_data(muxinfo->name, 0444, net->proc_net,
273 muxinfo->seq_fops, muxinfo);
274 if (!p)
275 rc = -ENOMEM;
276 return rc;
277}
278EXPORT_SYMBOL(kcm_proc_register);
279
280static void kcm_proc_unregister(struct net *net,
281 struct kcm_seq_muxinfo *muxinfo)
282{
283 remove_proc_entry(muxinfo->name, net->proc_net);
284}
285EXPORT_SYMBOL(kcm_proc_unregister);
286
287static int kcm_stats_seq_show(struct seq_file *seq, void *v) 255static int kcm_stats_seq_show(struct seq_file *seq, void *v)
288{ 256{
289 struct kcm_psock_stats psock_stats; 257 struct kcm_psock_stats psock_stats;
@@ -404,16 +372,11 @@ static const struct file_operations kcm_stats_seq_fops = {
404 372
405static int kcm_proc_init_net(struct net *net) 373static int kcm_proc_init_net(struct net *net)
406{ 374{
407 int err;
408
409 if (!proc_create("kcm_stats", 0444, net->proc_net, 375 if (!proc_create("kcm_stats", 0444, net->proc_net,
410 &kcm_stats_seq_fops)) { 376 &kcm_stats_seq_fops))
411 err = -ENOMEM;
412 goto out_kcm_stats; 377 goto out_kcm_stats;
413 }
414 378
415 err = kcm_proc_register(net, &kcm_seq_muxinfo); 379 if (!proc_create("kcm", 0444, net->proc_net, &kcm_seq_fops))
416 if (err)
417 goto out_kcm; 380 goto out_kcm;
418 381
419 return 0; 382 return 0;
@@ -421,12 +384,12 @@ static int kcm_proc_init_net(struct net *net)
421out_kcm: 384out_kcm:
422 remove_proc_entry("kcm_stats", net->proc_net); 385 remove_proc_entry("kcm_stats", net->proc_net);
423out_kcm_stats: 386out_kcm_stats:
424 return err; 387 return -ENOMEM;
425} 388}
426 389
427static void kcm_proc_exit_net(struct net *net) 390static void kcm_proc_exit_net(struct net *net)
428{ 391{
429 kcm_proc_unregister(net, &kcm_seq_muxinfo); 392 remove_proc_entry("kcm", net->proc_net);
430 remove_proc_entry("kcm_stats", net->proc_net); 393 remove_proc_entry("kcm_stats", net->proc_net);
431} 394}
432 395