From: Philippe Gerum <r...@xenomai.org> Since 5.6-rc3, former 32bit compatibility types for time-related structs have been renamed as follows:
compat_timeval -> old_timeval32 compat_timespec -> old_timespec32 compat_itimerspec -> old_itimerspec32 Apply the same changes to the tree, providing backward compatibility wrappers for pre-5.7 kernels. Signed-off-by: Philippe Gerum <r...@xenomai.org> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> --- include/cobalt/kernel/compat.h | 22 +++++----- .../include/asm-generic/xenomai/wrappers.h | 3 ++ kernel/cobalt/posix/compat.c | 16 +++---- kernel/cobalt/posix/syscall32.c | 42 +++++++++---------- kernel/cobalt/posix/syscall32.h | 42 +++++++++---------- kernel/drivers/ipc/rtipc.c | 4 +- 6 files changed, 66 insertions(+), 63 deletions(-) diff --git a/include/cobalt/kernel/compat.h b/include/cobalt/kernel/compat.h index d7f0008d9f..6da7bafaf8 100644 --- a/include/cobalt/kernel/compat.h +++ b/include/cobalt/kernel/compat.h @@ -29,13 +29,13 @@ struct mq_attr; struct __compat_sched_ss_param { int __sched_low_priority; - struct compat_timespec __sched_repl_period; - struct compat_timespec __sched_init_budget; + struct old_timespec32 __sched_repl_period; + struct old_timespec32 __sched_init_budget; int __sched_max_repl; }; struct __compat_sched_rr_param { - struct compat_timespec __sched_rr_quantum; + struct old_timespec32 __sched_rr_quantum; }; struct compat_sched_param_ex { @@ -56,8 +56,8 @@ struct compat_mq_attr { }; struct compat_sched_tp_window { - struct compat_timespec offset; - struct compat_timespec duration; + struct old_timespec32 offset; + struct old_timespec32 duration; int ptid; }; @@ -87,21 +87,21 @@ struct compat_rtdm_mmap_request { }; int sys32_get_timespec(struct timespec64 *ts, - const struct compat_timespec __user *cts); + const struct old_timespec32 __user *cts); -int sys32_put_timespec(struct compat_timespec __user *cts, +int sys32_put_timespec(struct old_timespec32 __user *cts, const struct timespec64 *ts); int sys32_get_itimerspec(struct itimerspec64 *its, - const struct compat_itimerspec __user *cits); + const struct old_itimerspec32 __user *cits); -int sys32_put_itimerspec(struct compat_itimerspec __user *cits, +int sys32_put_itimerspec(struct old_itimerspec32 __user *cits, const struct itimerspec64 *its); int sys32_get_timeval(struct __kernel_old_timeval *tv, - const struct compat_timeval __user *ctv); + const struct old_timeval32 __user *ctv); -int sys32_put_timeval(struct compat_timeval __user *ctv, +int sys32_put_timeval(struct old_timeval32 __user *ctv, const struct __kernel_old_timeval *tv); int sys32_get_timex(struct __kernel_timex *tx, diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h index 42cd1955ac..930e6364e5 100644 --- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h +++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h @@ -205,6 +205,9 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name, #if LINUX_VERSION_CODE < KERNEL_VERSION(5,7,0) #define pci_aer_clear_nonfatal_status pci_cleanup_aer_uncorrect_error_status +#define old_timespec32 compat_timespec +#define old_itimerspec32 compat_itimerspec +#define old_timeval32 compat_timeval #endif #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */ diff --git a/kernel/cobalt/posix/compat.c b/kernel/cobalt/posix/compat.c index 6002d74802..dbc9a9cf02 100644 --- a/kernel/cobalt/posix/compat.c +++ b/kernel/cobalt/posix/compat.c @@ -23,9 +23,9 @@ #include <xenomai/posix/mqueue.h> int sys32_get_timespec(struct timespec64 *ts, - const struct compat_timespec __user *u_cts) + const struct old_timespec32 __user *u_cts) { - struct compat_timespec cts; + struct old_timespec32 cts; if (u_cts == NULL || !access_rok(u_cts, sizeof(*u_cts))) return -EFAULT; @@ -41,10 +41,10 @@ int sys32_get_timespec(struct timespec64 *ts, } EXPORT_SYMBOL_GPL(sys32_get_timespec); -int sys32_put_timespec(struct compat_timespec __user *u_cts, +int sys32_put_timespec(struct old_timespec32 __user *u_cts, const struct timespec64 *ts) { - struct compat_timespec cts; + struct old_timespec32 cts; if (u_cts == NULL || !access_wok(u_cts, sizeof(*u_cts))) return -EFAULT; @@ -61,7 +61,7 @@ int sys32_put_timespec(struct compat_timespec __user *u_cts, EXPORT_SYMBOL_GPL(sys32_put_timespec); int sys32_get_itimerspec(struct itimerspec64 *its, - const struct compat_itimerspec __user *cits) + const struct old_itimerspec32 __user *cits) { int ret = sys32_get_timespec(&its->it_value, &cits->it_value); @@ -69,7 +69,7 @@ int sys32_get_itimerspec(struct itimerspec64 *its, } EXPORT_SYMBOL_GPL(sys32_get_itimerspec); -int sys32_put_itimerspec(struct compat_itimerspec __user *cits, +int sys32_put_itimerspec(struct old_itimerspec32 __user *cits, const struct itimerspec64 *its) { int ret = sys32_put_timespec(&cits->it_value, &its->it_value); @@ -79,7 +79,7 @@ int sys32_put_itimerspec(struct compat_itimerspec __user *cits, EXPORT_SYMBOL_GPL(sys32_put_itimerspec); int sys32_get_timeval(struct __kernel_old_timeval *tv, - const struct compat_timeval __user *ctv) + const struct old_timeval32 __user *ctv) { return (ctv == NULL || !access_rok(ctv, sizeof(*ctv)) || @@ -88,7 +88,7 @@ int sys32_get_timeval(struct __kernel_old_timeval *tv, } EXPORT_SYMBOL_GPL(sys32_get_timeval); -int sys32_put_timeval(struct compat_timeval __user *ctv, +int sys32_put_timeval(struct old_timeval32 __user *ctv, const struct __kernel_old_timeval *tv) { return (ctv == NULL || diff --git a/kernel/cobalt/posix/syscall32.c b/kernel/cobalt/posix/syscall32.c index 4f819e0e5a..57aa7251a4 100644 --- a/kernel/cobalt/posix/syscall32.c +++ b/kernel/cobalt/posix/syscall32.c @@ -124,14 +124,14 @@ COBALT_SYSCALL32emu(sem_open, lostage, COBALT_SYSCALL32emu(sem_timedwait, primary, (struct cobalt_sem_shadow __user *u_sem, - struct compat_timespec __user *u_ts)) + struct old_timespec32 __user *u_ts)) { return __cobalt_sem_timedwait(u_sem, u_ts, sys32_fetch_timeout); } COBALT_SYSCALL32emu(clock_getres, current, (clockid_t clock_id, - struct compat_timespec __user *u_ts)) + struct old_timespec32 __user *u_ts)) { struct timespec64 ts; int ret; @@ -145,7 +145,7 @@ COBALT_SYSCALL32emu(clock_getres, current, COBALT_SYSCALL32emu(clock_gettime, current, (clockid_t clock_id, - struct compat_timespec __user *u_ts)) + struct old_timespec32 __user *u_ts)) { struct timespec64 ts; int ret; @@ -159,7 +159,7 @@ COBALT_SYSCALL32emu(clock_gettime, current, COBALT_SYSCALL32emu(clock_settime, current, (clockid_t clock_id, - const struct compat_timespec __user *u_ts)) + const struct old_timespec32 __user *u_ts)) { struct timespec64 ts; int ret; @@ -190,8 +190,8 @@ COBALT_SYSCALL32emu(clock_adjtime, current, COBALT_SYSCALL32emu(clock_nanosleep, nonrestartable, (clockid_t clock_id, int flags, - const struct compat_timespec __user *u_rqt, - struct compat_timespec __user *u_rmt)) + const struct old_timespec32 __user *u_rqt, + struct old_timespec32 __user *u_rmt)) { struct timespec64 rqt, rmt, *rmtp = NULL; int ret; @@ -212,7 +212,7 @@ COBALT_SYSCALL32emu(clock_nanosleep, nonrestartable, COBALT_SYSCALL32emu(mutex_timedlock, primary, (struct cobalt_mutex_shadow __user *u_mx, - const struct compat_timespec __user *u_ts)) + const struct old_timespec32 __user *u_ts)) { return __cobalt_mutex_timedlock_break(u_mx, u_ts, sys32_fetch_timeout); } @@ -222,7 +222,7 @@ COBALT_SYSCALL32emu(cond_wait_prologue, nonrestartable, struct cobalt_mutex_shadow __user *u_mx, int *u_err, unsigned int timed, - struct compat_timespec __user *u_ts)) + struct old_timespec32 __user *u_ts)) { return __cobalt_cond_wait_prologue(u_cnd, u_mx, u_err, u_ts, timed ? sys32_fetch_timeout : NULL); @@ -261,7 +261,7 @@ COBALT_SYSCALL32emu(mq_getattr, current, COBALT_SYSCALL32emu(mq_timedsend, primary, (mqd_t uqd, const void __user *u_buf, size_t len, unsigned int prio, - const struct compat_timespec __user *u_ts)) + const struct old_timespec32 __user *u_ts)) { return __cobalt_mq_timedsend(uqd, u_buf, len, prio, u_ts, u_ts ? sys32_fetch_timeout : NULL); @@ -271,7 +271,7 @@ COBALT_SYSCALL32emu(mq_timedreceive, primary, (mqd_t uqd, void __user *u_buf, compat_ssize_t __user *u_len, unsigned int __user *u_prio, - const struct compat_timespec __user *u_ts)) + const struct old_timespec32 __user *u_ts)) { compat_ssize_t clen; ssize_t len; @@ -511,8 +511,8 @@ COBALT_SYSCALL32emu(timer_create, current, COBALT_SYSCALL32emu(timer_settime, primary, (timer_t tm, int flags, - const struct compat_itimerspec __user *u_newval, - struct compat_itimerspec __user *u_oldval)) + const struct old_itimerspec32 __user *u_newval, + struct old_itimerspec32 __user *u_oldval)) { struct itimerspec64 newv, oldv, *oldvp = &oldv; int ret; @@ -538,7 +538,7 @@ COBALT_SYSCALL32emu(timer_settime, primary, } COBALT_SYSCALL32emu(timer_gettime, current, - (timer_t tm, struct compat_itimerspec __user *u_val)) + (timer_t tm, struct old_itimerspec32 __user *u_val)) { struct itimerspec64 val; int ret; @@ -550,8 +550,8 @@ COBALT_SYSCALL32emu(timer_gettime, current, COBALT_SYSCALL32emu(timerfd_settime, primary, (int fd, int flags, - const struct compat_itimerspec __user *new_value, - struct compat_itimerspec __user *old_value)) + const struct old_itimerspec32 __user *new_value, + struct old_itimerspec32 __user *old_value)) { struct itimerspec64 ovalue, value; int ret; @@ -575,7 +575,7 @@ COBALT_SYSCALL32emu(timerfd_settime, primary, } COBALT_SYSCALL32emu(timerfd_gettime, current, - (int fd, struct compat_itimerspec __user *curr_value)) + (int fd, struct old_itimerspec32 __user *curr_value)) { struct itimerspec64 value; int ret; @@ -606,7 +606,7 @@ COBALT_SYSCALL32emu(sigwait, primary, COBALT_SYSCALL32emu(sigtimedwait, nonrestartable, (const compat_sigset_t __user *u_set, struct compat_siginfo __user *u_si, - const struct compat_timespec __user *u_timeout)) + const struct old_timespec32 __user *u_timeout)) { struct timespec64 timeout; sigset_t set; @@ -658,7 +658,7 @@ COBALT_SYSCALL32emu(sigqueue, conforming, COBALT_SYSCALL32emu(monitor_wait, nonrestartable, (struct cobalt_monitor_shadow __user *u_mon, - int event, const struct compat_timespec __user *u_ts, + int event, const struct old_timespec32 __user *u_ts, int __user *u_ret)) { struct timespec64 ts, *tsp = NULL; @@ -678,7 +678,7 @@ COBALT_SYSCALL32emu(event_wait, primary, (struct cobalt_event_shadow __user *u_event, unsigned int bits, unsigned int __user *u_bits_r, - int mode, const struct compat_timespec __user *u_ts)) + int mode, const struct old_timespec32 __user *u_ts)) { struct timespec64 ts, *tsp = NULL; int ret; @@ -698,7 +698,7 @@ COBALT_SYSCALL32emu(select, nonrestartable, compat_fd_set __user *u_rfds, compat_fd_set __user *u_wfds, compat_fd_set __user *u_xfds, - struct compat_timeval __user *u_tv)) + struct old_timeval32 __user *u_tv)) { compat_fd_set __user *ufd_sets[XNSELECT_MAX_TYPES] = { [XNSELECT_READ] = u_rfds, @@ -829,7 +829,7 @@ static int put_mmsg32(void __user **u_mmsg_p, const struct mmsghdr *mmsg) COBALT_SYSCALL32emu(recvmmsg, primary, (int ufd, struct compat_mmsghdr __user *u_msgvec, unsigned int vlen, - unsigned int flags, struct compat_timespec *u_timeout)) + unsigned int flags, struct old_timespec32 *u_timeout)) { return __rtdm_fd_recvmmsg(ufd, u_msgvec, vlen, flags, u_timeout, get_mmsg32, put_mmsg32, diff --git a/kernel/cobalt/posix/syscall32.h b/kernel/cobalt/posix/syscall32.h index 9da4052297..66cd2a5d24 100644 --- a/kernel/cobalt/posix/syscall32.h +++ b/kernel/cobalt/posix/syscall32.h @@ -53,15 +53,15 @@ COBALT_SYSCALL32emu_DECL(thread_setschedprio, COBALT_SYSCALL32emu_DECL(clock_getres, (clockid_t clock_id, - struct compat_timespec __user *u_ts)); + struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(clock_gettime, (clockid_t clock_id, - struct compat_timespec __user *u_ts)); + struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(clock_settime, (clockid_t clock_id, - const struct compat_timespec __user *u_ts)); + const struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(clock_adjtime, (clockid_t clock_id, @@ -69,19 +69,19 @@ COBALT_SYSCALL32emu_DECL(clock_adjtime, COBALT_SYSCALL32emu_DECL(clock_nanosleep, (clockid_t clock_id, int flags, - const struct compat_timespec __user *u_rqt, - struct compat_timespec __user *u_rmt)); + const struct old_timespec32 __user *u_rqt, + struct old_timespec32 __user *u_rmt)); COBALT_SYSCALL32emu_DECL(mutex_timedlock, (struct cobalt_mutex_shadow __user *u_mx, - const struct compat_timespec __user *u_ts)); + const struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(cond_wait_prologue, (struct cobalt_cond_shadow __user *u_cnd, struct cobalt_mutex_shadow __user *u_mx, int *u_err, unsigned int timed, - struct compat_timespec __user *u_ts)); + struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(mq_open, (const char __user *u_name, int oflags, @@ -93,13 +93,13 @@ COBALT_SYSCALL32emu_DECL(mq_getattr, COBALT_SYSCALL32emu_DECL(mq_timedsend, (mqd_t uqd, const void __user *u_buf, size_t len, unsigned int prio, - const struct compat_timespec __user *u_ts)); + const struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(mq_timedreceive, (mqd_t uqd, void __user *u_buf, compat_ssize_t __user *u_len, unsigned int __user *u_prio, - const struct compat_timespec __user *u_ts)); + const struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32x_DECL(mq_timedreceive, (mqd_t uqd, void __user *u_buf, @@ -143,20 +143,20 @@ COBALT_SYSCALL32emu_DECL(timer_create, COBALT_SYSCALL32emu_DECL(timer_settime, (timer_t tm, int flags, - const struct compat_itimerspec __user *u_newval, - struct compat_itimerspec __user *u_oldval)); + const struct old_itimerspec32 __user *u_newval, + struct old_itimerspec32 __user *u_oldval)); COBALT_SYSCALL32emu_DECL(timer_gettime, (timer_t tm, - struct compat_itimerspec __user *u_val)); + struct old_itimerspec32 __user *u_val)); COBALT_SYSCALL32emu_DECL(timerfd_settime, (int fd, int flags, - const struct compat_itimerspec __user *new_value, - struct compat_itimerspec __user *old_value)); + const struct old_itimerspec32 __user *new_value, + struct old_itimerspec32 __user *old_value)); COBALT_SYSCALL32emu_DECL(timerfd_gettime, - (int fd, struct compat_itimerspec __user *value)); + (int fd, struct old_itimerspec32 __user *value)); COBALT_SYSCALL32emu_DECL(sigwait, (const compat_sigset_t __user *u_set, @@ -165,7 +165,7 @@ COBALT_SYSCALL32emu_DECL(sigwait, COBALT_SYSCALL32emu_DECL(sigtimedwait, (const compat_sigset_t __user *u_set, struct compat_siginfo __user *u_si, - const struct compat_timespec __user *u_timeout)); + const struct old_timespec32 __user *u_timeout)); COBALT_SYSCALL32emu_DECL(sigwaitinfo, (const compat_sigset_t __user *u_set, @@ -180,21 +180,21 @@ COBALT_SYSCALL32emu_DECL(sigqueue, COBALT_SYSCALL32emu_DECL(monitor_wait, (struct cobalt_monitor_shadow __user *u_mon, - int event, const struct compat_timespec __user *u_ts, + int event, const struct old_timespec32 __user *u_ts, int __user *u_ret)); COBALT_SYSCALL32emu_DECL(event_wait, (struct cobalt_event_shadow __user *u_event, unsigned int bits, unsigned int __user *u_bits_r, - int mode, const struct compat_timespec __user *u_ts)); + int mode, const struct old_timespec32 __user *u_ts)); COBALT_SYSCALL32emu_DECL(select, (int nfds, compat_fd_set __user *u_rfds, compat_fd_set __user *u_wfds, compat_fd_set __user *u_xfds, - struct compat_timeval __user *u_tv)); + struct old_timeval32 __user *u_tv)); COBALT_SYSCALL32emu_DECL(recvmsg, (int fd, struct compat_msghdr __user *umsg, @@ -203,7 +203,7 @@ COBALT_SYSCALL32emu_DECL(recvmsg, COBALT_SYSCALL32emu_DECL(recvmmsg, (int fd, struct compat_mmsghdr __user *u_msgvec, unsigned int vlen, - unsigned int flags, struct compat_timespec *u_timeout)); + unsigned int flags, struct old_timespec32 *u_timeout)); COBALT_SYSCALL32emu_DECL(sendmsg, (int fd, struct compat_msghdr __user *umsg, @@ -229,6 +229,6 @@ COBALT_SYSCALL32emu_DECL(sem_open, COBALT_SYSCALL32emu_DECL(sem_timedwait, (struct cobalt_sem_shadow __user *u_sem, - struct compat_timespec __user *u_ts)); + struct old_timespec32 __user *u_ts)); #endif /* !_COBALT_POSIX_SYSCALL32_H */ diff --git a/kernel/drivers/ipc/rtipc.c b/kernel/drivers/ipc/rtipc.c index b6fafdb413..abb76817a6 100644 --- a/kernel/drivers/ipc/rtipc.c +++ b/kernel/drivers/ipc/rtipc.c @@ -273,7 +273,7 @@ int rtipc_get_timeval(struct rtdm_fd *fd, struct __kernel_old_timeval *tv, { #ifdef CONFIG_XENO_ARCH_SYS3264 if (rtdm_fd_is_compat(fd)) { - if (arglen != sizeof(struct compat_timeval)) + if (arglen != sizeof(struct old_timeval32)) return -EINVAL; return sys32_get_timeval(tv, arg); } @@ -295,7 +295,7 @@ int rtipc_put_timeval(struct rtdm_fd *fd, void *arg, { #ifdef CONFIG_XENO_ARCH_SYS3264 if (rtdm_fd_is_compat(fd)) { - if (arglen != sizeof(struct compat_timeval)) + if (arglen != sizeof(struct old_timeval32)) return -EINVAL; return sys32_put_timeval(arg, tv); } -- 2.26.2