aboutsummaryrefslogtreecommitdiffstats
path: root/fs/seq_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/seq_file.c')
-rw-r--r--fs/seq_file.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/fs/seq_file.c b/fs/seq_file.c
index bbb19be260ce..ca71c115bdaa 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -429,6 +429,39 @@ int seq_release_private(struct inode *inode, struct file *file)
429} 429}
430EXPORT_SYMBOL(seq_release_private); 430EXPORT_SYMBOL(seq_release_private);
431 431
432void *__seq_open_private(struct file *f, const struct seq_operations *ops,
433 int psize)
434{
435 int rc;
436 void *private;
437 struct seq_file *seq;
438
439 private = kzalloc(psize, GFP_KERNEL);
440 if (private == NULL)
441 goto out;
442
443 rc = seq_open(f, ops);
444 if (rc < 0)
445 goto out_free;
446
447 seq = f->private_data;
448 seq->private = private;
449 return private;
450
451out_free:
452 kfree(private);
453out:
454 return NULL;
455}
456EXPORT_SYMBOL(__seq_open_private);
457
458int seq_open_private(struct file *filp, const struct seq_operations *ops,
459 int psize)
460{
461 return __seq_open_private(filp, ops, psize) ? 0 : -ENOMEM;
462}
463EXPORT_SYMBOL(seq_open_private);
464
432int seq_putc(struct seq_file *m, char c) 465int seq_putc(struct seq_file *m, char c)
433{ 466{
434 if (m->count < m->size) { 467 if (m->count < m->size) {