lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CADVnQymVud=+D7WCZXJCQvhWnzXYhGSxePvEH+SCuuDDK6VoWg@mail.gmail.com>
Date:   Thu, 28 Apr 2022 19:41:38 -0400
From:   Neal Cardwell <ncardwell@...gle.com>
To:     Eric Dumazet <edumazet@...gle.com>
Cc:     Jens Axboe <axboe@...nel.dk>, netdev <netdev@...r.kernel.org>,
        Jakub Kicinski <kuba@...nel.org>
Subject: Re: [PATCH v2] tcp: pass back data left in socket after receive

On Thu, Apr 28, 2022 at 7:23 PM Eric Dumazet <edumazet@...gle.com> wrote:
>
> On Thu, Apr 28, 2022 at 4:13 PM Jens Axboe <axboe@...nel.dk> wrote:
> >
> > This is currently done for CMSG_INQ, add an ability to do so via struct
> > msghdr as well and have CMSG_INQ use that too. If the caller sets
> > msghdr->msg_get_inq, then we'll pass back the hint in msghdr->msg_inq.
> >
> > Rearrange struct msghdr a bit so we can add this member while shrinking
> > it at the same time. On a 64-bit build, it was 96 bytes before this
> > change and 88 bytes afterwards.
> >
> > Signed-off-by: Jens Axboe <axboe@...nel.dk>
> > ---
>
>
> SGTM, thanks.
>
> Reviewed-by: Eric Dumazet <edumazet@...gle.com>

The patch seems to add an extra branch or two to the recvmsg() fast
path even for the common application use case that does not use any of
these INQ features.

To avoid imposing one of these new extra branches for the common case
where the INQ features are not used, what do folks think about
structuring it something like the following:

               if (msg->msg_get_inq) {
                       msg->msg_inq = tcp_inq_hint(sk);
                       if (cmsg_flags & TCP_CMSG_INQ)
                               put_cmsg(msg, SOL_TCP, TCP_CM_INQ,
                                        sizeof(msg->msg_inq),
                                        &msg->msg_inq);
                }

neal

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ