On Wed, Aug 15, 2012 at 01:21:19PM +0400, Cyrill Gorcunov wrote: > struct proc_fdinfo { > - loff_t f_pos; > - int f_flags; > + struct file *f_file; > + int f_flags; > }; > + struct proc_fdinfo *fdinfo; > + struct seq_file *m; > + int ret; > > fdinfo = kzalloc(sizeof(*fdinfo), GFP_KERNEL); > if (!fdinfo) > return -ENOMEM; > + ret = single_open(file, seq_show, fdinfo); > + if (ret) { > + put_filp(fdinfo->f_file); > + goto err_free; > } > > + m = file->private_data; > + m->private = fdinfo; This, BTW, is too convoluted for its own good. What you need is something like struct whatever { struct seq_file *m; struct file *f; int flags; }; with single allocation of that sucker in your ->open(). Set file->private_data to address of seq_file field in your object *before* calling seq_open() and don't bother with m->private at all - just use container_of(m, struct whatever, m) in your ->show() to get to that structure... -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html