* [RFC PATCH] rcu: Add sparse check for RCU_INIT_POINTER()
@ 2014-09-25 18:03 Pranith Kumar
2014-09-25 18:10 ` josh
0 siblings, 1 reply; 3+ messages in thread
From: Pranith Kumar @ 2014-09-25 18:03 UTC (permalink / raw)
To: Paul E. McKenney, Josh Triplett, Steven Rostedt,
Mathieu Desnoyers, Lai Jiangshan, open list:READ-COPY UPDATE...
Add a sparse check when RCU_INIT_POINTER() is used to assign a non __rcu
annotated pointer.
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
include/linux/rcupdate.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index a4a819f..a033d8b 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -1047,6 +1047,7 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
*/
#define RCU_INIT_POINTER(p, v) \
do { \
+ rcu_dereference_sparse(p, __rcu); \
p = RCU_INITIALIZER(v); \
} while (0)
--
2.1.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [RFC PATCH] rcu: Add sparse check for RCU_INIT_POINTER()
2014-09-25 18:03 [RFC PATCH] rcu: Add sparse check for RCU_INIT_POINTER() Pranith Kumar
@ 2014-09-25 18:10 ` josh
2014-09-25 18:39 ` Pranith Kumar
0 siblings, 1 reply; 3+ messages in thread
From: josh @ 2014-09-25 18:10 UTC (permalink / raw)
To: Pranith Kumar
Cc: Paul E. McKenney, Steven Rostedt, Mathieu Desnoyers,
Lai Jiangshan, open list:READ-COPY UPDATE...
On Thu, Sep 25, 2014 at 02:03:34PM -0400, Pranith Kumar wrote:
> Add a sparse check when RCU_INIT_POINTER() is used to assign a non __rcu
> annotated pointer.
>
> Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Have you checked if this introduces a significant number of new warnings
in the kernel?
If not:
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
> include/linux/rcupdate.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
> index a4a819f..a033d8b 100644
> --- a/include/linux/rcupdate.h
> +++ b/include/linux/rcupdate.h
> @@ -1047,6 +1047,7 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
> */
> #define RCU_INIT_POINTER(p, v) \
> do { \
> + rcu_dereference_sparse(p, __rcu); \
> p = RCU_INITIALIZER(v); \
> } while (0)
>
> --
> 2.1.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC PATCH] rcu: Add sparse check for RCU_INIT_POINTER()
2014-09-25 18:10 ` josh
@ 2014-09-25 18:39 ` Pranith Kumar
0 siblings, 0 replies; 3+ messages in thread
From: Pranith Kumar @ 2014-09-25 18:39 UTC (permalink / raw)
To: Josh Triplett
Cc: Paul E. McKenney, Steven Rostedt, Mathieu Desnoyers,
Lai Jiangshan, open list:READ-COPY UPDATE...
On Thu, Sep 25, 2014 at 2:10 PM, <josh@joshtriplett.org> wrote:
> On Thu, Sep 25, 2014 at 02:03:34PM -0400, Pranith Kumar wrote:
>> Add a sparse check when RCU_INIT_POINTER() is used to assign a non __rcu
>> annotated pointer.
>>
>> Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
>
> Have you checked if this introduces a significant number of new warnings
> in the kernel?
>
> If not:
> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
>
I tested the above patch on a small test case where we are assigning
to a non __rcu annotated pointer and sparse does warn in that case.
I tried doing that and there were too many address space warnings
(maybe?) not related to __rcu annotation.
May be a diff of previous warnings and later warnings should show up
if any new warnings are being generated...
diff before.log after.log
> drivers/md/dm.c:2239:9: error: incompatible types in comparison expression (different address spaces)
Looking at this it shows that RCU_INIT_POINTER() is being used on a
non __rcu pointer. I will send in a patch fixing that.
Thanks!
--
Pranith
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-09-25 18:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-25 18:03 [RFC PATCH] rcu: Add sparse check for RCU_INIT_POINTER() Pranith Kumar
2014-09-25 18:10 ` josh
2014-09-25 18:39 ` Pranith Kumar
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.