/* create proc dir entry */
                sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip));
-               c->pde = proc_create(buffer, S_IWUSR|S_IRUSR,
-                                    clusterip_procdir, &clusterip_proc_fops);
+               c->pde = proc_create_data(buffer, S_IWUSR|S_IRUSR,
+                                         clusterip_procdir,
+                                         &clusterip_proc_fops, c);
                if (!c->pde) {
                        kfree(c);
                        return NULL;
                }
        }
-       c->pde->data = c;
 #endif
 
        write_lock_bh(&clusterip_lock);
 
        hinfo->family = family;
        hinfo->rnd_initialized = 0;
        spin_lock_init(&hinfo->lock);
-       hinfo->pde = proc_create(minfo->name, 0,
+       hinfo->pde =
+               proc_create_data(minfo->name, 0,
                                 family == AF_INET ? hashlimit_procdir4 :
                                                     hashlimit_procdir6,
-                                &dl_file_ops);
+                                &dl_file_ops, hinfo);
        if (!hinfo->pde) {
                vfree(hinfo);
                return -1;
        }
-       hinfo->pde->data = hinfo;
 
        setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo);
        hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);
        hinfo->rnd_initialized = 0;
        spin_lock_init(&hinfo->lock);
 
-       hinfo->pde = proc_create(minfo->name, 0,
+       hinfo->pde =
+               proc_create_data(minfo->name, 0,
                                 family == AF_INET ? hashlimit_procdir4 :
                                                     hashlimit_procdir6,
-                                &dl_file_ops);
+                                &dl_file_ops, hinfo);
        if (hinfo->pde == NULL) {
                vfree(hinfo);
                return -1;
        }
-       hinfo->pde->data = hinfo;
 
        setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo);
        hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval);