Date: Tue, 10 Mar 2026 11:43:39 +0000 From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 522dbeb9f259 - stable/15 - sys: add renameat2(2) syscall Message-ID: <69b003eb.1bebb.51e4118c@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=522dbeb9f259ab333927685fb7ecda41ffd96b77 commit 522dbeb9f259ab333927685fb7ecda41ffd96b77 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2026-02-26 18:33:33 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2026-03-10 11:41:31 +0000 sys: add renameat2(2) syscall (cherry picked from commit 28599a1e5f1b90676a818e0a4818cddd0839ad25) --- 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 d711f21bee4d..6856a0907d48 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -3413,5 +3413,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 59bdedf184c6..fdd215f1c9f9 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?69b003eb.1bebb.51e4118c>
