[PATCH] allow callers of seq_open do allocation themselves
Allow caller of seq_open() to kmalloc() seq_file + whatever else they want and set ->private_data to it. seq_open() will then abstain from doing allocation itself. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
ccd48bc7fa
commit
1abe77b0fc
1 changed files with 8 additions and 4 deletions
|
@ -28,13 +28,17 @@
|
|||
*/
|
||||
int seq_open(struct file *file, struct seq_operations *op)
|
||||
{
|
||||
struct seq_file *p = kmalloc(sizeof(*p), GFP_KERNEL);
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
struct seq_file *p = file->private_data;
|
||||
|
||||
if (!p) {
|
||||
p = kmalloc(sizeof(*p), GFP_KERNEL);
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
file->private_data = p;
|
||||
}
|
||||
memset(p, 0, sizeof(*p));
|
||||
sema_init(&p->sem, 1);
|
||||
p->op = op;
|
||||
file->private_data = p;
|
||||
|
||||
/*
|
||||
* Wrappers around seq_open(e.g. swaps_open) need to be
|
||||
|
|
Loading…
Reference in a new issue