Re: [PATCH AUTOSEL 4.9 20/87] fs: Make splice() and tee() take into account O_NONBLOCK flag on pipes

From: Sasha Levin
Date: Wed Apr 03 2019 - 12:19:10 EST


On Thu, Mar 28, 2019 at 12:04:17PM -0400, Steven Rostedt wrote:
On Thu, 28 Mar 2019 15:37:49 +0000
Slavomir Kaslev <kaslevs@xxxxxxxxxx> wrote:

On Wed, 2019-03-27 at 14:19 -0400, Sasha Levin wrote:
> From: Slavomir Kaslev <kaslevs@xxxxxxxxxx>
>
> [ Upstream commit ee5e001196d1345b8fee25925ff5f1d67936081e ]
>
> The current implementation of splice() and tee() ignores O_NONBLOCK
> set
> on pipe file descriptors and checks only the SPLICE_F_NONBLOCK flag
> for
> blocking on pipe arguments. This is inconsistent since splice()-ing
> from/to non-pipe file descriptors does take O_NONBLOCK into
> consideration.
>
> Fix this by promoting O_NONBLOCK, when set on a pipe, to
> SPLICE_F_NONBLOCK.

Hey Sasha,

I don't think that this patch should be merged to stable kernels. It's
more of a feature rather than a bug/regression fix and it changes how
splice() has been working from day one.

Can you please drop it from the stable queues?


On the other hand, it keeps stable more in sync with what mainline has.
If someone writes new code against a stable release, and depends on
this behavior, it's less likely to break when they run it on a newer
kernel. Which means its less likely that Linus will revert your
change ;-)

I'm going to drop this, I don't really want to take things which
knowingly might brake userspace.

--
Thanks,
Sasha