On Fri, Sep 2, 2016 at 9:39 AM, Cong Wang <xiyou.wangc...@gmail.com> wrote: > On Fri, Sep 2, 2016 at 1:12 AM, Nicolas Dichtel > <nicolas.dich...@6wind.com> wrote: >> Le 02/09/2016 à 06:53, Cong Wang a écrit : >>> We never read or change netns id in hardirq context, >>> the only place we read netns id in softirq context >>> is in vxlan_xmit(). So, it should be enough to just >>> disable BH. >> >> Are you sure? Did you audit all part of the code? > > I did audit all the callers, and I didn't find any of them in IRQ context. > >> peernet2id() is called from netlink core system (do_one_broadcast()). Are you >> sure that no driver call this function from an hard irq context? > > I audit all callers of netlink_broadcast(), and I don't see any of > them in hardirq context.
Note, you can rule out most of them by checking GFP_KERNEL, which indicates a process context. ;) For GFP_ATOMIC cases, I don't see any of them in hardirq context either, but I am definitely not familiar with drivers like infiniband.