From patchwork Tue Dec 12 10:13:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ahelenia_Ziemia=C5=84ska?= X-Patchwork-Id: 13488868 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nabijaczleweli.xyz header.i=@nabijaczleweli.xyz header.b="PWAYJ5/7" Received: from tarta.nabijaczleweli.xyz (tarta.nabijaczleweli.xyz [139.28.40.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38125D6F; Tue, 12 Dec 2023 02:13:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nabijaczleweli.xyz; s=202305; t=1702375980; bh=n8Tz0tvGMgfdPFnvnOzQj+h8yUtCIOndgwGis4T/GEQ=; h=Date:From:To:Subject:References:In-Reply-To:From; b=PWAYJ5/7wGUdmHMz7N8QIQ4ekEIZwUOQDYzI8AfNrITIDjbYq/1SNBNUO6W2SXSRv hHzG6JjeJdhYvhET3HtOFwVx7kZpYdfNJb0N4PNZ4Lf5NS72RwZWqsE9VCRHUT4uNd VU8uSlJz1K+dzahePgbnKs38jkUTqmiYE7P3nYtFQWaCygmhG32bYliYjHHmTlG1KI mdDKFVuCqnSLSBu2vIkOS/9tA8a1SdrvQL1HJMFNmq1Va+zTspvwE0iEUB2pP7/5l+ ff1OarfhS7x54MiYVFBlTqGta7IxiFzcLEVZeR2JDhYw0QUu+LL1fi2GoLbRIoy01Z 8/hsDv3xIzpdQ== Received: from tarta.nabijaczleweli.xyz (unknown [192.168.1.250]) by tarta.nabijaczleweli.xyz (Postfix) with ESMTPSA id 4061D13784; Tue, 12 Dec 2023 11:13:00 +0100 (CET) Date: Tue, 12 Dec 2023 11:13:00 +0100 From: Ahelenia =?utf-8?q?Ziemia=C5=84ska?= To: Alexander Viro , Christian Brauner , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH RESEND 11/11] splice: splice_to_socket: always request MSG_DONTWAIT Message-ID: <1813e1805aa942862d300bec4d0563c5a466dce78.1697486714.git.nabijaczleweli@nabijaczleweli.xyz> User-Agent: NeoMutt/20231103 References: Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1cover.1697486714.git.nabijaczleweli@nabijaczleweli.xyz> Otherwise we risk sleeping with the pipe locked for indeterminate lengths of time. Signed-off-by: Ahelenia ZiemiaƄska --- fs/splice.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 81788bf7daa1..d5885032f9a8 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -869,13 +869,11 @@ ssize_t splice_to_socket(struct pipe_inode_info *pipe, struct file *out, if (!bc) break; - msg.msg_flags = MSG_SPLICE_PAGES; + msg.msg_flags = MSG_SPLICE_PAGES | MSG_DONTWAIT; if (flags & SPLICE_F_MORE) msg.msg_flags |= MSG_MORE; if (remain && pipe_occupancy(pipe->head, tail) > 0) msg.msg_flags |= MSG_MORE; - if (out->f_flags & O_NONBLOCK) - msg.msg_flags |= MSG_DONTWAIT; iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, bvec, bc, len - remain);