diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-07-18 07:07:44 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-18 07:07:44 -0400 |
commit | b6fcbdb4f283f7ba67cec3cda6be23da8e959031 (patch) | |
tree | 45d72a4a5d0cce9ab2c98321f4d7d122bf982a55 /net/ipv4/proc.c | |
parent | de05c557b24c7dffc6d392e3db120cf11c9f6ae7 (diff) |
proc: consolidate per-net single-release callers
They are symmetrical to single_open ones :)
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/proc.c')
-rw-r--r-- | net/ipv4/proc.c | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index daf5d3c80cef..834356ea99df 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c | |||
@@ -74,20 +74,12 @@ static int sockstat_seq_open(struct inode *inode, struct file *file) | |||
74 | return single_open_net(inode, file, sockstat_seq_show); | 74 | return single_open_net(inode, file, sockstat_seq_show); |
75 | } | 75 | } |
76 | 76 | ||
77 | static int sockstat_seq_release(struct inode *inode, struct file *file) | ||
78 | { | ||
79 | struct net *net = ((struct seq_file *)file->private_data)->private; | ||
80 | |||
81 | put_net(net); | ||
82 | return single_release(inode, file); | ||
83 | } | ||
84 | |||
85 | static const struct file_operations sockstat_seq_fops = { | 77 | static const struct file_operations sockstat_seq_fops = { |
86 | .owner = THIS_MODULE, | 78 | .owner = THIS_MODULE, |
87 | .open = sockstat_seq_open, | 79 | .open = sockstat_seq_open, |
88 | .read = seq_read, | 80 | .read = seq_read, |
89 | .llseek = seq_lseek, | 81 | .llseek = seq_lseek, |
90 | .release = sockstat_seq_release, | 82 | .release = single_release_net, |
91 | }; | 83 | }; |
92 | 84 | ||
93 | /* snmp items */ | 85 | /* snmp items */ |
@@ -383,20 +375,12 @@ static int snmp_seq_open(struct inode *inode, struct file *file) | |||
383 | return single_open_net(inode, file, snmp_seq_show); | 375 | return single_open_net(inode, file, snmp_seq_show); |
384 | } | 376 | } |
385 | 377 | ||
386 | static int snmp_seq_release(struct inode *inode, struct file *file) | ||
387 | { | ||
388 | struct net *net = ((struct seq_file *)file->private_data)->private; | ||
389 | |||
390 | put_net(net); | ||
391 | return single_release(inode, file); | ||
392 | } | ||
393 | |||
394 | static const struct file_operations snmp_seq_fops = { | 378 | static const struct file_operations snmp_seq_fops = { |
395 | .owner = THIS_MODULE, | 379 | .owner = THIS_MODULE, |
396 | .open = snmp_seq_open, | 380 | .open = snmp_seq_open, |
397 | .read = seq_read, | 381 | .read = seq_read, |
398 | .llseek = seq_lseek, | 382 | .llseek = seq_lseek, |
399 | .release = snmp_seq_release, | 383 | .release = single_release_net, |
400 | }; | 384 | }; |
401 | 385 | ||
402 | 386 | ||
@@ -438,20 +422,12 @@ static int netstat_seq_open(struct inode *inode, struct file *file) | |||
438 | return single_open_net(inode, file, netstat_seq_show); | 422 | return single_open_net(inode, file, netstat_seq_show); |
439 | } | 423 | } |
440 | 424 | ||
441 | static int netstat_seq_release(struct inode *inode, struct file *file) | ||
442 | { | ||
443 | struct net *net = ((struct seq_file *)file->private_data)->private; | ||
444 | |||
445 | put_net(net); | ||
446 | return single_release(inode, file); | ||
447 | } | ||
448 | |||
449 | static const struct file_operations netstat_seq_fops = { | 425 | static const struct file_operations netstat_seq_fops = { |
450 | .owner = THIS_MODULE, | 426 | .owner = THIS_MODULE, |
451 | .open = netstat_seq_open, | 427 | .open = netstat_seq_open, |
452 | .read = seq_read, | 428 | .read = seq_read, |
453 | .llseek = seq_lseek, | 429 | .llseek = seq_lseek, |
454 | .release = netstat_seq_release, | 430 | .release = single_release_net, |
455 | }; | 431 | }; |
456 | 432 | ||
457 | static __net_init int ip_proc_init_net(struct net *net) | 433 | static __net_init int ip_proc_init_net(struct net *net) |