#ifdef CONFIG_PROC_FS
 #define PROTO_INUSE_NR 64      /* should be enough for the first time */
 struct prot_inuse {
+       int all;
        int val[PROTO_INUSE_NR];
 };
 /* Called with local bh disabled */
 
 static inline void sock_inuse_add(const struct net *net, int val)
 {
-       this_cpu_add(*net->core.sock_inuse, val);
+       this_cpu_add(net->core.prot_inuse->all, val);
 }
 
 int sock_prot_inuse_get(struct net *net, struct proto *proto);
 
        int cpu, res = 0;
 
        for_each_possible_cpu(cpu)
-               res += *per_cpu_ptr(net->core.sock_inuse, cpu);
+               res += per_cpu_ptr(net->core.prot_inuse, cpu)->all;
 
        return res;
 }
        net->core.prot_inuse = alloc_percpu(struct prot_inuse);
        if (net->core.prot_inuse == NULL)
                return -ENOMEM;
-
-       net->core.sock_inuse = alloc_percpu(int);
-       if (net->core.sock_inuse == NULL)
-               goto out;
-
        return 0;
-
-out:
-       free_percpu(net->core.prot_inuse);
-       return -ENOMEM;
 }
 
 static void __net_exit sock_inuse_exit_net(struct net *net)
 {
        free_percpu(net->core.prot_inuse);
-       free_percpu(net->core.sock_inuse);
 }
 
 static struct pernet_operations net_inuse_ops = {