Date: Sat, 06 Jun 2026 03:29:09 +0000 From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 5d0ebfe1d978 - main - renameat(2): when retrying, check for pending signals Message-ID: <6a239405.45c53.5dc6dad9@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5d0ebfe1d97801518755c7025f57ba7d5bf1c8db commit 5d0ebfe1d97801518755c7025f57ba7d5bf1c8db Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2026-06-04 17:53:26 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-06-06 03:28:28 +0000 renameat(2): when retrying, check for pending signals The vn_start_write() call there is already interruptible. Check for user signals before restarting due to ERELOOKUP, or after failed vn_start_write(). Note that vn_start_write(V_XSLEEP | V_PCATCH) does not check for signals if not sleeping. PR: 295826 Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D57453 --- sys/kern/vfs_syscalls.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 0c4eeb584d41..71d37e08c65b 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3855,6 +3855,9 @@ again1: vfs_rel(tmp); tmp = NULL; } + error = sig_intr(); + if (error != 0) + return (error); error = vn_start_write(NULL, &mp, V_XSLEEP | V_PCATCH); if (error != 0) return (error); @@ -3937,8 +3940,11 @@ out: out1: if (error == ERESTART) return (0); - if (error == ERELOOKUP) - goto again; + if (error == ERELOOKUP) { + error = sig_intr(); + if (error == 0) + goto again; + } return (error); }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a239405.45c53.5dc6dad9>
