Simplify /proc/net/atm/arp opening
Subsystems (3)
PATCH 1/1 Simplify /proc/net/atm/arp opening
The iterator state->ns.neigh_sub_iter initialization is moved from arp_seq_open to clip_seq_start for convinience. This should not be a problem as the iterator will be used only after the seq_start callback.
Signed-off-by Denis V. Lunev <[email protected]>
---
net/atm/clip.c +5 -37
@@ -903,6 +903,8 @@ static void *clip_seq_sub_iter(struct neigh_seq_state *_state,static void *clip_seq_start (struct seq_file *seq,loff_t * pos) { +struct clip_seq_state *state = seq->private; + state->ns.neigh_sub_iter = clip_seq_sub_iter;return neigh_seq_start (seq, pos, &clip_tbl,NEIGH_SEQ_NEIGH_ONLY ); }
@@ -932,49 +934,15 @@ static const struct seq_operations arp_seq_ops = {static int arp_seq_open (struct inode *inode,struct file *file) { -struct clip_seq_state *state; -struct seq_file *seq; -int rc = -EAGAIN ; - - state =kzalloc (sizeof (*state),GFP_KERNEL ); -if (!state) { - rc = -ENOMEM ; - goto out_kfree; - } - state->ns.neigh_sub_iter = clip_seq_sub_iter; - - rc =seq_open (file, &arp_seq_ops); -if (rc) - goto out_kfree; - - seq = file->private_data; - seq->private = state; - state->ns.net =get_proc_net (inode); -if (!state->ns.net) { -seq_release_private (inode, file); - rc = -ENXIO ; - } -out: -return rc; - -out_kfree: -kfree (state); - goto out; -} - -static int arp_seq_release (struct inode *inode,struct file *file) -{ -struct seq_file *seq = file->private_data; -struct clip_seq_state *state = seq->private; -put_net (state->ns.net); -return seq_release_private (inode, file); +return seq_open_net (inode, file, &arp_seq_ops, +sizeof (struct clip_seq_state )); }static const struct file_operations arp_seq_fops = { .open = arp_seq_open, .read = seq_read, .llseek = seq_lseek, - .release = arp_seq_release, + .release = seq_release_net, .owner =THIS_MODULE };#endif
From: "Denis V. Lunev" <[email protected]>
Date: Thu, 10 Jan 2008 14:30:44 +0300
Quoted 5 lines
The iterator
state->ns.neigh_sub_iterinitialization is moved fromarp_seq_opentoclip_seq_startfor convinience. This should not be a problem as the iterator will be used only after theseq_startcallback.Signed-off-by Denis V. Lunev <[email protected]>
Applied, thanks.