svn commit: r364514 - in stable/12/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux

Edward Tomasz Napierala trasz at FreeBSD.org
Sun Aug 23 19:44:36 UTC 2020


Author: trasz
Date: Sun Aug 23 19:44:29 2020
New Revision: 364514
URL: https://svnweb.freebsd.org/changeset/base/364514

Log:
  MFC r352210 by emaste:
  
  linux: add trivial renameat2 implementation
  
  Just return EINVAL if flags != 0.  The Linux man page documents one
  case of EINVAL as "The filesystem does not support one of the flags in
  flags."
  
  After r351723 userland binaries will try using new system calls.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  stable/12/sys/amd64/linux/linux_dummy.c
  stable/12/sys/amd64/linux32/linux32_dummy.c
  stable/12/sys/arm64/linux/linux_dummy.c
  stable/12/sys/compat/linux/linux_file.c
  stable/12/sys/i386/linux/linux_dummy.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/amd64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux/linux_dummy.c	Sun Aug 23 19:43:47 2020	(r364513)
+++ stable/12/sys/amd64/linux/linux_dummy.c	Sun Aug 23 19:44:29 2020	(r364514)
@@ -129,8 +129,6 @@ DUMMY(kcmp);
 DUMMY(finit_module);
 DUMMY(sched_setattr);
 DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
 /* Linux 3.15: */
 DUMMY(seccomp);
 DUMMY(memfd_create);

Modified: stable/12/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/12/sys/amd64/linux32/linux32_dummy.c	Sun Aug 23 19:43:47 2020	(r364513)
+++ stable/12/sys/amd64/linux32/linux32_dummy.c	Sun Aug 23 19:44:29 2020	(r364514)
@@ -136,8 +136,6 @@ DUMMY(kcmp);
 DUMMY(finit_module);
 DUMMY(sched_setattr);
 DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
 /* Linux 3.15: */
 DUMMY(seccomp);
 DUMMY(memfd_create);

Modified: stable/12/sys/arm64/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/arm64/linux/linux_dummy.c	Sun Aug 23 19:43:47 2020	(r364513)
+++ stable/12/sys/arm64/linux/linux_dummy.c	Sun Aug 23 19:44:29 2020	(r364514)
@@ -129,8 +129,6 @@ DUMMY(kcmp);
 DUMMY(finit_module);
 DUMMY(sched_setattr);
 DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
 /* Linux 3.15: */
 DUMMY(seccomp);
 DUMMY(memfd_create);

Modified: stable/12/sys/compat/linux/linux_file.c
==============================================================================
--- stable/12/sys/compat/linux/linux_file.c	Sun Aug 23 19:43:47 2020	(r364513)
+++ stable/12/sys/compat/linux/linux_file.c	Sun Aug 23 19:44:29 2020	(r364514)
@@ -774,8 +774,28 @@ linux_rename(struct thread *td, struct linux_rename_ar
 int
 linux_renameat(struct thread *td, struct linux_renameat_args *args)
 {
+	struct linux_renameat2_args renameat2_args = {
+	    .olddfd = args->olddfd,
+	    .oldname = args->oldname,
+	    .newdfd = args->newdfd,
+	    .newname = args->newname,
+	    .flags = 0
+	};
+
+	return (linux_renameat2(td, &renameat2_args));
+}
+
+int
+linux_renameat2(struct thread *td, struct linux_renameat2_args *args)
+{
 	char *from, *to;
 	int error, olddfd, newdfd;
+
+	if (args->flags != 0) {
+		linux_msg(td, "renameat2 unsupported flags 0x%x\n",
+		    args->flags);
+		return (EINVAL);
+	}
 
 	olddfd = (args->olddfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->olddfd;
 	newdfd = (args->newdfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->newdfd;

Modified: stable/12/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/12/sys/i386/linux/linux_dummy.c	Sun Aug 23 19:43:47 2020	(r364513)
+++ stable/12/sys/i386/linux/linux_dummy.c	Sun Aug 23 19:44:29 2020	(r364514)
@@ -133,8 +133,6 @@ DUMMY(finit_module);
 DUMMY(sched_setattr);
 DUMMY(sched_getattr);
 /* Linux 3.14: */
-DUMMY(renameat2);
-/* Linux 3.15: */
 DUMMY(seccomp);
 DUMMY(memfd_create);
 /* Linux 3.18: */


More information about the svn-src-stable-12 mailing list