From: Paul E. McKenney Date: Tue, 14 Sep 2010 00:24:21 +0000 (-0700) Subject: rcu: only one evaluation of arg in rcu_dereference_check() unless sparse X-Git-Tag: v2.6.37-rc1~215^2~9 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53ecfba259f54b6967a35d19f4a564e3bc07997f;p=pandora-kernel.git rcu: only one evaluation of arg in rcu_dereference_check() unless sparse The current version of the __rcu_access_pointer(), __rcu_dereference_check(), and __rcu_dereference_protected() macros evaluate their "p" argument three times, not counting typeof()s. This is bad news if that argument contains a side effect. This commit therefore evaluates this argument only once in normal kernel builds. However, the straightforward approach defeats sparse's RCU-pointer checking, so when __CHECKER__ is defined, the additional pair of evaluations of the "p" argument are performed in order to permit sparse to detect misuse of RCU-protected pointers. Signed-off-by: Paul E. McKenney Cc: Arnd Bergmann --- Reading git-diff-tree failed