From nobody Mon Jun 8 06:36:12 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE6C727AC48 for ; Sat, 6 Jun 2026 06:11:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726288; cv=none; b=ixwrawTQxtuHwvx3cBkdd7AFp4uBAq4D9CVVr4v+fKrK2UZZtSxEfdL/tW0wAdgDBFT3K2WqxJ2XKB+zI6SRaLQHQtCZQ17SLc+hK027fN2zak0BD6tre1FRtTT9FdOkaRc6z0rP3Cu0DmrEWj21GqQRQ2uZiawA6nC7ha4MkIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726288; c=relaxed/simple; bh=QtIkhOcb4XuSPNMSHsQTam2xRok/IOw4SC1HUoDCl24=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZzL/nc6l2i6uKh89bkcnFSXoXsUPJ3Obw69MqV0VsLiLeA8Zw2vAxSYO+p0Vk6bytthUvD/3AOExI/KFfZdh3zmY3cvaCBWUj19LWqq/PfQvKrC2neUV5YYSN66DULm30XUZVUPWzo5Ew0H0fwzJU11kBeW4JN6BiK0HlgH8B34= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KLy12Jix; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KLy12Jix" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-490b4e1ade7so28379615e9.0 for ; Fri, 05 Jun 2026 23:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780726285; x=1781331085; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T2cQgCHbxQom2kVIv1Cvt6Y9CPEs8rn7euaXGTL0+j8=; b=KLy12Jixz2tIbG+Bqx2kFQDR1LkeBX0JuY4LIwcqjeHo/va6TrWxNBoa91zM34FCyk mObgIC48xiVoCBi1ZPIGlgQOHQyn9emWUrVDOWqYaBFvhEZXDTOeeUhpLL6+rJIwshLr aKffAjaazH/1LOg2AqAoqWohc3YFEKEv/DxJevSlqg9zFJ078PjbTzLwj+enA8sbMdV9 jpud3TmpWZmn+ufBFbxMUfcGTKX1l+POePF59aR2eaSzdSYgy7WHLLc+/yaRg8ft43ID nKTwCh5PVm9JUyDWNm8XB6Ha2WzeIkTh3i356Tr5YC4NvrM4K/q+hVxk9XvOEFi6IqtH L2RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780726285; x=1781331085; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=T2cQgCHbxQom2kVIv1Cvt6Y9CPEs8rn7euaXGTL0+j8=; b=FLrDrY8+tZCAgLwx9Wey0ZAXTTkDFk75vV9nQpYZZ25znxDsLrJ+71xHKoBRfzgdi7 uYz1jyZkE5Ign7GuMRN0dONaqVsZsyRtMVGanwnbyX1d0dA6A8uuwx5z9CANoSa/RZYt VTI/0xCcXnafc57cp8/7fNvuOGp6OwZWzC9NW6/Q3zUhS5oQZdt8Q9l+gPJlxuZIZNXm Ds9Nga2N8uI0yFnv/TCveGhxjjTMKCqIf9HIgfhsRn+irf8wE8B5aP0JoxJl0PJWRn5m QgGzNTnXR4z2Kq1vVTbrv6WZLT7MRA4jCVNToVPW68En5oxSud9kj79Ji1yiND3GTHKm t1aQ== X-Gm-Message-State: AOJu0YwOptQr9X/VGgI4inxQoEQhZAGk6XbzzSnBfxIvvb1uN1Wetk3D nDiOrdqZi4pj+TAS9873m9fCbkRF5pONTAwM0lj7KTZTP0g23rYt0llz X-Gm-Gg: Acq92OEzt8oFEZTV5Twge/8sZmmPPMbR8U3D2fA/8NnRqxP3wkflhXXqjT9fI9QIU3y 2O5pJy/0eKhbPg3TE8/zFwOmYBWKbBHK38uUv1ET7PI/hnUVsVdp8gNu24sX6vpyoUlRv7g76Se hGRty1+MODBdJMdCkw5Kem+zPo4ABdUBiSYWKjuKAkyhlepxpP04KdFM81GIaTXFnkzdrgbEx38 KEWqcjWpkZnvw4GwVkhvsPkF5yAz479UYxo+W8s007oJKaWumjVRNzpbrU46XGmeXIU6I541SZ/ JVigsvN7RMjklU0Trr0Xu3WRsc76vUuMUPm7TKgTYQ+ysbnho3mcQK1m9OWhqTQqzTv0IRyHUSw B6cazWNdRYpbgOYIKT5u7a+MDGmpTSMNAYz1A3jBvI5BAUi9tIJZGxkhopTu7l1HzrbLttwlgRr 6k2BSwU8LuNQ14ixVliFSGer8YR6pAe2xh1JxaEExb X-Received: by 2002:a05:600c:a117:b0:490:c2a3:3302 with SMTP id 5b1f17b1804b1-490c2a3336dmr71973635e9.35.1780726285175; Fri, 05 Jun 2026 23:11:25 -0700 (PDT) Received: from localhost ([212.73.77.104]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-490bc39e024sm273433555e9.4.2026.06.05.23.11.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2026 23:11:24 -0700 (PDT) From: Askar Safin To: linux-fsdevel@vger.kernel.org, Christian Brauner , Alexander Viro , Jan Kara Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, netdev@vger.kernel.org, fuse-devel@lists.linux.dev, ltp@lists.linux.it, Linus Torvalds , Matthew Wilcox , Jens Axboe , Christoph Hellwig , David Howells , Andrew Morton , David Hildenbrand , Pedro Falcato , Miklos Szeredi , Andy Lutomirski , Collin Funk , David Laight , Stefan Metzmacher , Steven Rostedt , The 8472 , Willy Tarreau , Joanne Koong , patches@lists.linux.dev Subject: [PATCH 1/5] vmsplice: open-code do_writev and do_readv Date: Sat, 6 Jun 2026 06:10:27 +0000 Message-ID: <20260606061031.3744880-2-safinaskar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260606061031.3744880-1-safinaskar@gmail.com> References: <20260606061031.3744880-1-safinaskar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" My previous vmsplice patch did the following mistake: I did "CLASS(fd, f)(fd)", then did some checks on resulting "struct file", then passed numeric (!) file descriptor to a function. This is somewhat okay in this particular case, but I still think this is code smell, so I fix this by open-coding do_writev and do_readv. Also I insert a comment to warn other developers to keep do_writev and do_readv in sync with vmsplice(2). Signed-off-by: Askar Safin --- fs/read_write.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index 1e5444f4d..e224e7cb8 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -1070,6 +1070,7 @@ static ssize_t vfs_writev(struct file *file, const st= ruct iovec __user *vec, static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen, rwf_t flags) { + /* All future changes to this function should be kept in sync with vmspli= ce(2). */ CLASS(fd_pos, f)(fd); ssize_t ret =3D -EBADF; =20 @@ -1093,6 +1094,7 @@ static ssize_t do_readv(unsigned long fd, const struc= t iovec __user *vec, static ssize_t do_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen, rwf_t flags) { + /* All future changes to this function should be kept in sync with vmspli= ce(2). */ CLASS(fd_pos, f)(fd); ssize_t ret =3D -EBADF; =20 @@ -1226,14 +1228,24 @@ SYSCALL_DEFINE4(vmsplice, unsigned long, fd, const = struct iovec __user *, vec, if (fd_empty(f)) return -EBADF; =20 - /* We do do_writev/do_readv, so it is okay to pass "false" here */ + /* We do vfs_writev/vfs_readv, so it is okay to pass "false" here */ if (!get_pipe_info(fd_file(f), /* for_splice =3D */ false)) return -EBADF; =20 - if (fd_file(f)->f_mode & FMODE_WRITE) - return do_writev(fd, vec, vlen, (flags & SPLICE_F_NONBLOCK) ? RWF_NOWAIT= : 0); - else - return do_readv(fd, vec, vlen, (flags & SPLICE_F_NONBLOCK) ? RWF_NOWAIT = : 0); + if (fd_file(f)->f_mode & FMODE_WRITE) { + ssize_t ret =3D vfs_writev(fd_file(f), vec, vlen, NULL, (flags & SPLICE_= F_NONBLOCK) ? RWF_NOWAIT : 0); + if (ret > 0) + add_wchar(current, ret); + inc_syscw(current); + return ret; + } else { + ssize_t ret =3D vfs_readv(fd_file(f), vec, vlen, NULL, (flags & SPLICE_F= _NONBLOCK) ? RWF_NOWAIT : 0); + + if (ret > 0) + add_rchar(current, ret); + inc_syscr(current); + return ret; + } } =20 /* --=20 2.47.3 From nobody Mon Jun 8 06:36:12 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 804A42FD1B6 for ; Sat, 6 Jun 2026 06:11:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726312; cv=none; b=olzaz77NMzQh46QpTsg/CSAPCPIVhs+yd27x6kvCc6Ezxxl9ZvbyAPfk+zjjZIYeBgdM0OnF9nI6N2dHxBQ6y0tWAeYFyWIaeWKLyftiUmpI8jYaM+78kqgyvym6DQem7CBaH9Ml9rXCNsvriVfbfAzz1XnLPbRQ/ys18urL2Xc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726312; c=relaxed/simple; bh=x+w9SGxZBWO4hPXg8E+A/q/4ScS0BqeDSCrwJNo6iBs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IOta53Q6+jwNduAT7ZQaUvjx7HYJwpQDkIOiemDv2l56DYa0TYbS8mBMzTHt1awwtkqDXJfH/QLkK2HqwQZ8tTXUM9pJCDPa0FtkIb6P3/JpuB1tWbc+4fu9N5yqkDj58a7oa6yAsqM75N2+RNujFrqRn02tUDmgpbrG3nmwkNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NjKXTOhZ; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NjKXTOhZ" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-45ef56d9b67so1989188f8f.2 for ; Fri, 05 Jun 2026 23:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780726309; x=1781331109; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0+ggg4zFesK0IrYb2saIE8cPaSi4XEf6KWehvtWp5AY=; b=NjKXTOhZ6oFtD6egk7Q8ZGBQebsZA/l29SSQKp5HIFtTtDs5m9pJncOdhT1E4OMNlw voEdgti52EWxYcP4vTsS4BbnzSSgKcN3+Sj8qb3PYtHNlqx0Yti9pz12uYadPiFktEvI GEY2VByqek/o37vSoIwXjHuNB2Wk+xq00+LtVXml4K2ZaB309p+/VTaXBq7SvGMQTLaS 9dG79e/RcblaWFrhC1exZ24H/AznHI1yD5BpA6VnbtCSbx/10pau+uv5bTw4iUoWA6/Y MdH4ZC3Vk3LSX0FT0DfUFQvy7RPM7Jc3cMEtLJ/Y56H/K7XXdGGTNtMsrIvCtmE4Y+Hk LdWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780726309; x=1781331109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0+ggg4zFesK0IrYb2saIE8cPaSi4XEf6KWehvtWp5AY=; b=cICvkNjyLtIDPQBQDa9Q83dpcBeCTBtFbZ14BhBqKtXkCdxolVDiAUj4XnzBU68jP8 dS0mkPHRaMMh7JT/zSwl2SfPtx0YvHNk7ALzGjsJE9v8ljphgiSIlPmo2ZYncMvlUAm9 DDP1aRlDqTNui3xN3s6Y49nrUMWvRg8qohKgpygRZxzlmgJr6akj3f9jF1R/Vv3OzOWD U0bu6I1zxQo400gm2l59BP5VeUKV8QH80QaUyEAuFBPwxK9uyVnAyOLVVc1HCedJOqTk 3tgBXSrxzXQv0EHMw1nq1AqBolOKGTIzvJTOecznhcas5mPTFPGv5b7GJe32FpmvYcNB 6hCg== X-Gm-Message-State: AOJu0YxjhREZSbTVOq6NxA8H4mqrEG+MJeVIdpZHfccmcw4aAeek6cgq 6GbD2P4e8U1Xr9jzAgIZhmvcac4hkxKWa0wr/i6zpSSgaRT4mwNNr+oZ X-Gm-Gg: Acq92OFY6pTl08oM41vtiEKkPlgYvz2gT0YuX3kWmJqwEG0rDjEpXsTbn/cVLin03wo x7OUm9VSVBL9NuLl1+lHWVZxJ85qO7VDCNeNNgBEKXsaI7FHVZi4gVWFT55n2s6R/gyi35m/5E+ ckFPmACZwr7aeXnoltT6NtKXiYmGOLSN4iw/ihPx1ZwXwz77kMXtG3inorUziQaCcV9IQpfsZP1 BBmsNGEf3oC7y9h8CnAL4x9TQXk3+/erKLczgRsr6SHrqxrTLiDB6Uad80tYawiMh9hH5grWwKL 7WnXyWQxuQrpGIwdy/JUEYryKnvbg5cjXFNoc+TvSajt+Xx+ZOuhkkIM/h+8ZQDzZaFZ0x3o2sg dQ8crTDZCNQDHHsF6Y2neaAyxiAh2JELNsPdqhp9Jx2ocm2nUUw0THA/FRqin13RsnmcNySLYrL gQASK7hR2NEDA+hds/MftWq8nuiqSOB9D6gXJn6OTJ X-Received: by 2002:adf:e014:0:20b0:45e:f29d:d438 with SMTP id ffacd0b85a97d-46030618a38mr7876243f8f.28.1780726308885; Fri, 05 Jun 2026 23:11:48 -0700 (PDT) Received: from localhost ([212.73.77.104]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-46028a6dce6sm24115947f8f.30.2026.06.05.23.11.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2026 23:11:48 -0700 (PDT) From: Askar Safin To: linux-fsdevel@vger.kernel.org, Christian Brauner , Alexander Viro , Jan Kara Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, netdev@vger.kernel.org, fuse-devel@lists.linux.dev, ltp@lists.linux.it, Linus Torvalds , Matthew Wilcox , Jens Axboe , Christoph Hellwig , David Howells , Andrew Morton , David Hildenbrand , Pedro Falcato , Miklos Szeredi , Andy Lutomirski , Collin Funk , David Laight , Stefan Metzmacher , Steven Rostedt , The 8472 , Willy Tarreau , Joanne Koong , patches@lists.linux.dev Subject: [PATCH 2/5] vmsplice: change argument type back to "int" Date: Sat, 6 Jun 2026 06:10:28 +0000 Message-ID: <20260606061031.3744880-3-safinaskar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260606061031.3744880-1-safinaskar@gmail.com> References: <20260606061031.3744880-1-safinaskar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" My previous vmsplice patchset changed vmsplice argument from "int" to "unsigned long". This may cause problems, so let's change it back. Signed-off-by: Askar Safin --- fs/read_write.c | 2 +- include/linux/syscalls.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index e224e7cb8..77487b307 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -1218,7 +1218,7 @@ SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const st= ruct iovec __user *, vec, /* * Legacy preadv2/pwritev2 wrapper. */ -SYSCALL_DEFINE4(vmsplice, unsigned long, fd, const struct iovec __user *, = vec, +SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, vec, unsigned long, vlen, unsigned int, flags) { if (unlikely(flags & ~SPLICE_F_ALL)) diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index a86a88207..46a3ec954 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -514,7 +514,7 @@ asmlinkage long sys_ppoll_time32(struct pollfd __user *= , unsigned int, struct old_timespec32 __user *, const sigset_t __user *, size_t); asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, size_t = sizemask, int flags); -asmlinkage long sys_vmsplice(unsigned long fd, const struct iovec __user *= vec, +asmlinkage long sys_vmsplice(int fd, const struct iovec __user *vec, unsigned long vlen, unsigned int flags); asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, int fd_out, loff_t __user *off_out, --=20 2.47.3 From nobody Mon Jun 8 06:36:12 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E1652FD1B6 for ; Sat, 6 Jun 2026 06:12:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726335; cv=none; b=GBhuEu13khHs+99AcHYDs0t9DdRC0ZVcZOw0c+9nsLPNg+j9MqvL7X7jx1eF6ObzVNU6yw+swh2TYZaxfru3DQyZmXunr3itzZ9sjxxf+GwixIjVjSJHuG6xlgBW7jTZMEGRe/UCCvSZevXmilhQ7yT1qoKi3ldBVIZ8OewCXWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726335; c=relaxed/simple; bh=cFehA3I9prjpPS9MpvxHw5vuJaTELUrjhx5IPWyT2q8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JMKkPZOFPblZs84pOTwndT4W07P7UHS4pOwxZ94lIaHyYm98Mlkm/UZ9nwNMhhH2qJL4+UQwhgOtMwIxwErRWqhyB/en+w35tYKBVyCr1tdZ9JqDu7geql5cwulAsb5mdB9mP7ec1GUorC7IuUGOJrJPFfIrHMjUCettXPu3G/E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jQQv21UN; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jQQv21UN" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4905529b933so26560835e9.0 for ; Fri, 05 Jun 2026 23:12:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780726333; x=1781331133; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ybLyqkJC8PpxOPGtytqXN1jytQgb2AKCO5QalzHljcA=; b=jQQv21UNBBN5dIlIwwGKVgNBTYweSwG9zYIldvHz3X4vjHXFs7Cq11mcHlzjXhav3k k4QfhbCNYy9oOF9FRn1V5pXLvm9WR0peXOsRlnOnuxYD48rXLuq0ts+YKGohwzIion8t 9suv7ugADQ2muBnXEWf93lBrTP8adPhGduIhWs/13fRjOxuAlXcCgtLgX4lj7oqYH5Ih DLAtbIZEBJCp7uEglv9Cm6U0VTIWwRjXDHypMmVm9HwpkbbJNqTC9QfklgUz/fuTBKe5 1Tj5tYsEGrg1I+tQSiltcZI5nKx8y7JAR4cvt+MTaTNIDr2aql4tgx2nbD1UJnbbvLdh UYWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780726333; x=1781331133; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ybLyqkJC8PpxOPGtytqXN1jytQgb2AKCO5QalzHljcA=; b=mzhB7MvMAzQWSnimrLh9rgbYY/0XuhjcQIAVIRm31xPrqPN+EwRPnDQGzNoJNq2kHq MuV9tPOsxzJ7Qwl3bGQhtVIp9EJoDy+Cp4DBJMKwXprkmV6HKB3cnQpdOHrkc8Oeoz6w sMaNq181C7VlHUMOdwR3nT4iXct8eTVYGK3sBKQzmdY3CJt4MiMoQQ8jykf+XAdWfnKS 1gvWr38d8IvD0CtxqTSKEfvKhV4nlSUtWiRgIexM6RQiRqfe/cnGrWjdRRk2w6i5l64X 2NqYwGXsmUyAH+TlgxD47NSW4ngiPaQeZtiDJWGR3kBDPpwAmMLNPGd8K2XRxW0y3PqA YvHg== X-Gm-Message-State: AOJu0YwzDoRNndb5UQWbizF4Zi876vpWe2FnNmis33MNyS9lmHLN2e/V B4K8dxaaWI7EvA7UcTaAtnGoNTFJbP/9HmTp6tf2nS0jwNLf/5n55WZv X-Gm-Gg: Acq92OGozaygtLtBaG8TFIxzs66Xvu5AXpaToFgRDKEG9DiC4T5amU1sBgZ1zhE0Fa9 4d6GHXQIjST/0QGKC/Y96KsEUOhoj1IObLZYeRKwqAFw10Cqlrr4OfB2qC3qcotsATdFhffrzHN rsiQ5Ej0N9K6qzynRXfeyQn2imb0Pzwe2kZXPc1GhAa3GsmJwoOZVsKuCzfAVVRQ5kk/lkgbI/X AdW5uA1quzote08cg4GLj//LzB7ML5Ef2KsqC4nx3DJPI34Y4MYpo2P1CfcdnP844X3ut1GOIxS pz/7mtjjpJP5CNz9+hwJnw6f2Y9FtlF66IxVkLkm9yKPxzewjdG5x6E/ZUEFaO+B5NcNItm7tea RJL/0aXDfsby7xZGUMFa5G8hkQdX6QcP9rcld4CJTvDv20YK71RVVLtHxsKhgUZ2eXDdIvWgPVP +pIIuK3eRQtj+mVZpKyLRDBRxgfifpnvqqGBVMkrgH X-Received: by 2002:a05:600c:8b0c:b0:490:ba61:7981 with SMTP id 5b1f17b1804b1-490c25c1e4amr103918225e9.23.1780726332629; Fri, 05 Jun 2026 23:12:12 -0700 (PDT) Received: from localhost ([212.73.77.104]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-490c2c9ea37sm178712255e9.0.2026.06.05.23.12.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2026 23:12:12 -0700 (PDT) From: Askar Safin To: linux-fsdevel@vger.kernel.org, Christian Brauner , Alexander Viro , Jan Kara Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, netdev@vger.kernel.org, fuse-devel@lists.linux.dev, ltp@lists.linux.it, Linus Torvalds , Matthew Wilcox , Jens Axboe , Christoph Hellwig , David Howells , Andrew Morton , David Hildenbrand , Pedro Falcato , Miklos Szeredi , Andy Lutomirski , Collin Funk , David Laight , Stefan Metzmacher , Steven Rostedt , The 8472 , Willy Tarreau , Joanne Koong , patches@lists.linux.dev Subject: [PATCH 3/5] splice: turn wait_for_space flags argument into bool Date: Sat, 6 Jun 2026 06:10:29 +0000 Message-ID: <20260606061031.3744880-4-safinaskar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260606061031.3744880-1-safinaskar@gmail.com> References: <20260606061031.3744880-1-safinaskar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" I want to do this, because I will move this function to fs/pipe.c. Signed-off-by: Askar Safin --- fs/splice.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 6ddf7dd72..707db2c2c 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1239,7 +1239,7 @@ ssize_t splice_file_range(struct file *in, loff_t *pp= os, struct file *out, } EXPORT_SYMBOL(splice_file_range); =20 -static int wait_for_space(struct pipe_inode_info *pipe, unsigned flags) +static int wait_for_space(struct pipe_inode_info *pipe, bool non_block) { for (;;) { if (unlikely(!pipe->readers)) { @@ -1248,7 +1248,7 @@ static int wait_for_space(struct pipe_inode_info *pip= e, unsigned flags) } if (!pipe_is_full(pipe)) return 0; - if (flags & SPLICE_F_NONBLOCK) + if (non_block) return -EAGAIN; if (signal_pending(current)) return -ERESTARTSYS; @@ -1268,7 +1268,7 @@ ssize_t splice_file_to_pipe(struct file *in, ssize_t ret; =20 pipe_lock(opipe); - ret =3D wait_for_space(opipe, flags); + ret =3D wait_for_space(opipe, flags & SPLICE_F_NONBLOCK); if (!ret) ret =3D do_splice_read(in, offset, opipe, len, flags); pipe_unlock(opipe); --=20 2.47.3 From nobody Mon Jun 8 06:36:12 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A5C63064B2 for ; Sat, 6 Jun 2026 06:12:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726359; cv=none; b=LvQrTIs8pASV0st7dfnxT9NLnONRikAbOEZl3/BLyf/OJcdaaUXmysfJGm9KXYqvO2Apsx7+rIUMIZqVudt3OTdWVwVCgb8dBodX5X8wW/l5ae7xn/Hx2bDmTE62p0RqTpq8qeO4RHtMywHf1wQ8fTHeoEsSYsVbvxrM3EI6ATQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726359; c=relaxed/simple; bh=qZiu7fS8kCZwF8htRjH//VRi7MyCn+kxzvosWiYjiV0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=opDhOHHDz/Fb6/QxbMW0kpo0lsktgoW4AffFBzZcpAnM0x3gnHVPXHXXRRZtRZGa34ZdLKP/wQpnYZm7cUek4t6A7qx7HFxv4c1RFv8kMm1KL2QxI9Y0OqtMC1zbR/ujWbtCGSbZVhbR4El3kyZ7WdAQv3GZid1LAgGhmcHtj0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=L4s7ECxT; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L4s7ECxT" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-45eedcdaeaaso1909755f8f.3 for ; Fri, 05 Jun 2026 23:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780726357; x=1781331157; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VhjLk1CMHsJsOzOKQ1JbfvjErAaIXQv49sV6IFA3w98=; b=L4s7ECxTUjG0RDR3WRK3BqiiobD46Pe2PuXxbGIjV7aQ7oZjPFdSWw9K+z8QGFl9vd ooopF3muoWuT8/+JvGAAQly7+qEYOjvnyirFepJ1O+L2ozkOox3jTYsaWlX59Cm6Jr+b uF69w7fjnJcEPFFSves52eqvnSji2yx1Pq034qcRi8pn0wMhVyR/EhwYyNfkK3pBxhTt xfLpYL4v01Nd/smdKvYZalHR7hMy9sYdamMYZWsRDyep9SNVzk8zm6qofTd4BYKWOD4c EifQHVjNsQG69TrCjxXzvUjJv6LIP5jJTtEfOki8rmwwFw3R1r9qpLpFePMbdgy3P4Uq KEMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780726357; x=1781331157; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VhjLk1CMHsJsOzOKQ1JbfvjErAaIXQv49sV6IFA3w98=; b=Tm3ifPd+p5hDGwwcBRmHXAMYBaXmYJ8wJVVbLCq6lp+0CfqByOO74Idg3PhH6q0iRz lQ8TrOeV0Dmp8Os4LUf+Dmt+NZUFrppMnVCyKPyVw8PFaPjm+vEsoYHl3tSHO/dGe2hu WEoGakilc8iNQvHvORISwndjRZeidr+le7SgbUn1nkyP676Eq36mTMXrmZUqGfKDFKtR wOJjvwgTg1tYqqbLYBMX+2g+J1K/XyCN0/9HSIHJeQw98tk87mYaQ7I0ugGWXwqY9IWO 5cm/kYTsiLkA2/myKfHBki8vqniBhpBth3qEz6KoFKQj4IhW4aEnlvSBXWUVcQaLXmH7 POhQ== X-Gm-Message-State: AOJu0YyCfAojpWecTVVm1Ncy0u7bBW1RFWBwYgy0EnZGdw0KP1jFesL/ pu8PXHNfO41+a4DR6b/Xo44ISuTytmmPiYJ8fKCZx9vkG2+p2+rgqemO X-Gm-Gg: Acq92OG+VcNzOy+Lwi3SGVFZSEEeUn6+HIOVrCf2m/VcPUytueDdZcHMfqzCqD41Dl7 xB2TmPIgkqxrcLbs1v1Hv8+3CXkdrhm5nGFjljvB7mVsKAh30l5wYy2+WXrLrsi6Gt0A8izudMf I7OM7ECC6nsh8lGzbWiN03znFYsPgvfi6NYKThUU5LEANV/d6AklINfN5NN/WJrjSovGIqadZxb K6049rojCacp9SUdYLoXIfkXypEZt6d+KCznXId765DV6foK8HY/+5fPc9rlII5wHYAIFA1YP0V AeIgFAgMRruP+y5y982hPD5yoAs0bbvQJDR4QpTHMaLP/PaHlJvTeWrs632P3f1vpJbPJ5F/88i f93/1fnsiDdcbMF+VxLYail01Mv8pIRX23CArC2jJs5/0wYio2Sik7+E4HVnI4LJSK2w5d9ARxx IIKe4rgJPL1PiLuQ/u4XsnrgG/EOWaUA== X-Received: by 2002:adf:e545:0:b0:45e:e44b:3136 with SMTP id ffacd0b85a97d-4603063a715mr8180799f8f.19.1780726356710; Fri, 05 Jun 2026 23:12:36 -0700 (PDT) Received: from localhost ([212.73.77.104]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-4601f344541sm29667978f8f.22.2026.06.05.23.12.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2026 23:12:36 -0700 (PDT) From: Askar Safin To: linux-fsdevel@vger.kernel.org, Christian Brauner , Alexander Viro , Jan Kara Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, netdev@vger.kernel.org, fuse-devel@lists.linux.dev, ltp@lists.linux.it, Linus Torvalds , Matthew Wilcox , Jens Axboe , Christoph Hellwig , David Howells , Andrew Morton , David Hildenbrand , Pedro Falcato , Miklos Szeredi , Andy Lutomirski , Collin Funk , David Laight , Stefan Metzmacher , Steven Rostedt , The 8472 , Willy Tarreau , Joanne Koong , patches@lists.linux.dev Subject: [PATCH 4/5] pipe: move wait_for_space to fs/pipe.c and rename it Date: Sat, 6 Jun 2026 06:10:30 +0000 Message-ID: <20260606061031.3744880-5-safinaskar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260606061031.3744880-1-safinaskar@gmail.com> References: <20260606061031.3744880-1-safinaskar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This is needed, because I plan to use it in fs/read_write.c. Signed-off-by: Askar Safin --- fs/pipe.c | 17 +++++++++++++++++ fs/splice.c | 19 +------------------ include/linux/pipe_fs_i.h | 2 ++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/fs/pipe.c b/fs/pipe.c index 9841648c9..c0ccf21b9 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -1451,6 +1451,23 @@ long pipe_fcntl(struct file *file, unsigned int cmd,= unsigned int arg) return ret; } =20 +int pipe_wait_for_space(struct pipe_inode_info *pipe, bool non_block) +{ + for (;;) { + if (unlikely(!pipe->readers)) { + send_sig(SIGPIPE, current, 0); + return -EPIPE; + } + if (!pipe_is_full(pipe)) + return 0; + if (non_block) + return -EAGAIN; + if (signal_pending(current)) + return -ERESTARTSYS; + pipe_wait_writable(pipe); + } +} + static const struct super_operations pipefs_ops =3D { .destroy_inode =3D free_inode_nonrcu, .statfs =3D simple_statfs, diff --git a/fs/splice.c b/fs/splice.c index 707db2c2c..d12243d19 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1239,23 +1239,6 @@ ssize_t splice_file_range(struct file *in, loff_t *p= pos, struct file *out, } EXPORT_SYMBOL(splice_file_range); =20 -static int wait_for_space(struct pipe_inode_info *pipe, bool non_block) -{ - for (;;) { - if (unlikely(!pipe->readers)) { - send_sig(SIGPIPE, current, 0); - return -EPIPE; - } - if (!pipe_is_full(pipe)) - return 0; - if (non_block) - return -EAGAIN; - if (signal_pending(current)) - return -ERESTARTSYS; - pipe_wait_writable(pipe); - } -} - static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe, struct pipe_inode_info *opipe, size_t len, unsigned int flags); @@ -1268,7 +1251,7 @@ ssize_t splice_file_to_pipe(struct file *in, ssize_t ret; =20 pipe_lock(opipe); - ret =3D wait_for_space(opipe, flags & SPLICE_F_NONBLOCK); + ret =3D pipe_wait_for_space(opipe, flags & SPLICE_F_NONBLOCK); if (!ret) ret =3D do_splice_read(in, offset, opipe, len, flags); pipe_unlock(opipe); diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index a1eeed800..be653625d 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h @@ -335,4 +335,6 @@ struct pipe_inode_info *get_pipe_info(struct file *file= , bool for_splice); int create_pipe_files(struct file **, int); unsigned int round_pipe_size(unsigned int size); =20 +int pipe_wait_for_space(struct pipe_inode_info *pipe, bool non_block); + #endif --=20 2.47.3 From nobody Mon Jun 8 06:36:12 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 073A93090CC for ; Sat, 6 Jun 2026 06:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726383; cv=none; b=p1xDhwqgj8yj+2WsNtFboIs175b1LeCnfpslTtZw3cGzt3vIDaj4w5R75vn6SUKtqvEr5ZTvKICYbXWVXpGNoxY+3MEJZ32k6s7PXm16WD339wBzfC+olAfdo+DgNPaDOjmXuAUP5LSvyRmdKhSGMYZuezjaHGQa/w6yq5vtnIo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780726383; c=relaxed/simple; bh=YVkMCLt5FJ+bDbSrJETzwIU6LK60EPUbwXQNXghAHuo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JrdxfFWfoXwbOQ7UotFmmkPGclxQqqH0OLt+EZslPD4M50ekj/rAnHvjS2RKip0YJ5/cYqeYwITh/KqKIugcEdFeaWsVjhrgUGiOfuIOAyEBbiy3UvmPRJPHbKoY4aIUIYl/EoGmiyvW5QMlIKJ5PqLO2wWAQ8GcfVAS6XTcQCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=a3xZMcf8; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="a3xZMcf8" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-490b09e4cccso18949275e9.0 for ; Fri, 05 Jun 2026 23:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780726380; x=1781331180; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Y22J8nzR3UW0cMYCUVJWDcFSFo/6kHGVqnn/SzRaSz8=; b=a3xZMcf8qDs8ViQFPPN8nYKAL1Op8FOTL/SEYz+j1qU9fOehiv6gerL8Z0EuCjr4jv HzRypJdpqmObxKso9mHsn0g15GTjR0XBAXyZOHh55yoB6XxDYd59DipPJSNqDxEaU/4Q BMZB8INnMZ8T2et5vzOaY/Ox69qyHqWVIlFmtUZvFSypmvFetmxSsORTT45UGHl3FIaS VGInaZScHjTqHPwDX9yC2gAVV9Ze7OQmsjKVlAHASkvxpN9gLrP4jRy2teo2R13z4Qj6 HVDS/mFAmPPxrQVADHYbsjFn6nbs3Sb2c2X0GaCNQDspHIGHhAFhtODEvC8n631oljsK GarA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780726380; x=1781331180; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Y22J8nzR3UW0cMYCUVJWDcFSFo/6kHGVqnn/SzRaSz8=; b=ULB+KmZEssL9KFhV3x25USATzun4VUO4nabN3r2ahkVYQ4h4VaqKd4NNPUuLqeTHMx cg/acnOsYN+xfNuG6siy5gB9pVtjEkOm8mTFEHTrMs95n/6Hu+9SAJOJbS9FwoF9i42U lN+mkHLQdayP+G8IlRjUWJfrBiBdw/Kq69Qn9tnnv/D8nkfojCK2wLihn9KrgpUOowiM 2z59RetcgY393jWUURVVtrQT3q3Az7tajMCYteU88f8U0ab9aHeo3ZoNWnDM4cBEwD7A OS1Hp+XbYqtqbhzKAOZyalSamyCpN//krTuWjHcHGesJvuf/vQL1N0MHLl5lzzb0BQWN a/ag== X-Gm-Message-State: AOJu0Yyei0yv+l7LQ5sG6dl3mDueiqQVTWFu0CaInAGzpgnWghZ22Ul9 VmJAxu9JsziC/soQoOJUXlOJBe6U+yOI8BmUCM1m64JaiGRKc9fjLzJT X-Gm-Gg: Acq92OE/4jal6UiGpj1ObTWfTcWUkW5+xWuAr7SR2TLFZMTIPT5ueaaYJXhcUoSptVC Gt7cpOqkGvOy07CBXuDONCFpfWOHYRNVlVfxQ7zSspo7APpVdQbcZeSQ2DqQWVMdN7q5LF5rsnc X9rm1dl2ZKXklPjEdGaFvlyXyxyCl8h3tSyFsapMGK9ajmaNnUMVRkn1LvWnZVsgmUBll5UenxY rk0uTGWjt9KQ41uXEYKZcmahCUTHNeLgFn1Fm75QHJMUXXVe2/xxu99H/o2hn1RoepYa0cObIyQ lTSTDR1ezP3klSND/kbeUUoupdd2jqKr3D/7oMiJl6B1E5FSPUkyJuDKKQGCK9JloSCssNysWPt LLnPnen0cXUdu8oN8mkjwddxDHBchvcarx//alVWX8AbExSTfDfgrZvXycwpm+ksm5HJWrjV4DJ dE0zReZxiaBuK3i8LN7ZoMO75bAvgz+w== X-Received: by 2002:a05:600c:c0d3:b0:490:b0e0:3de2 with SMTP id 5b1f17b1804b1-490c265c148mr78044605e9.33.1780726380490; Fri, 05 Jun 2026 23:13:00 -0700 (PDT) Received: from localhost ([212.73.77.104]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-4601f2eadefsm32281391f8f.11.2026.06.05.23.12.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jun 2026 23:13:00 -0700 (PDT) From: Askar Safin To: linux-fsdevel@vger.kernel.org, Christian Brauner , Alexander Viro , Jan Kara Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-api@vger.kernel.org, netdev@vger.kernel.org, fuse-devel@lists.linux.dev, ltp@lists.linux.it, Linus Torvalds , Matthew Wilcox , Jens Axboe , Christoph Hellwig , David Howells , Andrew Morton , David Hildenbrand , Pedro Falcato , Miklos Szeredi , Andy Lutomirski , Collin Funk , David Laight , Stefan Metzmacher , Steven Rostedt , The 8472 , Willy Tarreau , Joanne Koong , patches@lists.linux.dev Subject: [PATCH 5/5] vmsplice: make sure we don't wait after writing some data Date: Sat, 6 Jun 2026 06:10:31 +0000 Message-ID: <20260606061031.3744880-6-safinaskar@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260606061031.3744880-1-safinaskar@gmail.com> References: <20260606061031.3744880-1-safinaskar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make sure we don't wait for space in pipe after writing some data. This is needed for compatibility with previous version of vmsplice. Found by LTP vmsplice01. See comments in the code and links below for details. Link: https://lore.kernel.org/all/20260603-raumfahrt-unmerklich-ertrugen-c4= ecae70d5f9@brauner/ Link: https://lore.kernel.org/all/CAHk-=3DwgV-j-G3d+899Zm1pQ=3DNaJrddPz=3DG= KcL5Yw5DTUM=3DGaUw@mail.gmail.com/ Signed-off-by: Askar Safin --- fs/read_write.c | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index 77487b307..dbd0debc2 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -1221,6 +1221,8 @@ SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const st= ruct iovec __user *, vec, SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, vec, unsigned long, vlen, unsigned int, flags) { + struct pipe_inode_info *pipe; + if (unlikely(flags & ~SPLICE_F_ALL)) return -EINVAL; =20 @@ -1229,11 +1231,44 @@ SYSCALL_DEFINE4(vmsplice, int, fd, const struct iov= ec __user *, vec, return -EBADF; =20 /* We do vfs_writev/vfs_readv, so it is okay to pass "false" here */ - if (!get_pipe_info(fd_file(f), /* for_splice =3D */ false)) + pipe =3D get_pipe_info(fd_file(f), /* for_splice =3D */ false); + + if (!pipe) return -EBADF; =20 if (fd_file(f)->f_mode & FMODE_WRITE) { - ssize_t ret =3D vfs_writev(fd_file(f), vec, vlen, NULL, (flags & SPLICE_= F_NONBLOCK) ? RWF_NOWAIT : 0); + /* + * When writing to the pipe, previous implementation of vmsplice + * first waited for space in the pipe to appear + * (depending on whether SPLICE_F_NONBLOCK was passed), + * then did unconditional non-blocking write to the pipe. + * + * This differs from what pwritev2 does. + * + * For compatibility we do the same thing previous + * implementation did. + * + * We lock the pipe, do pipe_wait_for_space, then unlock + * the pipe, and then do vfs_writev. vfs_writev internally + * locks the pipe again. This may cause TOCTOU: when we + * do vfs_writev, the pipe may become full again. So we + * do a loop. + */ + + bool non_block =3D (flags & SPLICE_F_NONBLOCK) || (fd_file(f)->f_flags &= O_NONBLOCK); + ssize_t ret; + + do { + pipe_lock(pipe); + ret =3D pipe_wait_for_space(pipe, non_block); + pipe_unlock(pipe); + + if (ret < 0) + break; + + ret =3D vfs_writev(fd_file(f), vec, vlen, NULL, RWF_NOWAIT); + } while (!non_block && ret =3D=3D -EAGAIN); + if (ret > 0) add_wchar(current, ret); inc_syscw(current); --=20 2.47.3