static int lec_seq_open(struct inode *inode, struct file *file)
 {
-       struct lec_state *state;
-       struct seq_file *seq;
-       int rc = -EAGAIN;
-
-       state = kmalloc(sizeof(*state), GFP_KERNEL);
-       if (!state) {
-               rc = -ENOMEM;
-               goto out;
-       }
-
-       rc = seq_open(file, &lec_seq_ops);
-       if (rc)
-               goto out_kfree;
-       seq = file->private_data;
-       seq->private = state;
-out:
-       return rc;
-
-out_kfree:
-       kfree(state);
-       goto out;
-}
-
-static int lec_seq_release(struct inode *inode, struct file *file)
-{
-       return seq_release_private(inode, file);
+       return seq_open_private(file, &lec_seq_ops, sizeof(struct lec_state));
 }
 
 static const struct file_operations lec_seq_fops = {
        .open = lec_seq_open,
        .read = seq_read,
        .llseek = seq_lseek,
-       .release = lec_seq_release,
+       .release = seq_release_private,
 };
 #endif
 
 
        int family, const struct seq_operations *ops)
 {
        struct vcc_state *state;
-       struct seq_file *seq;
-       int rc = -ENOMEM;
 
-       state = kmalloc(sizeof(*state), GFP_KERNEL);
-       if (!state)
-               goto out;
-
-       rc = seq_open(file, ops);
-       if (rc)
-               goto out_kfree;
+       state = __seq_open_private(file, ops, sizeof(*state));
+       if (state == NULL)
+               return -ENOMEM;
 
        state->family = family;
-
-       seq = file->private_data;
-       seq->private = state;
-out:
-       return rc;
-out_kfree:
-       kfree(state);
-       goto out;
-}
-
-static int vcc_seq_release(struct inode *inode, struct file *file)
-{
-       return seq_release_private(inode, file);
+       return 0;
 }
 
 static void *vcc_seq_start(struct seq_file *seq, loff_t *pos)
        .open           = pvc_seq_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
-       .release        = vcc_seq_release,
+       .release        = seq_release_private,
 };
 
 static int vcc_seq_show(struct seq_file *seq, void *v)
        .open           = vcc_seq_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
-       .release        = vcc_seq_release,
+       .release        = seq_release_private,
 };
 
 static int svc_seq_show(struct seq_file *seq, void *v)
        .open           = svc_seq_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
-       .release        = vcc_seq_release,
+       .release        = seq_release_private,
 };
 
 static ssize_t proc_dev_atm_read(struct file *file, char __user *buf,