unsigned int len;
 
        /* make sure name is valid */
-       if (!name || !strlen(name)) goto out;
+       if (!name || !strlen(name))
+               goto out;
 
        if (xlate_proc_name(name, parent, &fn) != 0)
                goto out;
 
        len = strlen(fn);
 
-       ent = kmalloc(sizeof(struct proc_dir_entry) + len + 1, GFP_KERNEL);
-       if (!ent) goto out;
+       ent = kzalloc(sizeof(struct proc_dir_entry) + len + 1, GFP_KERNEL);
+       if (!ent)
+               goto out;
 
-       memset(ent, 0, sizeof(struct proc_dir_entry));
        memcpy(ent->name, fn, len + 1);
        ent->namelen = len;
        ent->mode = mode;
        ent->nlink = nlink;
        atomic_set(&ent->count, 1);
-       ent->pde_users = 0;
        spin_lock_init(&ent->pde_unload_lock);
-       ent->pde_unload_completion = NULL;
        INIT_LIST_HEAD(&ent->pde_openers);
- out:
+out:
        return ent;
 }