Re: [PATCH 5.0 047/246] fs: Make splice() and tee() take into account O_NONBLOCK flag on pipes

From: Sasha Levin
Date: Sat Apr 06 2019 - 10:20:42 EST


On Thu, Apr 04, 2019 at 07:32:00PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
On Thu, Apr 04, 2019 at 04:16:57PM +0000, Slavomir Kaslev wrote:
On Thu, 2019-04-04 at 10:45 +0200, Greg Kroah-Hartman wrote:
> 5.0-stable review patch. If anyone has any objections, please let me
> know.
>
> ------------------
>
> [ 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.

[...]

> This change does have potential of breaking users who don't expect
> EAGAIN from splice() when SPLICE_F_NONBLOCK is not set. OTOH
> programs
> that set O_NONBLOCK and don't anticipate EAGAIN are arguably
> buggy[2].

Hi Greg,

Can you drop this one from the stable queues? We discussed it with
Sasha[1] already in the autosel patches thread.

[1] https://lkml.org/lkml/2019/4/3/811

Dropped from everywhere now.

Sasha, how did this still get in?

Sorry about that, I dropped it from the wrong local branch :(

--
Thanks,
Sasha