Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 Mar 2026 23:48:19 +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: 28599a1e5f1b - main - sys: add renameat2(2) syscall
Message-ID:  <69aa1643.3e9fb.6b909ea5@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=28599a1e5f1b90676a818e0a4818cddd0839ad25

commit 28599a1e5f1b90676a818e0a4818cddd0839ad25
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-26 18:33:33 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-03-05 23:46:53 +0000

    sys: add renameat2(2) syscall
    
    Reviewed by:    markj
    Tested by:      pho
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D55539
---
 include/stdio.h           |  1 +
 lib/libsys/Symbol.sys.map |  1 +
 sys/kern/syscalls.master  | 10 +++++++++-
 sys/kern/vfs_syscalls.c   | 10 ++++++++++
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/include/stdio.h b/include/stdio.h
index 34e877b60c14..753c7f3df03f 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -398,6 +398,7 @@ int	 fdclose(FILE *, int *);
 char	*fgetln(FILE *, size_t *);
 const char *fmtcheck(const char *, const char *) __format_arg(2);
 int	 fpurge(FILE *);
+int	 renameat2(int, const char *, int, const char *, unsigned int);
 void	 setbuffer(FILE *, char *, int);
 int	 setlinebuf(FILE *);
 int	 vasprintf(char **, const char *, __va_list)
diff --git a/lib/libsys/Symbol.sys.map b/lib/libsys/Symbol.sys.map
index 46767f5b6a4d..7f5c252af91b 100644
--- a/lib/libsys/Symbol.sys.map
+++ b/lib/libsys/Symbol.sys.map
@@ -393,6 +393,7 @@ FBSD_1.8 {
 FBSD_1.9 {
 	pdrfork;
 	pdrfork_thread;
+	renameat2;
 };
 
 FBSDprivate_1.0 {
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
index 8a30e5931a0e..b3e1d4be9fee 100644
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -3420,5 +3420,13 @@
 		    _Out_opt_ _Contains_long_ptr_ struct __siginfo *info
 		);
 	}
-
+602	AUE_RENAMEAT	STD|CAPENABLED {
+		int renameat2(
+		    int oldfd,
+		    _In_z_ const char *old,
+		    int newfd,
+		    _In_z_ const char *new,
+		    int flags
+		);
+	}
 ; vim: syntax=off
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 4409b0295587..20780334a6b5 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -3739,6 +3739,14 @@ sys_renameat(struct thread *td, struct renameat_args *uap)
 	    UIO_USERSPACE, 0));
 }
 
+int
+sys_renameat2(struct thread *td, struct renameat2_args *uap)
+{
+
+	return (kern_renameat(td, uap->oldfd, uap->old, uap->newfd, uap->new,
+	    UIO_USERSPACE, uap->flags));
+}
+
 #ifdef MAC
 static int
 kern_renameat_mac(struct thread *td, int oldfd, const char *old, int newfd,
@@ -3775,6 +3783,8 @@ kern_renameat(struct thread *td, int oldfd, const char *old, int newfd,
 	int error;
 	short irflag;
 
+	if (flags != 0)
+		return (EINVAL);
 again:
 	tmp = mp = NULL;
 	bwillwrite();


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69aa1643.3e9fb.6b909ea5>