Re: RCU: how to suppress warnings from rcu_assign_pointer?

From: Eric Dumazet
Date: Sat Jul 30 2011 - 08:17:22 EST


Le vendredi 29 juillet 2011 Ã 10:50 -0700, Stephen Hemminger a Ãcrit :
> Gcc now generates warnings from rcu_assign_pointer when passed the
> address of something for example:
> rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc);
> This warning is harmless and should be surpressed but there maybe
> other cases where we want that Gcc warning.
>
> I tried various combinations of in rcu_assign_pointer macro
> #pragma GCC diagnostic push
> #pragma GCC diagnostic ignored "-Wlogical-op"
> ...
> #pragma GCC diagnostic pop
> but macro's and pragma's don't nest with the correct scope for
> this.
>
> Maybe some one with more Gcc foo and time to waste could take
> a crack at it.

I would just remove the test from rcu_assign_pointer().

We now have RCU_INIT_POINTER() for places we dont want/afford the
smp_wmb()


diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 8f4f881..f372e88 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -365,9 +365,7 @@ extern int rcu_my_thread_group_empty(void);
})
#define __rcu_assign_pointer(p, v, space) \
({ \
- if (!__builtin_constant_p(v) || \
- ((v) != NULL)) \
- smp_wmb(); \
+ smp_wmb(); \
(p) = (typeof(*v) __force space *)(v); \
})



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/