Page MenuHomeFreeBSD

D21590.id61900.diff
No OneTemporary

D21590.id61900.diff

Index: sys/amd64/linux/linux_dummy.c
===================================================================
--- sys/amd64/linux/linux_dummy.c
+++ sys/amd64/linux/linux_dummy.c
@@ -130,8 +130,6 @@
DUMMY(finit_module);
DUMMY(sched_setattr);
DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
/* Linux 3.15: */
DUMMY(seccomp);
DUMMY(memfd_create);
Index: sys/amd64/linux/linux_proto.h
===================================================================
--- sys/amd64/linux/linux_proto.h
+++ sys/amd64/linux/linux_proto.h
@@ -1125,9 +1125,9 @@
char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
};
struct linux_renameat2_args {
- char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)];
+ char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)];
char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)];
- char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)];
+ char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)];
char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)];
char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
};
Index: sys/amd64/linux/linux_systrace_args.c
===================================================================
--- sys/amd64/linux/linux_systrace_args.c
+++ sys/amd64/linux/linux_systrace_args.c
@@ -2297,9 +2297,9 @@
/* linux_renameat2 */
case 316: {
struct linux_renameat2_args *p = params;
- iarg[0] = p->oldfd; /* l_int */
+ iarg[0] = p->olddfd; /* l_int */
uarg[1] = (intptr_t) p->oldname; /* const char * */
- iarg[2] = p->newfd; /* l_int */
+ iarg[2] = p->newdfd; /* l_int */
uarg[3] = (intptr_t) p->newname; /* const char * */
uarg[4] = p->flags; /* unsigned int */
*n_args = 5;
Index: sys/amd64/linux/syscalls.master
===================================================================
--- sys/amd64/linux/syscalls.master
+++ sys/amd64/linux/syscalls.master
@@ -550,8 +550,8 @@
315 AUE_NULL STD { int linux_sched_getattr(l_pid_t pid, \
void *attr, l_uint size, l_uint flags); }
; Linux 3.15:
-316 AUE_NULL STD { int linux_renameat2(l_int oldfd, \
- const char *oldname, l_int newfd, \
+316 AUE_NULL STD { int linux_renameat2(l_int olddfd, \
+ const char *oldname, l_int newdfd, \
const char *newname, unsigned int flags); }
; Linux 3.17:
317 AUE_NULL STD { int linux_seccomp(l_uint op, l_uint flags, \
Index: sys/amd64/linux32/linux32_dummy.c
===================================================================
--- sys/amd64/linux32/linux32_dummy.c
+++ sys/amd64/linux32/linux32_dummy.c
@@ -137,8 +137,6 @@
DUMMY(finit_module);
DUMMY(sched_setattr);
DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
/* Linux 3.15: */
DUMMY(seccomp);
DUMMY(memfd_create);
Index: sys/amd64/linux32/linux32_proto.h
===================================================================
--- sys/amd64/linux32/linux32_proto.h
+++ sys/amd64/linux32/linux32_proto.h
@@ -1199,9 +1199,9 @@
char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
};
struct linux_renameat2_args {
- char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)];
+ char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)];
char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)];
- char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)];
+ char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)];
char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)];
char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
};
Index: sys/amd64/linux32/linux32_systrace_args.c
===================================================================
--- sys/amd64/linux32/linux32_systrace_args.c
+++ sys/amd64/linux32/linux32_systrace_args.c
@@ -2424,9 +2424,9 @@
/* linux_renameat2 */
case 353: {
struct linux_renameat2_args *p = params;
- iarg[0] = p->oldfd; /* l_int */
+ iarg[0] = p->olddfd; /* l_int */
uarg[1] = (intptr_t) p->oldname; /* const char * */
- iarg[2] = p->newfd; /* l_int */
+ iarg[2] = p->newdfd; /* l_int */
uarg[3] = (intptr_t) p->newname; /* const char * */
uarg[4] = p->flags; /* unsigned int */
*n_args = 5;
Index: sys/amd64/linux32/syscalls.master
===================================================================
--- sys/amd64/linux32/syscalls.master
+++ sys/amd64/linux32/syscalls.master
@@ -610,8 +610,8 @@
352 AUE_NULL STD { int linux_sched_getattr(l_pid_t pid, \
void *attr, l_uint size, l_uint flags); }
; Linux 3.15:
-353 AUE_NULL STD { int linux_renameat2(l_int oldfd, \
- const char *oldname, l_int newfd, \
+353 AUE_NULL STD { int linux_renameat2(l_int olddfd, \
+ const char *oldname, l_int newdfd, \
const char *newname, unsigned int flags); }
; Linux 3.17:
354 AUE_NULL STD { int linux_seccomp(l_uint op, l_uint flags, \
Index: sys/arm64/linux/linux_dummy.c
===================================================================
--- sys/arm64/linux/linux_dummy.c
+++ sys/arm64/linux/linux_dummy.c
@@ -130,8 +130,6 @@
DUMMY(finit_module);
DUMMY(sched_setattr);
DUMMY(sched_getattr);
-/* Linux 3.14: */
-DUMMY(renameat2);
/* Linux 3.15: */
DUMMY(seccomp);
DUMMY(memfd_create);
Index: sys/arm64/linux/linux_proto.h
===================================================================
--- sys/arm64/linux/linux_proto.h
+++ sys/arm64/linux/linux_proto.h
@@ -971,9 +971,9 @@
char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
};
struct linux_renameat2_args {
- char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)];
+ char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)];
char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)];
- char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)];
+ char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)];
char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)];
char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
};
Index: sys/arm64/linux/linux_systrace_args.c
===================================================================
--- sys/arm64/linux/linux_systrace_args.c
+++ sys/arm64/linux/linux_systrace_args.c
@@ -1972,9 +1972,9 @@
/* linux_renameat2 */
case 276: {
struct linux_renameat2_args *p = params;
- iarg[0] = p->oldfd; /* l_int */
+ iarg[0] = p->olddfd; /* l_int */
uarg[1] = (intptr_t) p->oldname; /* const char * */
- iarg[2] = p->newfd; /* l_int */
+ iarg[2] = p->newdfd; /* l_int */
uarg[3] = (intptr_t) p->newname; /* const char * */
uarg[4] = p->flags; /* unsigned int */
*n_args = 5;
Index: sys/arm64/linux/syscalls.master
===================================================================
--- sys/arm64/linux/syscalls.master
+++ sys/arm64/linux/syscalls.master
@@ -1459,9 +1459,9 @@
}
276 AUE_NULL STD {
int linux_renameat2(
- l_int oldfd,
+ l_int olddfd,
const char *oldname,
- l_int newfd,
+ l_int newdfd,
const char *newname,
unsigned int flags
);
Index: sys/compat/linux/linux_file.c
===================================================================
--- sys/compat/linux/linux_file.c
+++ sys/compat/linux/linux_file.c
@@ -685,10 +685,30 @@
int
linux_renameat(struct thread *td, struct linux_renameat_args *args)
+{
+ struct linux_renameat2_args renameat2_args;
+
+ renameat2_args.olddfd = args->olddfd;
+ renameat2_args.oldname = args->oldname;
+ renameat2_args.newdfd = args->newdfd;
+ renameat2_args.newname = args->newname;
+ renameat2_args.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;
LCONVPATHEXIST_AT(td, args->oldname, &from, olddfd);
Index: sys/i386/linux/linux_dummy.c
===================================================================
--- sys/i386/linux/linux_dummy.c
+++ sys/i386/linux/linux_dummy.c
@@ -134,8 +134,6 @@
DUMMY(sched_setattr);
DUMMY(sched_getattr);
/* Linux 3.14: */
-DUMMY(renameat2);
-/* Linux 3.15: */
DUMMY(seccomp);
DUMMY(memfd_create);
/* Linux 3.18: */
Index: sys/i386/linux/linux_proto.h
===================================================================
--- sys/i386/linux/linux_proto.h
+++ sys/i386/linux/linux_proto.h
@@ -1217,9 +1217,9 @@
char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
};
struct linux_renameat2_args {
- char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)];
+ char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)];
char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)];
- char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)];
+ char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)];
char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)];
char flags_l_[PADL_(unsigned int)]; unsigned int flags; char flags_r_[PADR_(unsigned int)];
};
Index: sys/i386/linux/linux_systrace_args.c
===================================================================
--- sys/i386/linux/linux_systrace_args.c
+++ sys/i386/linux/linux_systrace_args.c
@@ -2500,9 +2500,9 @@
/* linux_renameat2 */
case 353: {
struct linux_renameat2_args *p = params;
- iarg[0] = p->oldfd; /* l_int */
+ iarg[0] = p->olddfd; /* l_int */
uarg[1] = (intptr_t) p->oldname; /* const char * */
- iarg[2] = p->newfd; /* l_int */
+ iarg[2] = p->newdfd; /* l_int */
uarg[3] = (intptr_t) p->newname; /* const char * */
uarg[4] = p->flags; /* unsigned int */
*n_args = 5;
Index: sys/i386/linux/syscalls.master
===================================================================
--- sys/i386/linux/syscalls.master
+++ sys/i386/linux/syscalls.master
@@ -619,8 +619,8 @@
352 AUE_NULL STD { int linux_sched_getattr(l_pid_t pid, \
void *attr, l_uint size, l_uint flags); }
; Linux 3.15:
-353 AUE_NULL STD { int linux_renameat2(l_int oldfd, \
- const char *oldname, l_int newfd, \
+353 AUE_NULL STD { int linux_renameat2(l_int olddfd, \
+ const char *oldname, l_int newdfd, \
const char *newname, unsigned int flags); }
; Linux 3.17:
354 AUE_NULL STD { int linux_seccomp(l_uint op, l_uint flags, \

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 23, 3:13 AM (6 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24079965
Default Alt Text
D21590.id61900.diff (10 KB)

Event Timeline