locking fix
Linus,
Please pull the latest locking-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-urgent-for-linus
# HEAD: d7127b5e5fa0551be21b86640f1648b224e36d43 locking/barriers: Don't use sizeof(void) in lockless_dereference()
Another lockless_dereference() Sparse fix.
Thanks,
Ingo
------------------>
Johannes Berg (1):
locking/barriers: Don't use sizeof(void) in lockless_dereference()
include/linux/compiler.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
include/linux/compiler.h +4 -3
@@ -527,13 +527,14 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s* object's lifetime is managed by something other than RCU. That * "something other" might be reference counting or simple immortality. * -* The seemingly unused size_t variable is to validate @p is indeed a pointer -* type by making sure it can be dereferenced. +* The seemingly unused variable ___typecheck_p validates that @p is +* indeed a pointer type by using a pointer to typeof(*p) as the type. +* Taking a pointer to typeof(*p) again is needed in case p is void *. */ #define lockless_dereference (p) \ ({ \ typeof(p) _________p1 = READ_ONCE(p); \ - size_t __maybe_unused __size_of_ptr = sizeof(*(p)); \ + typeof(*(p)) *___typecheck_p __maybe_unused; \ smp_read_barrier_depends();/* Dependency order vs. p above. */ \ (_________p1); \ })