[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100810211932.GG2379@linux.vnet.ibm.com>
Date: Tue, 10 Aug 2010 14:19:32 -0700
From: "Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
To: Herbert Xu <herbert@...dor.apana.org.au>
Cc: "John W. Linville" <linville@...driver.com>,
netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>
Subject: Re: [PATCH] netpoll: use non-BH variant of RCU
On Tue, Aug 10, 2010 at 04:43:58PM -0400, Herbert Xu wrote:
> On Tue, Aug 10, 2010 at 04:25:24PM -0400, John W. Linville wrote:
> > "netpoll: Fix RCU usage" switched netpoll_rx to use the BH variant
> > of RCU. Unfortunately, calling netpoll_rx from netif_rx resulted in
> > the following backtrace:
>
> Thanks for catching this John!
>
> > diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h
> > index 413742c..0bdd527 100644
> > --- a/include/linux/netpoll.h
> > +++ b/include/linux/netpoll.h
> > @@ -63,8 +63,8 @@ static inline bool netpoll_rx(struct sk_buff *skb)
> > unsigned long flags;
> > bool ret = false;
> >
> > - rcu_read_lock_bh();
> > - npinfo = rcu_dereference_bh(skb->dev->npinfo);
> > + rcu_read_lock();
> > + npinfo = rcu_dereference(skb->dev->npinfo);
>
> I really wanted to avoid mixing the two different RCU primitives
> because they require different synchronisations.
>
> In this case, the problem is that we're being called in IRQ
> context, where BH is diabled anyway, so we don't actually need
> to do anything (assuming IRQ is off).
>
> Paul, what could we do to resolve this (other than by switching
> to the non-BH variant of RCU)? Perhaps an additional variant
> of rcu_read_lock_bh that checks whether IRQ is off?
Hello, Herbert,
Your suggestion of providing another API rcu_read_lock_irqsoff()
and rcu_read_unlock_irqsoff() is the best I can think of right offhand.
What tree/commit do you need the patch against?
Thanx, Paul
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists