Messages in this thread | | | Date | Fri, 12 Mar 2010 16:59:33 +0800 | Subject | Re: 2.6.34-rc1: rcu lockdep bug? | From | Américo Wang <> |
| |
On Fri, Mar 12, 2010 at 4:07 PM, David Miller <davem@davemloft.net> wrote: > From: Américo Wang <xiyou.wangcong@gmail.com> > Date: Fri, 12 Mar 2010 15:56:03 +0800 > >> Ok, after decoding the lockdep output, it looks like that >> netif_receive_skb() should call rcu_read_lock_bh() instead of rcu_read_lock()? >> But I don't know if all callers of netif_receive_skb() are in softirq context. > > Normally, netif_receive_skb() is invoked from softirq context. > > However, via netpoll it can be invoked essentially from any context. > > But, when this happens, the networking receive path makes amends such > that this works fine. That's what the netpoll_receive_skb() check in > netif_receive_skb() is for. That check makes it bail out early if the > call to netif_receive_skb() is via a netpoll invocation. >
Oh, I see. This means we should call rcu_read_lock_bh() instead. If Paul has no objections, I will send a patch for this.
Thanks much, David! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |