Skip to content

Commit

Permalink
ipc/util.c: use __seq_open_private() instead of seq_open()
Browse files Browse the repository at this point in the history
Using __seq_open_private() removes boilerplate code from
sysvipc_proc_open().

The resultant code is shorter and easier to follow.

However, please note that __seq_open_private() call kzalloc() rather than
kmalloc() which may affect timing due to the memory initialisation
overhead.

Signed-off-by: Rob Jones <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Rob Jones authored and torvalds committed Oct 14, 2014
1 parent bf77b94 commit d66a052
Showing 1 changed file with 4 additions and 16 deletions.
20 changes: 4 additions & 16 deletions ipc/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -892,28 +892,16 @@ static const struct seq_operations sysvipc_proc_seqops = {

static int sysvipc_proc_open(struct inode *inode, struct file *file)
{
int ret;
struct seq_file *seq;
struct ipc_proc_iter *iter;

ret = -ENOMEM;
iter = kmalloc(sizeof(*iter), GFP_KERNEL);
iter = __seq_open_private(file, &sysvipc_proc_seqops, sizeof(*iter));
if (!iter)
goto out;

ret = seq_open(file, &sysvipc_proc_seqops);
if (ret) {
kfree(iter);
goto out;
}

seq = file->private_data;
seq->private = iter;
return -ENOMEM;

iter->iface = PDE_DATA(inode);
iter->ns = get_ipc_ns(current->nsproxy->ipc_ns);
out:
return ret;

return 0;
}

static int sysvipc_proc_release(struct inode *inode, struct file *file)
Expand Down

0 comments on commit d66a052

Please sign in to comment.