* get a header, then pass each real item in the cache
  */
 
-struct handle {
-       struct cache_detail *cd;
-};
-
 static void *c_start(struct seq_file *m, loff_t *pos)
        __acquires(cd->hash_lock)
 {
        loff_t n = *pos;
        unsigned int hash, entry;
        struct cache_head *ch;
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
-
+       struct cache_detail *cd = m->private;
 
        read_lock(&cd->hash_lock);
        if (!n--)
 {
        struct cache_head *ch = p;
        int hash = (*pos >> 32);
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
 
        if (p == SEQ_START_TOKEN)
                hash = 0;
 static void c_stop(struct seq_file *m, void *p)
        __releases(cd->hash_lock)
 {
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
        read_unlock(&cd->hash_lock);
 }
 
 static int c_show(struct seq_file *m, void *p)
 {
        struct cache_head *cp = p;
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
 
        if (p == SEQ_START_TOKEN)
                return cd->cache_show(m, cd, NULL);
 static int content_open(struct inode *inode, struct file *file,
                        struct cache_detail *cd)
 {
-       struct handle *han;
+       struct seq_file *seq;
+       int err;
 
        if (!cd || !try_module_get(cd->owner))
                return -EACCES;
-       han = __seq_open_private(file, &cache_content_op, sizeof(*han));
-       if (han == NULL) {
+
+       err = seq_open(file, &cache_content_op);
+       if (err) {
                module_put(cd->owner);
-               return -ENOMEM;
+               return err;
        }
 
-       han->cd = cd;
+       seq = file->private_data;
+       seq->private = cd;
        return 0;
 }
 
 static int content_release(struct inode *inode, struct file *file,
                struct cache_detail *cd)
 {
-       int ret = seq_release_private(inode, file);
+       int ret = seq_release(inode, file);
        module_put(cd->owner);
        return ret;
 }