On Wed, 2017-08-16 at 11:18 -0400, Willem de Bruijn wrote: > > If I read the above correctly, you are arguining in favor of the > > addittional flag version, right? > > I was. Though if we are going to thread the argument from the caller > to __skb_try_recv_from_queue to avoid rereading sk->sk_peek_off, > on second thought it might be simpler to do it through off: [...] > This, of course, requires restricting sk_peek_off to protect against overflow.
Ok, even if I'm not 100% sure overall this will be simpler when adding also the overflow check. > If I'm not mistaken, the test in udp_recvmsg currently incorrectly sets > peeking to false when peeking at offset zero: > > peeking = off = sk_peek_offset(sk, flags); I think you are right, does not look correct. > > --- a/net/core/sock.c > > +++ b/net/core/sock.c > > @@ -2408,9 +2408,7 @@ EXPORT_SYMBOL(__sk_mem_reclaim); > > > > int sk_set_peek_off(struct sock *sk, int val) > > { > > - if (val < 0) > > - return -EINVAL; > > - > > + /* a negative value will disable peeking with offset */ > > sk->sk_peek_off = val; > > return 0; > > } > > Separate patch to net-next? Agreed. Paolo