On Tue, Oct 06, 2015 at 10:27:41PM +0200, Peter Zijlstra wrote: > On Tue, Oct 06, 2015 at 09:13:45AM -0700, Paul E. McKenney wrote: > > /** > > + * rcu_pointer_handoff() - Hand off a pointer from RCU to other mechanism > > + * @p: The pointer to hand off > > + * > > + * This is simply an identity function, but it documents where a pointer > > + * is handed off from RCU to some other synchronization mechanism, for > > + * example, reference counting or locking. In C11, it would map to > > + * kill_dependency(). It could be used as follows: > > + * > > + * rcu_read_lock(); > > + * p = rcu_dereference(gp); > > + * long_lived = is_long_lived(p); > > + * if (long_lived) { > > + * if (!atomic_inc_not_zero(p->refcnt)) > > + * long_lived = false; > > + * else > > + * p = rcu_pointer_handoff(p); > > + * } > > + * rcu_read_unlock(); > > + */ > > +#define rcu_pointer_handoff(p) (p) > > Will you actually be using this? It seems a tad pointless to add if you > don't.
Some of the LLVM guys believe that they can diagnose RCU pointer leaks if this is used. But yes, it does need to be used. Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/