cd->proc_ent->owner = cd->owner;
        cd->channel_ent = cd->content_ent = NULL;
 
-       p = proc_create("flush", S_IFREG|S_IRUSR|S_IWUSR,
-                       cd->proc_ent, &cache_flush_operations);
+       p = proc_create_data("flush", S_IFREG|S_IRUSR|S_IWUSR,
+                            cd->proc_ent, &cache_flush_operations, cd);
        cd->flush_ent = p;
        if (p == NULL)
                goto out_nomem;
        p->owner = cd->owner;
-       p->data = cd;
 
        if (cd->cache_request || cd->cache_parse) {
-               p = proc_create("channel", S_IFREG|S_IRUSR|S_IWUSR,
-                               cd->proc_ent, &cache_file_operations);
+               p = proc_create_data("channel", S_IFREG|S_IRUSR|S_IWUSR,
+                                    cd->proc_ent, &cache_file_operations, cd);
                cd->channel_ent = p;
                if (p == NULL)
                        goto out_nomem;
                p->owner = cd->owner;
-               p->data = cd;
        }
        if (cd->cache_show) {
-               p = proc_create("content", S_IFREG|S_IRUSR|S_IWUSR,
-                               cd->proc_ent, &content_file_operations);
+               p = proc_create_data("content", S_IFREG|S_IRUSR|S_IWUSR,
+                               cd->proc_ent, &content_file_operations, cd);
                cd->content_ent = p;
                if (p == NULL)
                        goto out_nomem;
                p->owner = cd->owner;
-               p->data = cd;
        }
        return 0;
 out_nomem:
 
 static inline struct proc_dir_entry *
 do_register(const char *name, void *data, const struct file_operations *fops)
 {
-       struct proc_dir_entry *ent;
-
        rpc_proc_init();
        dprintk("RPC:       registering /proc/net/rpc/%s\n", name);
 
-       ent = proc_create(name, 0, proc_net_rpc, fops);
-       if (ent) {
-               ent->data = data;
-       }
-       return ent;
+       return proc_create_data(name, 0, proc_net_rpc, fops, data);
 }
 
 struct proc_dir_entry *