X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=include%2Flinux%2Frcupdate.h;h=37a642c54871f24166bec8e9b23b73e3369848bb;hb=8731f14d37825b54ad0c4c309cba2bc8fdf13a86;hp=d32c14de270ea28a1490c3241fe71057a1b0f582;hpb=99f1c97dbdb30e958edfd1ced0ae43df62504e07;p=linux-2.6-omap-h63xx.git diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index d32c14de270..37a642c5487 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -174,10 +174,13 @@ struct rcu_head { * code. */ -#define rcu_assign_pointer(p, v) ({ \ - smp_wmb(); \ - (p) = (v); \ - }) +#define rcu_assign_pointer(p, v) \ + ({ \ + if (!__builtin_constant_p(v) || \ + ((v) != NULL)) \ + smp_wmb(); \ + (p) = (v); \ + }) /** * synchronize_sched - block until all CPUs have exited any non-preemptive