On Wed, Aug 7, 2019 at 2:47 PM Willem de Bruijn <willemdebruijn.ker...@gmail.com> wrote: > > On Wed, Aug 7, 2019 at 2:01 PM Jakub Kicinski > <jakub.kicin...@netronome.com> wrote: > > > > On Wed, 7 Aug 2019 12:59:00 -0400, Willem de Bruijn wrote: > > > On Wed, Aug 7, 2019 at 2:06 AM Jakub Kicinski wrote: > > > > diff --git a/net/core/sock.c b/net/core/sock.c > > > > index d57b0cc995a0..0f9619b0892f 100644 > > > > --- a/net/core/sock.c > > > > +++ b/net/core/sock.c > > > > @@ -1992,6 +1992,20 @@ void skb_set_owner_w(struct sk_buff *skb, struct > > > > sock *sk) > > > > } > > > > EXPORT_SYMBOL(skb_set_owner_w); > > > > > > > > +static bool can_skb_orphan_partial(const struct sk_buff *skb) > > > > +{ > > > > +#ifdef CONFIG_TLS_DEVICE > > > > + /* Drivers depend on in-order delivery for crypto offload, > > > > + * partial orphan breaks out-of-order-OK logic. > > > > + */ > > > > + if (skb->decrypted) > > > > + return false; > > > > +#endif > > > > + return (IS_ENABLED(CONFIG_INET) && > > > > + skb->destructor == tcp_wfree) || > > > > > > Please add parentheses around IS_ENABLED(CONFIG_INET) && > > > skb->destructor == tcp_wfree > > > > Mm.. there are parenthesis around them, maybe I'm being slow, > > could you show me how? > > I mean > > return (skb->destructor == sock_wfree || > (IS_ENABLED(CONFIG_INET) && skb->destructor == tcp_wfree)) > > In other words, (a || (b && c)) instead of (a || b && c). Though the > existing code also eschews the extra parentheses.
No, ignore that last bit. It uses #ifdef, of course.