[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1312028225.2873.104.camel@edumazet-laptop>
Date: Sat, 30 Jul 2011 14:17:05 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Stephen Hemminger <shemminger@...tta.com>
Cc: paulmck@...ux.vnet.ibm.com, Michael Chan <mchan@...adcom.com>,
linux-kernel@...r.kernel.org
Subject: Re: RCU: how to suppress warnings from rcu_assign_pointer?
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists