On Thu, 28 Mar 2019 15:37:49 +0000 Slavomir Kaslev kaslevs@vmware.com wrote:
On Wed, 2019-03-27 at 14:19 -0400, Sasha Levin wrote:
From: Slavomir Kaslev kaslevs@vmware.com
[ 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 ;-)
-- Steve