svn commit: r316297 - in stable/11/sys: amd64/linux amd64/linux32 compat/linux i386/linux
Dmitry Chagin
dchagin at FreeBSD.org
Thu Mar 30 20:08:27 UTC 2017
Author: dchagin
Date: Thu Mar 30 20:08:25 2017
New Revision: 316297
URL: https://svnweb.freebsd.org/changeset/base/316297
Log:
MFC r314312:
Change Linux epoll_pwait syscall definition to match Linux actual one.
MFC r314313:
Regen for r314312 (Linux epoll_pwait).
MFC r314314:
Return EINVAL in case when an invalid size of signal mask specified.
Modified:
stable/11/sys/amd64/linux/linux_proto.h
stable/11/sys/amd64/linux/linux_systrace_args.c
stable/11/sys/amd64/linux/syscalls.master
stable/11/sys/amd64/linux32/linux32_proto.h
stable/11/sys/amd64/linux32/linux32_systrace_args.c
stable/11/sys/amd64/linux32/syscalls.master
stable/11/sys/compat/linux/linux_event.c
stable/11/sys/i386/linux/linux_proto.h
stable/11/sys/i386/linux/linux_systrace_args.c
stable/11/sys/i386/linux/syscalls.master
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/amd64/linux/linux_proto.h
==============================================================================
--- stable/11/sys/amd64/linux/linux_proto.h Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux/linux_proto.h Thu Mar 30 20:08:25 2017 (r316297)
@@ -996,6 +996,7 @@ struct linux_epoll_pwait_args {
char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)];
char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)];
char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)];
+ char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
};
struct linux_signalfd_args {
register_t dummy;
Modified: stable/11/sys/amd64/linux/linux_systrace_args.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_systrace_args.c Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux/linux_systrace_args.c Thu Mar 30 20:08:25 2017 (r316297)
@@ -2068,7 +2068,8 @@ systrace_args(int sysnum, void *params,
iarg[2] = p->maxevents; /* l_int */
iarg[3] = p->timeout; /* l_int */
uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */
- *n_args = 5;
+ iarg[5] = p->sigsetsize; /* l_size_t */
+ *n_args = 6;
break;
}
/* linux_signalfd */
@@ -5646,6 +5647,9 @@ systrace_entry_setargdesc(int sysnum, in
case 4:
p = "l_sigset_t *";
break;
+ case 5:
+ p = "l_size_t";
+ break;
default:
break;
};
Modified: stable/11/sys/amd64/linux/syscalls.master
==============================================================================
--- stable/11/sys/amd64/linux/syscalls.master Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux/syscalls.master Thu Mar 30 20:08:25 2017 (r316297)
@@ -473,7 +473,8 @@
280 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \
const struct l_timespec *times, l_int flags); }
281 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \
- l_int maxevents, l_int timeout, l_sigset_t *mask); }
+ l_int maxevents, l_int timeout, l_sigset_t *mask, \
+ l_size_t sigsetsize); }
282 AUE_NULL STD { int linux_signalfd(void); }
283 AUE_NULL STD { int linux_timerfd_create(l_int clockid, l_int flags); }
284 AUE_NULL STD { int linux_eventfd(l_uint initval); }
Modified: stable/11/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_proto.h Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux32/linux32_proto.h Thu Mar 30 20:08:25 2017 (r316297)
@@ -1052,6 +1052,7 @@ struct linux_epoll_pwait_args {
char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)];
char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)];
char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)];
+ char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
};
struct linux_utimensat_args {
char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
Modified: stable/11/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_systrace_args.c Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux32/linux32_systrace_args.c Thu Mar 30 20:08:25 2017 (r316297)
@@ -2169,7 +2169,8 @@ systrace_args(int sysnum, void *params,
iarg[2] = p->maxevents; /* l_int */
iarg[3] = p->timeout; /* l_int */
uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */
- *n_args = 5;
+ iarg[5] = p->sigsetsize; /* l_size_t */
+ *n_args = 6;
break;
}
/* linux_utimensat */
@@ -5981,6 +5982,9 @@ systrace_entry_setargdesc(int sysnum, in
case 4:
p = "l_sigset_t *";
break;
+ case 5:
+ p = "l_size_t";
+ break;
default:
break;
};
Modified: stable/11/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/11/sys/amd64/linux32/syscalls.master Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/amd64/linux32/syscalls.master Thu Mar 30 20:08:25 2017 (r316297)
@@ -533,7 +533,8 @@
; linux 2.6.19:
318 AUE_NULL STD { int linux_getcpu(void); }
319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \
- l_int maxevents, l_int timeout, l_sigset_t *mask); }
+ l_int maxevents, l_int timeout, l_sigset_t *mask, \
+ l_size_t sigsetsize); }
; linux 2.6.22:
320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \
const struct l_timespec *times, l_int flags); }
Modified: stable/11/sys/compat/linux/linux_event.c
==============================================================================
--- stable/11/sys/compat/linux/linux_event.c Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/compat/linux/linux_event.c Thu Mar 30 20:08:25 2017 (r316297)
@@ -622,6 +622,8 @@ linux_epoll_pwait(struct thread *td, str
int error;
if (args->mask != NULL) {
+ if (args->sigsetsize != sizeof(l_sigset_t))
+ return (EINVAL);
error = copyin(args->mask, &lmask, sizeof(l_sigset_t));
if (error != 0)
return (error);
Modified: stable/11/sys/i386/linux/linux_proto.h
==============================================================================
--- stable/11/sys/i386/linux/linux_proto.h Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/i386/linux/linux_proto.h Thu Mar 30 20:08:25 2017 (r316297)
@@ -1070,6 +1070,7 @@ struct linux_epoll_pwait_args {
char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)];
char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)];
char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)];
+ char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)];
};
struct linux_utimensat_args {
char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)];
Modified: stable/11/sys/i386/linux/linux_systrace_args.c
==============================================================================
--- stable/11/sys/i386/linux/linux_systrace_args.c Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/i386/linux/linux_systrace_args.c Thu Mar 30 20:08:25 2017 (r316297)
@@ -2245,7 +2245,8 @@ systrace_args(int sysnum, void *params,
iarg[2] = p->maxevents; /* l_int */
iarg[3] = p->timeout; /* l_int */
uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */
- *n_args = 5;
+ iarg[5] = p->sigsetsize; /* l_size_t */
+ *n_args = 6;
break;
}
/* linux_utimensat */
@@ -6212,6 +6213,9 @@ systrace_entry_setargdesc(int sysnum, in
case 4:
p = "l_sigset_t *";
break;
+ case 5:
+ p = "l_size_t";
+ break;
default:
break;
};
Modified: stable/11/sys/i386/linux/syscalls.master
==============================================================================
--- stable/11/sys/i386/linux/syscalls.master Thu Mar 30 20:05:16 2017 (r316296)
+++ stable/11/sys/i386/linux/syscalls.master Thu Mar 30 20:08:25 2017 (r316297)
@@ -541,7 +541,8 @@
; linux 2.6.19:
318 AUE_NULL STD { int linux_getcpu(void); }
319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \
- l_int maxevents, l_int timeout, l_sigset_t *mask); }
+ l_int maxevents, l_int timeout, l_sigset_t *mask, \
+ l_size_t sigsetsize); }
; linux 2.6.22:
320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \
const struct l_timespec *times, l_int flags); }
More information about the svn-src-stable-11
mailing list