Re: [PATCH] rcu: kasan: record and print kvfree_call_rcu call stack

From: Paul E. McKenney
Date: Fri Nov 20 2020 - 09:34:42 EST


On Fri, Nov 20, 2020 at 09:51:15AM +0100, Dmitry Vyukov wrote:
> On Thu, Nov 19, 2020 at 10:49 PM Paul E. McKenney <paulmck@xxxxxxxxxx> wrote:
> >
> > On Wed, Nov 18, 2020 at 11:53:09AM +0800, qiang.zhang@xxxxxxxxxxxxx wrote:
> > > From: Zqiang <qiang.zhang@xxxxxxxxxxxxx>
> > >
> > > Add kasan_record_aux_stack function for kvfree_call_rcu function to
> > > record call stacks.
> > >
> > > Signed-off-by: Zqiang <qiang.zhang@xxxxxxxxxxxxx>
> >
> > Thank you, but this does not apply on the "dev" branch of the -rcu tree.
> > See file:///home/git/kernel.org/rcutodo.html for more info.
> >
> > Adding others on CC who might have feedback on the general approach.
> >
> > Thanx, Paul
> >
> > > ---
> > > kernel/rcu/tree.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> > > index da3414522285..a252b2f0208d 100644
> > > --- a/kernel/rcu/tree.c
> > > +++ b/kernel/rcu/tree.c
> > > @@ -3506,7 +3506,7 @@ void kvfree_call_rcu(struct rcu_head *head, rcu_callback_t func)
> > > success = true;
> > > goto unlock_return;
> > > }
> > > -
> > > + kasan_record_aux_stack(ptr);
> > > success = kvfree_call_rcu_add_ptr_to_bulk(krcp, ptr);
> > > if (!success) {
> > > run_page_cache_worker(krcp);
>
> kvfree_call_rcu is intended to free objects, right? If so this is:

True, but mightn't there still be RCU readers referencing this object for
some time, as in up to the point that the RCU grace period ends? If so,
won't adding this cause KASAN to incorrectly complain about those readers?

Or am I missing something here?

Thanx, Paul

> Acked-by: Dmitry Vyukov <dvyukov@xxxxxxxxxx>