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]
Date:   Sat, 6 May 2017 05:46:55 +0000
From:   Ilya Lesokhin <ilyal@...lanox.com>
To:     Eric Dumazet <eric.dumazet@...il.com>
CC:     "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
        tls-fpga-sw-dev <tls-fpga-sw-dev@...lanox.com>,
        Dave Watson <davejwatson@...com>
Subject: RE: Why do we need MSG_SENDPAGE_NOTLAST?

I don't follow.
Why can't splice use MSG_MORE for the individual pages?
Why does tcp_sendpage need to know if the MORE indicator is coming from the user or from splice?

I also don't understand your comment about partial writes.

Thanks,
Ilya

> -----Original Message-----
> From: Eric Dumazet [mailto:eric.dumazet@...il.com]
> Sent: Thursday, May 4, 2017 9:33 PM
> To: Ilya Lesokhin <ilyal@...lanox.com>
> Cc: netdev@...r.kernel.org; tls-fpga-sw-dev <tls-fpga-sw-
> dev@...lanox.com>; Dave Watson <davejwatson@...com>
> Subject: Re: Why do we need MSG_SENDPAGE_NOTLAST?
> 
> On Thu, 2017-05-04 at 17:03 +0000, Ilya Lesokhin wrote:
> > I don't understand the need for MSG_SENDPAGE_NOTLAST and I'm hoping
> > someone can enlighten me.
> >
> > According to commit 35f9c09 ('tcp: tcp_sendpages() should call
> > tcp_push() once'):
> > "We need to call tcp_flush() at the end of the last page processed in
> > tcp_sendpages(), or else transmits can be deferred and future sends
> > stall."
> >
> > I don't understand why we need to differentiate between the user
> > setting MSG_MORE
> > and splice indicating that more data is going to be sent.
> > if the user passed MSG_MORE and didn't push any extra data, isn't it
> > the users fault?
> > Do we need it because poorly written applications were broken when
> > MSG_MORE was added to tcp_sendpage? Or is there a deeper reason?
> >
> 
> The answer lies to how splice() is working.
> 
> User can issue one splice without MSG_MORE semantic, right ?
> 
> Still, we want an implicit MORE behavior for all individual pages, but
> the last one.
> 
> 
> > The reason I'm asking is that we are working on a kernel TLS
> > implementation
> > and I would like to know if we can coalesce multiple tls_sendpage
> > calls with MSG_MORE into a single
> > tls record or whether we must push out the record as soon as
> > MSG_SENDPAGE_NOTLAST is cleared?
> 
> Make sure you handle partial writes (you want to coalesce 10 pages, but
> stack will only take 5 of them)
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ