All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.