Signed-off-by: John Kacur Index: linux-2.6.26-rt1/net/core/sock.c =================================================================== --- linux-2.6.26-rt1.orig/net/core/sock.c +++ linux-2.6.26-rt1/net/core/sock.c @@ -1986,11 +1986,12 @@ static __init int net_inuse_init(void) core_initcall(net_inuse_init); #else -static DEFINE_PER_CPU(struct prot_inuse, prot_inuse); +static DEFINE_PER_CPU_LOCKED(struct prot_inuse, prot_inuse); void sock_prot_inuse_add(struct net *net, struct proto *prot, int val) { - __get_cpu_var(prot_inuse).val[prot->inuse_idx] += val; + int cpu = 0; + __get_cpu_var_locked(prot_inuse, cpu).val[prot->inuse_idx] += val; } EXPORT_SYMBOL_GPL(sock_prot_inuse_add); @@ -2000,7 +2001,7 @@ int sock_prot_inuse_get(struct net *net, int res = 0; for_each_possible_cpu(cpu) - res += per_cpu(prot_inuse, cpu).val[idx]; + res += per_cpu_var_locked(prot_inuse, cpu).val[idx]; return res >= 0 ? res : 0; }