David Miller <davem@xxxxxxxxxxxxx> writes: > From: ebiederm@xxxxxxxxxxxx (Eric W. Biederman) > Date: Thu, 27 Mar 2014 18:15:47 -0700 > >> Currently netpoll and skb_release_head_state assume that a skb is >> freeable in hard irq context except when skb->destructor is set. >> >> The reality is far from this. So add a function skb_irq_freeable to >> compute the full test and in the process be the living documentation of >> what the requirements are of actually freeing a skb in hard irq context. >> >> Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> > ... >> + return !skb->destructor && >> +#if IS_ENABLED(CONFIG_XFRM) >> + !skb->sp && >> +#endif >> +#if IS_ENABLED(CONFIG_NF_CONNTRACK) >> + !skb->nfct && >> +#endif >> + !skb->_skb_refdst && >> + !skb_has_frag_list(skb); > > I think you need to add "!skb->nf_bridge &&" to this test. Given that the definition of nf_bridge_put is just: static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) { if (nf_bridge && atomic_dec_and_test(&nf_bridge->use)) kfree(nf_bridge); } I don't see why. atomic_dec_and_test and kfree are hard irq safe. I can see the code evolving in a way where it wouldn't be safe to put a nf_bridge from hard irq context but the code as it is today is trivially safe. Eric -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html