aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/seq_file.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/seq_file.c b/fs/seq_file.c
index 38bb59f3f2ad..774c1eb7f1c9 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -599,6 +599,24 @@ int single_open(struct file *file, int (*show)(struct seq_file *, void *),
599} 599}
600EXPORT_SYMBOL(single_open); 600EXPORT_SYMBOL(single_open);
601 601
602int single_open_size(struct file *file, int (*show)(struct seq_file *, void *),
603 void *data, size_t size)
604{
605 char *buf = kmalloc(size, GFP_KERNEL);
606 int ret;
607 if (!buf)
608 return -ENOMEM;
609 ret = single_open(file, show, data);
610 if (ret) {
611 kfree(buf);
612 return ret;
613 }
614 ((struct seq_file *)file->private_data)->buf = buf;
615 ((struct seq_file *)file->private_data)->size = size;
616 return 0;
617}
618EXPORT_SYMBOL(single_open_size);
619
602int single_release(struct inode *inode, struct file *file) 620int single_release(struct inode *inode, struct file *file)
603{ 621{
604 const struct seq_operations *op = ((struct seq_file *)file->private_data)->op; 622 const struct seq_operations *op = ((struct seq_file *)file->private_data)->op;