diff options
36 files changed, 237 insertions, 245 deletions
diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h index 1a037b94eba1..4a89007db14a 100644 --- a/arch/arm64/include/asm/compat.h +++ b/arch/arm64/include/asm/compat.h | |||
@@ -86,11 +86,11 @@ struct compat_stat { | |||
86 | compat_off_t st_size; | 86 | compat_off_t st_size; |
87 | compat_off_t st_blksize; | 87 | compat_off_t st_blksize; |
88 | compat_off_t st_blocks; | 88 | compat_off_t st_blocks; |
89 | compat_time_t st_atime; | 89 | old_time32_t st_atime; |
90 | compat_ulong_t st_atime_nsec; | 90 | compat_ulong_t st_atime_nsec; |
91 | compat_time_t st_mtime; | 91 | old_time32_t st_mtime; |
92 | compat_ulong_t st_mtime_nsec; | 92 | compat_ulong_t st_mtime_nsec; |
93 | compat_time_t st_ctime; | 93 | old_time32_t st_ctime; |
94 | compat_ulong_t st_ctime_nsec; | 94 | compat_ulong_t st_ctime_nsec; |
95 | compat_ulong_t __unused4[2]; | 95 | compat_ulong_t __unused4[2]; |
96 | }; | 96 | }; |
diff --git a/arch/arm64/include/asm/stat.h b/arch/arm64/include/asm/stat.h index eab738019707..397c6ccd04e7 100644 --- a/arch/arm64/include/asm/stat.h +++ b/arch/arm64/include/asm/stat.h | |||
@@ -20,7 +20,7 @@ | |||
20 | 20 | ||
21 | #ifdef CONFIG_COMPAT | 21 | #ifdef CONFIG_COMPAT |
22 | 22 | ||
23 | #include <linux/compat_time.h> | 23 | #include <linux/time.h> |
24 | #include <asm/compat.h> | 24 | #include <asm/compat.h> |
25 | 25 | ||
26 | /* | 26 | /* |
diff --git a/arch/mips/include/asm/compat.h b/arch/mips/include/asm/compat.h index 78675f19440f..7dcbd855814e 100644 --- a/arch/mips/include/asm/compat.h +++ b/arch/mips/include/asm/compat.h | |||
@@ -59,11 +59,11 @@ struct compat_stat { | |||
59 | s32 st_pad2[2]; | 59 | s32 st_pad2[2]; |
60 | compat_off_t st_size; | 60 | compat_off_t st_size; |
61 | s32 st_pad3; | 61 | s32 st_pad3; |
62 | compat_time_t st_atime; | 62 | old_time32_t st_atime; |
63 | s32 st_atime_nsec; | 63 | s32 st_atime_nsec; |
64 | compat_time_t st_mtime; | 64 | old_time32_t st_mtime; |
65 | s32 st_mtime_nsec; | 65 | s32 st_mtime_nsec; |
66 | compat_time_t st_ctime; | 66 | old_time32_t st_ctime; |
67 | s32 st_ctime_nsec; | 67 | s32 st_ctime_nsec; |
68 | s32 st_blksize; | 68 | s32 st_blksize; |
69 | s32 st_blocks; | 69 | s32 st_blocks; |
diff --git a/arch/mips/kernel/binfmt_elfn32.c b/arch/mips/kernel/binfmt_elfn32.c index 89b234844534..7a12763d553a 100644 --- a/arch/mips/kernel/binfmt_elfn32.c +++ b/arch/mips/kernel/binfmt_elfn32.c | |||
@@ -54,10 +54,10 @@ struct elf_prstatus32 | |||
54 | pid_t pr_ppid; | 54 | pid_t pr_ppid; |
55 | pid_t pr_pgrp; | 55 | pid_t pr_pgrp; |
56 | pid_t pr_sid; | 56 | pid_t pr_sid; |
57 | struct compat_timeval pr_utime; /* User time */ | 57 | struct old_timeval32 pr_utime; /* User time */ |
58 | struct compat_timeval pr_stime; /* System time */ | 58 | struct old_timeval32 pr_stime; /* System time */ |
59 | struct compat_timeval pr_cutime;/* Cumulative user time */ | 59 | struct old_timeval32 pr_cutime;/* Cumulative user time */ |
60 | struct compat_timeval pr_cstime;/* Cumulative system time */ | 60 | struct old_timeval32 pr_cstime;/* Cumulative system time */ |
61 | elf_gregset_t pr_reg; /* GP registers */ | 61 | elf_gregset_t pr_reg; /* GP registers */ |
62 | int pr_fpvalid; /* True if math co-processor being used. */ | 62 | int pr_fpvalid; /* True if math co-processor being used. */ |
63 | }; | 63 | }; |
@@ -81,9 +81,9 @@ struct elf_prpsinfo32 | |||
81 | #define elf_caddr_t u32 | 81 | #define elf_caddr_t u32 |
82 | #define init_elf_binfmt init_elfn32_binfmt | 82 | #define init_elf_binfmt init_elfn32_binfmt |
83 | 83 | ||
84 | #define jiffies_to_timeval jiffies_to_compat_timeval | 84 | #define jiffies_to_timeval jiffies_to_old_timeval32 |
85 | static __inline__ void | 85 | static __inline__ void |
86 | jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) | 86 | jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value) |
87 | { | 87 | { |
88 | /* | 88 | /* |
89 | * Convert jiffies to nanoseconds and separate with | 89 | * Convert jiffies to nanoseconds and separate with |
@@ -101,6 +101,6 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) | |||
101 | #define TASK_SIZE TASK_SIZE32 | 101 | #define TASK_SIZE TASK_SIZE32 |
102 | 102 | ||
103 | #undef ns_to_timeval | 103 | #undef ns_to_timeval |
104 | #define ns_to_timeval ns_to_compat_timeval | 104 | #define ns_to_timeval ns_to_old_timeval32 |
105 | 105 | ||
106 | #include "../../../fs/binfmt_elf.c" | 106 | #include "../../../fs/binfmt_elf.c" |
diff --git a/arch/mips/kernel/binfmt_elfo32.c b/arch/mips/kernel/binfmt_elfo32.c index a88c59db3d48..e6db06a1d31a 100644 --- a/arch/mips/kernel/binfmt_elfo32.c +++ b/arch/mips/kernel/binfmt_elfo32.c | |||
@@ -59,10 +59,10 @@ struct elf_prstatus32 | |||
59 | pid_t pr_ppid; | 59 | pid_t pr_ppid; |
60 | pid_t pr_pgrp; | 60 | pid_t pr_pgrp; |
61 | pid_t pr_sid; | 61 | pid_t pr_sid; |
62 | struct compat_timeval pr_utime; /* User time */ | 62 | struct old_timeval32 pr_utime; /* User time */ |
63 | struct compat_timeval pr_stime; /* System time */ | 63 | struct old_timeval32 pr_stime; /* System time */ |
64 | struct compat_timeval pr_cutime;/* Cumulative user time */ | 64 | struct old_timeval32 pr_cutime;/* Cumulative user time */ |
65 | struct compat_timeval pr_cstime;/* Cumulative system time */ | 65 | struct old_timeval32 pr_cstime;/* Cumulative system time */ |
66 | elf_gregset_t pr_reg; /* GP registers */ | 66 | elf_gregset_t pr_reg; /* GP registers */ |
67 | int pr_fpvalid; /* True if math co-processor being used. */ | 67 | int pr_fpvalid; /* True if math co-processor being used. */ |
68 | }; | 68 | }; |
@@ -86,9 +86,9 @@ struct elf_prpsinfo32 | |||
86 | #define elf_caddr_t u32 | 86 | #define elf_caddr_t u32 |
87 | #define init_elf_binfmt init_elf32_binfmt | 87 | #define init_elf_binfmt init_elf32_binfmt |
88 | 88 | ||
89 | #define jiffies_to_timeval jiffies_to_compat_timeval | 89 | #define jiffies_to_timeval jiffies_to_old_timeval32 |
90 | static inline void | 90 | static inline void |
91 | jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) | 91 | jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value) |
92 | { | 92 | { |
93 | /* | 93 | /* |
94 | * Convert jiffies to nanoseconds and separate with | 94 | * Convert jiffies to nanoseconds and separate with |
@@ -104,6 +104,6 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value) | |||
104 | #define TASK_SIZE TASK_SIZE32 | 104 | #define TASK_SIZE TASK_SIZE32 |
105 | 105 | ||
106 | #undef ns_to_timeval | 106 | #undef ns_to_timeval |
107 | #define ns_to_timeval ns_to_compat_timeval | 107 | #define ns_to_timeval ns_to_old_timeval32 |
108 | 108 | ||
109 | #include "../../../fs/binfmt_elf.c" | 109 | #include "../../../fs/binfmt_elf.c" |
diff --git a/arch/parisc/include/asm/compat.h b/arch/parisc/include/asm/compat.h index ab8a54771507..32dadaf2b534 100644 --- a/arch/parisc/include/asm/compat.h +++ b/arch/parisc/include/asm/compat.h | |||
@@ -48,11 +48,11 @@ struct compat_stat { | |||
48 | u16 st_reserved2; /* old st_gid */ | 48 | u16 st_reserved2; /* old st_gid */ |
49 | compat_dev_t st_rdev; | 49 | compat_dev_t st_rdev; |
50 | compat_off_t st_size; | 50 | compat_off_t st_size; |
51 | compat_time_t st_atime; | 51 | old_time32_t st_atime; |
52 | u32 st_atime_nsec; | 52 | u32 st_atime_nsec; |
53 | compat_time_t st_mtime; | 53 | old_time32_t st_mtime; |
54 | u32 st_mtime_nsec; | 54 | u32 st_mtime_nsec; |
55 | compat_time_t st_ctime; | 55 | old_time32_t st_ctime; |
56 | u32 st_ctime_nsec; | 56 | u32 st_ctime_nsec; |
57 | s32 st_blksize; | 57 | s32 st_blksize; |
58 | s32 st_blocks; | 58 | s32 st_blocks; |
diff --git a/arch/powerpc/include/asm/compat.h b/arch/powerpc/include/asm/compat.h index 85c8af2bb272..93f79d1a03c3 100644 --- a/arch/powerpc/include/asm/compat.h +++ b/arch/powerpc/include/asm/compat.h | |||
@@ -55,11 +55,11 @@ struct compat_stat { | |||
55 | compat_off_t st_size; | 55 | compat_off_t st_size; |
56 | compat_off_t st_blksize; | 56 | compat_off_t st_blksize; |
57 | compat_off_t st_blocks; | 57 | compat_off_t st_blocks; |
58 | compat_time_t st_atime; | 58 | old_time32_t st_atime; |
59 | u32 st_atime_nsec; | 59 | u32 st_atime_nsec; |
60 | compat_time_t st_mtime; | 60 | old_time32_t st_mtime; |
61 | u32 st_mtime_nsec; | 61 | u32 st_mtime_nsec; |
62 | compat_time_t st_ctime; | 62 | old_time32_t st_ctime; |
63 | u32 st_ctime_nsec; | 63 | u32 st_ctime_nsec; |
64 | u32 __unused4[2]; | 64 | u32 __unused4[2]; |
65 | }; | 65 | }; |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 89cf15566c4e..041a115789a1 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -387,12 +387,12 @@ int main(void) | |||
387 | OFFSET(CFG_SYSCALL_MAP64, vdso_data, syscall_map_64); | 387 | OFFSET(CFG_SYSCALL_MAP64, vdso_data, syscall_map_64); |
388 | OFFSET(TVAL64_TV_SEC, timeval, tv_sec); | 388 | OFFSET(TVAL64_TV_SEC, timeval, tv_sec); |
389 | OFFSET(TVAL64_TV_USEC, timeval, tv_usec); | 389 | OFFSET(TVAL64_TV_USEC, timeval, tv_usec); |
390 | OFFSET(TVAL32_TV_SEC, compat_timeval, tv_sec); | 390 | OFFSET(TVAL32_TV_SEC, old_timeval32, tv_sec); |
391 | OFFSET(TVAL32_TV_USEC, compat_timeval, tv_usec); | 391 | OFFSET(TVAL32_TV_USEC, old_timeval32, tv_usec); |
392 | OFFSET(TSPC64_TV_SEC, timespec, tv_sec); | 392 | OFFSET(TSPC64_TV_SEC, timespec, tv_sec); |
393 | OFFSET(TSPC64_TV_NSEC, timespec, tv_nsec); | 393 | OFFSET(TSPC64_TV_NSEC, timespec, tv_nsec); |
394 | OFFSET(TSPC32_TV_SEC, compat_timespec, tv_sec); | 394 | OFFSET(TSPC32_TV_SEC, old_timespec32, tv_sec); |
395 | OFFSET(TSPC32_TV_NSEC, compat_timespec, tv_nsec); | 395 | OFFSET(TSPC32_TV_NSEC, old_timespec32, tv_nsec); |
396 | #else | 396 | #else |
397 | OFFSET(TVAL32_TV_SEC, timeval, tv_sec); | 397 | OFFSET(TVAL32_TV_SEC, timeval, tv_sec); |
398 | OFFSET(TVAL32_TV_USEC, timeval, tv_usec); | 398 | OFFSET(TVAL32_TV_USEC, timeval, tv_usec); |
diff --git a/arch/powerpc/oprofile/backtrace.c b/arch/powerpc/oprofile/backtrace.c index ad054dd0d666..5df6290d1ccc 100644 --- a/arch/powerpc/oprofile/backtrace.c +++ b/arch/powerpc/oprofile/backtrace.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * 2 of the License, or (at your option) any later version. | 7 | * 2 of the License, or (at your option) any later version. |
8 | **/ | 8 | **/ |
9 | 9 | ||
10 | #include <linux/compat_time.h> | 10 | #include <linux/time.h> |
11 | #include <linux/oprofile.h> | 11 | #include <linux/oprofile.h> |
12 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
13 | #include <asm/processor.h> | 13 | #include <asm/processor.h> |
diff --git a/arch/sparc/include/asm/compat.h b/arch/sparc/include/asm/compat.h index 4eb51d2dae98..7018cb60beef 100644 --- a/arch/sparc/include/asm/compat.h +++ b/arch/sparc/include/asm/compat.h | |||
@@ -47,11 +47,11 @@ struct compat_stat { | |||
47 | __compat_gid_t st_gid; | 47 | __compat_gid_t st_gid; |
48 | compat_dev_t st_rdev; | 48 | compat_dev_t st_rdev; |
49 | compat_off_t st_size; | 49 | compat_off_t st_size; |
50 | compat_time_t st_atime; | 50 | old_time32_t st_atime; |
51 | compat_ulong_t st_atime_nsec; | 51 | compat_ulong_t st_atime_nsec; |
52 | compat_time_t st_mtime; | 52 | old_time32_t st_mtime; |
53 | compat_ulong_t st_mtime_nsec; | 53 | compat_ulong_t st_mtime_nsec; |
54 | compat_time_t st_ctime; | 54 | old_time32_t st_ctime; |
55 | compat_ulong_t st_ctime_nsec; | 55 | compat_ulong_t st_ctime_nsec; |
56 | compat_off_t st_blksize; | 56 | compat_off_t st_blksize; |
57 | compat_off_t st_blocks; | 57 | compat_off_t st_blocks; |
@@ -2135,12 +2135,12 @@ COMPAT_SYSCALL_DEFINE5(io_getevents, compat_aio_context_t, ctx_id, | |||
2135 | compat_long_t, min_nr, | 2135 | compat_long_t, min_nr, |
2136 | compat_long_t, nr, | 2136 | compat_long_t, nr, |
2137 | struct io_event __user *, events, | 2137 | struct io_event __user *, events, |
2138 | struct compat_timespec __user *, timeout) | 2138 | struct old_timespec32 __user *, timeout) |
2139 | { | 2139 | { |
2140 | struct timespec64 t; | 2140 | struct timespec64 t; |
2141 | int ret; | 2141 | int ret; |
2142 | 2142 | ||
2143 | if (timeout && compat_get_timespec64(&t, timeout)) | 2143 | if (timeout && get_old_timespec32(&t, timeout)) |
2144 | return -EFAULT; | 2144 | return -EFAULT; |
2145 | 2145 | ||
2146 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); | 2146 | ret = do_io_getevents(ctx_id, min_nr, nr, events, timeout ? &t : NULL); |
@@ -2160,7 +2160,7 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents, | |||
2160 | compat_long_t, min_nr, | 2160 | compat_long_t, min_nr, |
2161 | compat_long_t, nr, | 2161 | compat_long_t, nr, |
2162 | struct io_event __user *, events, | 2162 | struct io_event __user *, events, |
2163 | struct compat_timespec __user *, timeout, | 2163 | struct old_timespec32 __user *, timeout, |
2164 | const struct __compat_aio_sigset __user *, usig) | 2164 | const struct __compat_aio_sigset __user *, usig) |
2165 | { | 2165 | { |
2166 | struct __compat_aio_sigset ksig = { NULL, }; | 2166 | struct __compat_aio_sigset ksig = { NULL, }; |
@@ -2168,7 +2168,7 @@ COMPAT_SYSCALL_DEFINE6(io_pgetevents, | |||
2168 | struct timespec64 t; | 2168 | struct timespec64 t; |
2169 | int ret; | 2169 | int ret; |
2170 | 2170 | ||
2171 | if (timeout && compat_get_timespec64(&t, timeout)) | 2171 | if (timeout && get_old_timespec32(&t, timeout)) |
2172 | return -EFAULT; | 2172 | return -EFAULT; |
2173 | 2173 | ||
2174 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) | 2174 | if (usig && copy_from_user(&ksig, usig, sizeof(ksig))) |
diff --git a/fs/compat_binfmt_elf.c b/fs/compat_binfmt_elf.c index 504b3c3539dc..15f6e96b3bd9 100644 --- a/fs/compat_binfmt_elf.c +++ b/fs/compat_binfmt_elf.c | |||
@@ -52,7 +52,7 @@ | |||
52 | #define elf_prpsinfo compat_elf_prpsinfo | 52 | #define elf_prpsinfo compat_elf_prpsinfo |
53 | 53 | ||
54 | #undef ns_to_timeval | 54 | #undef ns_to_timeval |
55 | #define ns_to_timeval ns_to_compat_timeval | 55 | #define ns_to_timeval ns_to_old_timeval32 |
56 | 56 | ||
57 | /* | 57 | /* |
58 | * To use this file, asm/elf.h must define compat_elf_check_arch. | 58 | * To use this file, asm/elf.h must define compat_elf_check_arch. |
diff --git a/fs/select.c b/fs/select.c index 4a6b6e4b21cb..22b3bf89f051 100644 --- a/fs/select.c +++ b/fs/select.c | |||
@@ -1120,7 +1120,7 @@ int compat_poll_select_copy_remaining(struct timespec64 *end_time, void __user * | |||
1120 | ts.tv_sec = ts.tv_nsec = 0; | 1120 | ts.tv_sec = ts.tv_nsec = 0; |
1121 | 1121 | ||
1122 | if (timeval) { | 1122 | if (timeval) { |
1123 | struct compat_timeval rtv; | 1123 | struct old_timeval32 rtv; |
1124 | 1124 | ||
1125 | rtv.tv_sec = ts.tv_sec; | 1125 | rtv.tv_sec = ts.tv_sec; |
1126 | rtv.tv_usec = ts.tv_nsec / NSEC_PER_USEC; | 1126 | rtv.tv_usec = ts.tv_nsec / NSEC_PER_USEC; |
@@ -1128,7 +1128,7 @@ int compat_poll_select_copy_remaining(struct timespec64 *end_time, void __user * | |||
1128 | if (!copy_to_user(p, &rtv, sizeof(rtv))) | 1128 | if (!copy_to_user(p, &rtv, sizeof(rtv))) |
1129 | return ret; | 1129 | return ret; |
1130 | } else { | 1130 | } else { |
1131 | if (!compat_put_timespec64(&ts, p)) | 1131 | if (!put_old_timespec32(&ts, p)) |
1132 | return ret; | 1132 | return ret; |
1133 | } | 1133 | } |
1134 | /* | 1134 | /* |
@@ -1257,10 +1257,10 @@ out_nofds: | |||
1257 | 1257 | ||
1258 | static int do_compat_select(int n, compat_ulong_t __user *inp, | 1258 | static int do_compat_select(int n, compat_ulong_t __user *inp, |
1259 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 1259 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |
1260 | struct compat_timeval __user *tvp) | 1260 | struct old_timeval32 __user *tvp) |
1261 | { | 1261 | { |
1262 | struct timespec64 end_time, *to = NULL; | 1262 | struct timespec64 end_time, *to = NULL; |
1263 | struct compat_timeval tv; | 1263 | struct old_timeval32 tv; |
1264 | int ret; | 1264 | int ret; |
1265 | 1265 | ||
1266 | if (tvp) { | 1266 | if (tvp) { |
@@ -1282,7 +1282,7 @@ static int do_compat_select(int n, compat_ulong_t __user *inp, | |||
1282 | 1282 | ||
1283 | COMPAT_SYSCALL_DEFINE5(select, int, n, compat_ulong_t __user *, inp, | 1283 | COMPAT_SYSCALL_DEFINE5(select, int, n, compat_ulong_t __user *, inp, |
1284 | compat_ulong_t __user *, outp, compat_ulong_t __user *, exp, | 1284 | compat_ulong_t __user *, outp, compat_ulong_t __user *, exp, |
1285 | struct compat_timeval __user *, tvp) | 1285 | struct old_timeval32 __user *, tvp) |
1286 | { | 1286 | { |
1287 | return do_compat_select(n, inp, outp, exp, tvp); | 1287 | return do_compat_select(n, inp, outp, exp, tvp); |
1288 | } | 1288 | } |
@@ -1307,7 +1307,7 @@ COMPAT_SYSCALL_DEFINE1(old_select, struct compat_sel_arg_struct __user *, arg) | |||
1307 | 1307 | ||
1308 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, | 1308 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, |
1309 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 1309 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |
1310 | struct compat_timespec __user *tsp, compat_sigset_t __user *sigmask, | 1310 | struct old_timespec32 __user *tsp, compat_sigset_t __user *sigmask, |
1311 | compat_size_t sigsetsize) | 1311 | compat_size_t sigsetsize) |
1312 | { | 1312 | { |
1313 | sigset_t ksigmask, sigsaved; | 1313 | sigset_t ksigmask, sigsaved; |
@@ -1315,7 +1315,7 @@ static long do_compat_pselect(int n, compat_ulong_t __user *inp, | |||
1315 | int ret; | 1315 | int ret; |
1316 | 1316 | ||
1317 | if (tsp) { | 1317 | if (tsp) { |
1318 | if (compat_get_timespec64(&ts, tsp)) | 1318 | if (get_old_timespec32(&ts, tsp)) |
1319 | return -EFAULT; | 1319 | return -EFAULT; |
1320 | 1320 | ||
1321 | to = &end_time; | 1321 | to = &end_time; |
@@ -1355,7 +1355,7 @@ static long do_compat_pselect(int n, compat_ulong_t __user *inp, | |||
1355 | 1355 | ||
1356 | COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp, | 1356 | COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp, |
1357 | compat_ulong_t __user *, outp, compat_ulong_t __user *, exp, | 1357 | compat_ulong_t __user *, outp, compat_ulong_t __user *, exp, |
1358 | struct compat_timespec __user *, tsp, void __user *, sig) | 1358 | struct old_timespec32 __user *, tsp, void __user *, sig) |
1359 | { | 1359 | { |
1360 | compat_size_t sigsetsize = 0; | 1360 | compat_size_t sigsetsize = 0; |
1361 | compat_uptr_t up = 0; | 1361 | compat_uptr_t up = 0; |
@@ -1373,7 +1373,7 @@ COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp, | |||
1373 | } | 1373 | } |
1374 | 1374 | ||
1375 | COMPAT_SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, | 1375 | COMPAT_SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, |
1376 | unsigned int, nfds, struct compat_timespec __user *, tsp, | 1376 | unsigned int, nfds, struct old_timespec32 __user *, tsp, |
1377 | const compat_sigset_t __user *, sigmask, compat_size_t, sigsetsize) | 1377 | const compat_sigset_t __user *, sigmask, compat_size_t, sigsetsize) |
1378 | { | 1378 | { |
1379 | sigset_t ksigmask, sigsaved; | 1379 | sigset_t ksigmask, sigsaved; |
@@ -1381,7 +1381,7 @@ COMPAT_SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, | |||
1381 | int ret; | 1381 | int ret; |
1382 | 1382 | ||
1383 | if (tsp) { | 1383 | if (tsp) { |
1384 | if (compat_get_timespec64(&ts, tsp)) | 1384 | if (get_old_timespec32(&ts, tsp)) |
1385 | return -EFAULT; | 1385 | return -EFAULT; |
1386 | 1386 | ||
1387 | to = &end_time; | 1387 | to = &end_time; |
diff --git a/fs/timerfd.c b/fs/timerfd.c index d69ad801eb80..803ca070d42e 100644 --- a/fs/timerfd.c +++ b/fs/timerfd.c | |||
@@ -561,29 +561,29 @@ SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct __kernel_itimerspec __user *, | |||
561 | 561 | ||
562 | #ifdef CONFIG_COMPAT_32BIT_TIME | 562 | #ifdef CONFIG_COMPAT_32BIT_TIME |
563 | COMPAT_SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, | 563 | COMPAT_SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, |
564 | const struct compat_itimerspec __user *, utmr, | 564 | const struct old_itimerspec32 __user *, utmr, |
565 | struct compat_itimerspec __user *, otmr) | 565 | struct old_itimerspec32 __user *, otmr) |
566 | { | 566 | { |
567 | struct itimerspec64 new, old; | 567 | struct itimerspec64 new, old; |
568 | int ret; | 568 | int ret; |
569 | 569 | ||
570 | if (get_compat_itimerspec64(&new, utmr)) | 570 | if (get_old_itimerspec32(&new, utmr)) |
571 | return -EFAULT; | 571 | return -EFAULT; |
572 | ret = do_timerfd_settime(ufd, flags, &new, &old); | 572 | ret = do_timerfd_settime(ufd, flags, &new, &old); |
573 | if (ret) | 573 | if (ret) |
574 | return ret; | 574 | return ret; |
575 | if (otmr && put_compat_itimerspec64(&old, otmr)) | 575 | if (otmr && put_old_itimerspec32(&old, otmr)) |
576 | return -EFAULT; | 576 | return -EFAULT; |
577 | return ret; | 577 | return ret; |
578 | } | 578 | } |
579 | 579 | ||
580 | COMPAT_SYSCALL_DEFINE2(timerfd_gettime, int, ufd, | 580 | COMPAT_SYSCALL_DEFINE2(timerfd_gettime, int, ufd, |
581 | struct compat_itimerspec __user *, otmr) | 581 | struct old_itimerspec32 __user *, otmr) |
582 | { | 582 | { |
583 | struct itimerspec64 kotmr; | 583 | struct itimerspec64 kotmr; |
584 | int ret = do_timerfd_gettime(ufd, &kotmr); | 584 | int ret = do_timerfd_gettime(ufd, &kotmr); |
585 | if (ret) | 585 | if (ret) |
586 | return ret; | 586 | return ret; |
587 | return put_compat_itimerspec64(&kotmr, otmr) ? -EFAULT : 0; | 587 | return put_old_itimerspec32(&kotmr, otmr) ? -EFAULT : 0; |
588 | } | 588 | } |
589 | #endif | 589 | #endif |
diff --git a/fs/utimes.c b/fs/utimes.c index 69d4b6ba1bfb..79a65c163f40 100644 --- a/fs/utimes.c +++ b/fs/utimes.c | |||
@@ -245,13 +245,13 @@ COMPAT_SYSCALL_DEFINE2(utime, const char __user *, filename, | |||
245 | return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0); | 245 | return do_utimes(AT_FDCWD, filename, t ? tv : NULL, 0); |
246 | } | 246 | } |
247 | 247 | ||
248 | COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filename, struct compat_timespec __user *, t, int, flags) | 248 | COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filename, struct old_timespec32 __user *, t, int, flags) |
249 | { | 249 | { |
250 | struct timespec64 tv[2]; | 250 | struct timespec64 tv[2]; |
251 | 251 | ||
252 | if (t) { | 252 | if (t) { |
253 | if (compat_get_timespec64(&tv[0], &t[0]) || | 253 | if (get_old_timespec32(&tv[0], &t[0]) || |
254 | compat_get_timespec64(&tv[1], &t[1])) | 254 | get_old_timespec32(&tv[1], &t[1])) |
255 | return -EFAULT; | 255 | return -EFAULT; |
256 | 256 | ||
257 | if (tv[0].tv_nsec == UTIME_OMIT && tv[1].tv_nsec == UTIME_OMIT) | 257 | if (tv[0].tv_nsec == UTIME_OMIT && tv[1].tv_nsec == UTIME_OMIT) |
@@ -261,7 +261,7 @@ COMPAT_SYSCALL_DEFINE4(utimensat, unsigned int, dfd, const char __user *, filena | |||
261 | } | 261 | } |
262 | 262 | ||
263 | static long do_compat_futimesat(unsigned int dfd, const char __user *filename, | 263 | static long do_compat_futimesat(unsigned int dfd, const char __user *filename, |
264 | struct compat_timeval __user *t) | 264 | struct old_timeval32 __user *t) |
265 | { | 265 | { |
266 | struct timespec64 tv[2]; | 266 | struct timespec64 tv[2]; |
267 | 267 | ||
@@ -282,12 +282,12 @@ static long do_compat_futimesat(unsigned int dfd, const char __user *filename, | |||
282 | 282 | ||
283 | COMPAT_SYSCALL_DEFINE3(futimesat, unsigned int, dfd, | 283 | COMPAT_SYSCALL_DEFINE3(futimesat, unsigned int, dfd, |
284 | const char __user *, filename, | 284 | const char __user *, filename, |
285 | struct compat_timeval __user *, t) | 285 | struct old_timeval32 __user *, t) |
286 | { | 286 | { |
287 | return do_compat_futimesat(dfd, filename, t); | 287 | return do_compat_futimesat(dfd, filename, t); |
288 | } | 288 | } |
289 | 289 | ||
290 | COMPAT_SYSCALL_DEFINE2(utimes, const char __user *, filename, struct compat_timeval __user *, t) | 290 | COMPAT_SYSCALL_DEFINE2(utimes, const char __user *, filename, struct old_timeval32 __user *, t) |
291 | { | 291 | { |
292 | return do_compat_futimesat(AT_FDCWD, filename, t); | 292 | return do_compat_futimesat(AT_FDCWD, filename, t); |
293 | } | 293 | } |
diff --git a/include/linux/compat.h b/include/linux/compat.h index 1a3c4f37e908..0e058792ecf6 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -7,7 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
10 | #include <linux/compat_time.h> | 10 | #include <linux/time.h> |
11 | 11 | ||
12 | #include <linux/stat.h> | 12 | #include <linux/stat.h> |
13 | #include <linux/param.h> /* for HZ */ | 13 | #include <linux/param.h> /* for HZ */ |
@@ -116,13 +116,13 @@ struct compat_sel_arg_struct; | |||
116 | struct rusage; | 116 | struct rusage; |
117 | 117 | ||
118 | struct compat_utimbuf { | 118 | struct compat_utimbuf { |
119 | compat_time_t actime; | 119 | old_time32_t actime; |
120 | compat_time_t modtime; | 120 | old_time32_t modtime; |
121 | }; | 121 | }; |
122 | 122 | ||
123 | struct compat_itimerval { | 123 | struct compat_itimerval { |
124 | struct compat_timeval it_interval; | 124 | struct old_timeval32 it_interval; |
125 | struct compat_timeval it_value; | 125 | struct old_timeval32 it_value; |
126 | }; | 126 | }; |
127 | 127 | ||
128 | struct itimerval; | 128 | struct itimerval; |
@@ -146,7 +146,7 @@ struct compat_timex { | |||
146 | compat_long_t constant; | 146 | compat_long_t constant; |
147 | compat_long_t precision; | 147 | compat_long_t precision; |
148 | compat_long_t tolerance; | 148 | compat_long_t tolerance; |
149 | struct compat_timeval time; | 149 | struct old_timeval32 time; |
150 | compat_long_t tick; | 150 | compat_long_t tick; |
151 | compat_long_t ppsfreq; | 151 | compat_long_t ppsfreq; |
152 | compat_long_t jitter; | 152 | compat_long_t jitter; |
@@ -307,8 +307,8 @@ struct compat_rlimit { | |||
307 | }; | 307 | }; |
308 | 308 | ||
309 | struct compat_rusage { | 309 | struct compat_rusage { |
310 | struct compat_timeval ru_utime; | 310 | struct old_timeval32 ru_utime; |
311 | struct compat_timeval ru_stime; | 311 | struct old_timeval32 ru_stime; |
312 | compat_long_t ru_maxrss; | 312 | compat_long_t ru_maxrss; |
313 | compat_long_t ru_ixrss; | 313 | compat_long_t ru_ixrss; |
314 | compat_long_t ru_idrss; | 314 | compat_long_t ru_idrss; |
@@ -457,8 +457,8 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *to, const siginfo_t *fr | |||
457 | int get_compat_sigevent(struct sigevent *event, | 457 | int get_compat_sigevent(struct sigevent *event, |
458 | const struct compat_sigevent __user *u_event); | 458 | const struct compat_sigevent __user *u_event); |
459 | 459 | ||
460 | static inline int compat_timeval_compare(struct compat_timeval *lhs, | 460 | static inline int old_timeval32_compare(struct old_timeval32 *lhs, |
461 | struct compat_timeval *rhs) | 461 | struct old_timeval32 *rhs) |
462 | { | 462 | { |
463 | if (lhs->tv_sec < rhs->tv_sec) | 463 | if (lhs->tv_sec < rhs->tv_sec) |
464 | return -1; | 464 | return -1; |
@@ -467,8 +467,8 @@ static inline int compat_timeval_compare(struct compat_timeval *lhs, | |||
467 | return lhs->tv_usec - rhs->tv_usec; | 467 | return lhs->tv_usec - rhs->tv_usec; |
468 | } | 468 | } |
469 | 469 | ||
470 | static inline int compat_timespec_compare(struct compat_timespec *lhs, | 470 | static inline int old_timespec32_compare(struct old_timespec32 *lhs, |
471 | struct compat_timespec *rhs) | 471 | struct old_timespec32 *rhs) |
472 | { | 472 | { |
473 | if (lhs->tv_sec < rhs->tv_sec) | 473 | if (lhs->tv_sec < rhs->tv_sec) |
474 | return -1; | 474 | return -1; |
@@ -552,12 +552,12 @@ asmlinkage long compat_sys_io_getevents(compat_aio_context_t ctx_id, | |||
552 | compat_long_t min_nr, | 552 | compat_long_t min_nr, |
553 | compat_long_t nr, | 553 | compat_long_t nr, |
554 | struct io_event __user *events, | 554 | struct io_event __user *events, |
555 | struct compat_timespec __user *timeout); | 555 | struct old_timespec32 __user *timeout); |
556 | asmlinkage long compat_sys_io_pgetevents(compat_aio_context_t ctx_id, | 556 | asmlinkage long compat_sys_io_pgetevents(compat_aio_context_t ctx_id, |
557 | compat_long_t min_nr, | 557 | compat_long_t min_nr, |
558 | compat_long_t nr, | 558 | compat_long_t nr, |
559 | struct io_event __user *events, | 559 | struct io_event __user *events, |
560 | struct compat_timespec __user *timeout, | 560 | struct old_timespec32 __user *timeout, |
561 | const struct __compat_aio_sigset __user *usig); | 561 | const struct __compat_aio_sigset __user *usig); |
562 | 562 | ||
563 | /* fs/cookies.c */ | 563 | /* fs/cookies.c */ |
@@ -642,11 +642,11 @@ asmlinkage long compat_sys_sendfile64(int out_fd, int in_fd, | |||
642 | asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp, | 642 | asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp, |
643 | compat_ulong_t __user *outp, | 643 | compat_ulong_t __user *outp, |
644 | compat_ulong_t __user *exp, | 644 | compat_ulong_t __user *exp, |
645 | struct compat_timespec __user *tsp, | 645 | struct old_timespec32 __user *tsp, |
646 | void __user *sig); | 646 | void __user *sig); |
647 | asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, | 647 | asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, |
648 | unsigned int nfds, | 648 | unsigned int nfds, |
649 | struct compat_timespec __user *tsp, | 649 | struct old_timespec32 __user *tsp, |
650 | const compat_sigset_t __user *sigmask, | 650 | const compat_sigset_t __user *sigmask, |
651 | compat_size_t sigsetsize); | 651 | compat_size_t sigsetsize); |
652 | 652 | ||
@@ -671,15 +671,15 @@ asmlinkage long compat_sys_newfstat(unsigned int fd, | |||
671 | 671 | ||
672 | /* fs/timerfd.c */ | 672 | /* fs/timerfd.c */ |
673 | asmlinkage long compat_sys_timerfd_gettime(int ufd, | 673 | asmlinkage long compat_sys_timerfd_gettime(int ufd, |
674 | struct compat_itimerspec __user *otmr); | 674 | struct old_itimerspec32 __user *otmr); |
675 | asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, | 675 | asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, |
676 | const struct compat_itimerspec __user *utmr, | 676 | const struct old_itimerspec32 __user *utmr, |
677 | struct compat_itimerspec __user *otmr); | 677 | struct old_itimerspec32 __user *otmr); |
678 | 678 | ||
679 | /* fs/utimes.c */ | 679 | /* fs/utimes.c */ |
680 | asmlinkage long compat_sys_utimensat(unsigned int dfd, | 680 | asmlinkage long compat_sys_utimensat(unsigned int dfd, |
681 | const char __user *filename, | 681 | const char __user *filename, |
682 | struct compat_timespec __user *t, | 682 | struct old_timespec32 __user *t, |
683 | int flags); | 683 | int flags); |
684 | 684 | ||
685 | /* kernel/exit.c */ | 685 | /* kernel/exit.c */ |
@@ -691,7 +691,7 @@ asmlinkage long compat_sys_waitid(int, compat_pid_t, | |||
691 | 691 | ||
692 | /* kernel/futex.c */ | 692 | /* kernel/futex.c */ |
693 | asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, | 693 | asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, |
694 | struct compat_timespec __user *utime, u32 __user *uaddr2, | 694 | struct old_timespec32 __user *utime, u32 __user *uaddr2, |
695 | u32 val3); | 695 | u32 val3); |
696 | asmlinkage long | 696 | asmlinkage long |
697 | compat_sys_set_robust_list(struct compat_robust_list_head __user *head, | 697 | compat_sys_set_robust_list(struct compat_robust_list_head __user *head, |
@@ -701,8 +701,8 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr, | |||
701 | compat_size_t __user *len_ptr); | 701 | compat_size_t __user *len_ptr); |
702 | 702 | ||
703 | /* kernel/hrtimer.c */ | 703 | /* kernel/hrtimer.c */ |
704 | asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp, | 704 | asmlinkage long compat_sys_nanosleep(struct old_timespec32 __user *rqtp, |
705 | struct compat_timespec __user *rmtp); | 705 | struct old_timespec32 __user *rmtp); |
706 | 706 | ||
707 | /* kernel/itimer.c */ | 707 | /* kernel/itimer.c */ |
708 | asmlinkage long compat_sys_getitimer(int which, | 708 | asmlinkage long compat_sys_getitimer(int which, |
@@ -722,19 +722,19 @@ asmlinkage long compat_sys_timer_create(clockid_t which_clock, | |||
722 | struct compat_sigevent __user *timer_event_spec, | 722 | struct compat_sigevent __user *timer_event_spec, |
723 | timer_t __user *created_timer_id); | 723 | timer_t __user *created_timer_id); |
724 | asmlinkage long compat_sys_timer_gettime(timer_t timer_id, | 724 | asmlinkage long compat_sys_timer_gettime(timer_t timer_id, |
725 | struct compat_itimerspec __user *setting); | 725 | struct old_itimerspec32 __user *setting); |
726 | asmlinkage long compat_sys_timer_settime(timer_t timer_id, int flags, | 726 | asmlinkage long compat_sys_timer_settime(timer_t timer_id, int flags, |
727 | struct compat_itimerspec __user *new, | 727 | struct old_itimerspec32 __user *new, |
728 | struct compat_itimerspec __user *old); | 728 | struct old_itimerspec32 __user *old); |
729 | asmlinkage long compat_sys_clock_settime(clockid_t which_clock, | 729 | asmlinkage long compat_sys_clock_settime(clockid_t which_clock, |
730 | struct compat_timespec __user *tp); | 730 | struct old_timespec32 __user *tp); |
731 | asmlinkage long compat_sys_clock_gettime(clockid_t which_clock, | 731 | asmlinkage long compat_sys_clock_gettime(clockid_t which_clock, |
732 | struct compat_timespec __user *tp); | 732 | struct old_timespec32 __user *tp); |
733 | asmlinkage long compat_sys_clock_getres(clockid_t which_clock, | 733 | asmlinkage long compat_sys_clock_getres(clockid_t which_clock, |
734 | struct compat_timespec __user *tp); | 734 | struct old_timespec32 __user *tp); |
735 | asmlinkage long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, | 735 | asmlinkage long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, |
736 | struct compat_timespec __user *rqtp, | 736 | struct old_timespec32 __user *rqtp, |
737 | struct compat_timespec __user *rmtp); | 737 | struct old_timespec32 __user *rmtp); |
738 | 738 | ||
739 | /* kernel/ptrace.c */ | 739 | /* kernel/ptrace.c */ |
740 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, | 740 | asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid, |
@@ -748,7 +748,7 @@ asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid, | |||
748 | unsigned int len, | 748 | unsigned int len, |
749 | compat_ulong_t __user *user_mask_ptr); | 749 | compat_ulong_t __user *user_mask_ptr); |
750 | asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, | 750 | asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, |
751 | struct compat_timespec __user *interval); | 751 | struct old_timespec32 __user *interval); |
752 | 752 | ||
753 | /* kernel/signal.c */ | 753 | /* kernel/signal.c */ |
754 | asmlinkage long compat_sys_sigaltstack(const compat_stack_t __user *uss_ptr, | 754 | asmlinkage long compat_sys_sigaltstack(const compat_stack_t __user *uss_ptr, |
@@ -768,7 +768,7 @@ asmlinkage long compat_sys_rt_sigpending(compat_sigset_t __user *uset, | |||
768 | compat_size_t sigsetsize); | 768 | compat_size_t sigsetsize); |
769 | asmlinkage long compat_sys_rt_sigtimedwait(compat_sigset_t __user *uthese, | 769 | asmlinkage long compat_sys_rt_sigtimedwait(compat_sigset_t __user *uthese, |
770 | struct compat_siginfo __user *uinfo, | 770 | struct compat_siginfo __user *uinfo, |
771 | struct compat_timespec __user *uts, compat_size_t sigsetsize); | 771 | struct old_timespec32 __user *uts, compat_size_t sigsetsize); |
772 | asmlinkage long compat_sys_rt_sigqueueinfo(compat_pid_t pid, int sig, | 772 | asmlinkage long compat_sys_rt_sigqueueinfo(compat_pid_t pid, int sig, |
773 | struct compat_siginfo __user *uinfo); | 773 | struct compat_siginfo __user *uinfo); |
774 | /* No generic prototype for rt_sigreturn */ | 774 | /* No generic prototype for rt_sigreturn */ |
@@ -782,9 +782,9 @@ asmlinkage long compat_sys_setrlimit(unsigned int resource, | |||
782 | asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru); | 782 | asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru); |
783 | 783 | ||
784 | /* kernel/time.c */ | 784 | /* kernel/time.c */ |
785 | asmlinkage long compat_sys_gettimeofday(struct compat_timeval __user *tv, | 785 | asmlinkage long compat_sys_gettimeofday(struct old_timeval32 __user *tv, |
786 | struct timezone __user *tz); | 786 | struct timezone __user *tz); |
787 | asmlinkage long compat_sys_settimeofday(struct compat_timeval __user *tv, | 787 | asmlinkage long compat_sys_settimeofday(struct old_timeval32 __user *tv, |
788 | struct timezone __user *tz); | 788 | struct timezone __user *tz); |
789 | asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); | 789 | asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); |
790 | 790 | ||
@@ -798,11 +798,11 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name, | |||
798 | asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, | 798 | asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, |
799 | const char __user *u_msg_ptr, | 799 | const char __user *u_msg_ptr, |
800 | compat_size_t msg_len, unsigned int msg_prio, | 800 | compat_size_t msg_len, unsigned int msg_prio, |
801 | const struct compat_timespec __user *u_abs_timeout); | 801 | const struct old_timespec32 __user *u_abs_timeout); |
802 | asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, | 802 | asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, |
803 | char __user *u_msg_ptr, | 803 | char __user *u_msg_ptr, |
804 | compat_size_t msg_len, unsigned int __user *u_msg_prio, | 804 | compat_size_t msg_len, unsigned int __user *u_msg_prio, |
805 | const struct compat_timespec __user *u_abs_timeout); | 805 | const struct old_timespec32 __user *u_abs_timeout); |
806 | asmlinkage long compat_sys_mq_notify(mqd_t mqdes, | 806 | asmlinkage long compat_sys_mq_notify(mqd_t mqdes, |
807 | const struct compat_sigevent __user *u_notification); | 807 | const struct compat_sigevent __user *u_notification); |
808 | asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, | 808 | asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, |
@@ -819,7 +819,7 @@ asmlinkage long compat_sys_msgsnd(int msqid, compat_uptr_t msgp, | |||
819 | /* ipc/sem.c */ | 819 | /* ipc/sem.c */ |
820 | asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg); | 820 | asmlinkage long compat_sys_semctl(int semid, int semnum, int cmd, int arg); |
821 | asmlinkage long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, | 821 | asmlinkage long compat_sys_semtimedop(int semid, struct sembuf __user *tsems, |
822 | unsigned nsems, const struct compat_timespec __user *timeout); | 822 | unsigned nsems, const struct old_timespec32 __user *timeout); |
823 | 823 | ||
824 | /* ipc/shm.c */ | 824 | /* ipc/shm.c */ |
825 | asmlinkage long compat_sys_shmctl(int first, int second, void __user *uptr); | 825 | asmlinkage long compat_sys_shmctl(int first, int second, void __user *uptr); |
@@ -876,7 +876,7 @@ asmlinkage long compat_sys_rt_tgsigqueueinfo(compat_pid_t tgid, | |||
876 | struct compat_siginfo __user *uinfo); | 876 | struct compat_siginfo __user *uinfo); |
877 | asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, | 877 | asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, |
878 | unsigned vlen, unsigned int flags, | 878 | unsigned vlen, unsigned int flags, |
879 | struct compat_timespec __user *timeout); | 879 | struct old_timespec32 __user *timeout); |
880 | asmlinkage long compat_sys_wait4(compat_pid_t pid, | 880 | asmlinkage long compat_sys_wait4(compat_pid_t pid, |
881 | compat_uint_t __user *stat_addr, int options, | 881 | compat_uint_t __user *stat_addr, int options, |
882 | struct compat_rusage __user *ru); | 882 | struct compat_rusage __user *ru); |
@@ -928,7 +928,7 @@ asmlinkage long compat_sys_pwritev64v2(unsigned long fd, | |||
928 | asmlinkage long compat_sys_open(const char __user *filename, int flags, | 928 | asmlinkage long compat_sys_open(const char __user *filename, int flags, |
929 | umode_t mode); | 929 | umode_t mode); |
930 | asmlinkage long compat_sys_utimes(const char __user *filename, | 930 | asmlinkage long compat_sys_utimes(const char __user *filename, |
931 | struct compat_timeval __user *t); | 931 | struct old_timeval32 __user *t); |
932 | 932 | ||
933 | /* __ARCH_WANT_SYSCALL_NO_FLAGS */ | 933 | /* __ARCH_WANT_SYSCALL_NO_FLAGS */ |
934 | asmlinkage long compat_sys_signalfd(int ufd, | 934 | asmlinkage long compat_sys_signalfd(int ufd, |
@@ -942,15 +942,15 @@ asmlinkage long compat_sys_newlstat(const char __user *filename, | |||
942 | struct compat_stat __user *statbuf); | 942 | struct compat_stat __user *statbuf); |
943 | 943 | ||
944 | /* __ARCH_WANT_SYSCALL_DEPRECATED */ | 944 | /* __ARCH_WANT_SYSCALL_DEPRECATED */ |
945 | asmlinkage long compat_sys_time(compat_time_t __user *tloc); | 945 | asmlinkage long compat_sys_time(old_time32_t __user *tloc); |
946 | asmlinkage long compat_sys_utime(const char __user *filename, | 946 | asmlinkage long compat_sys_utime(const char __user *filename, |
947 | struct compat_utimbuf __user *t); | 947 | struct compat_utimbuf __user *t); |
948 | asmlinkage long compat_sys_futimesat(unsigned int dfd, | 948 | asmlinkage long compat_sys_futimesat(unsigned int dfd, |
949 | const char __user *filename, | 949 | const char __user *filename, |
950 | struct compat_timeval __user *t); | 950 | struct old_timeval32 __user *t); |
951 | asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | 951 | asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, |
952 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 952 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |
953 | struct compat_timeval __user *tvp); | 953 | struct old_timeval32 __user *tvp); |
954 | asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32); | 954 | asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32); |
955 | asmlinkage long compat_sys_recv(int fd, void __user *buf, compat_size_t len, | 955 | asmlinkage long compat_sys_recv(int fd, void __user *buf, compat_size_t len, |
956 | unsigned flags); | 956 | unsigned flags); |
@@ -983,7 +983,7 @@ asmlinkage long compat_sys_sigaction(int sig, | |||
983 | #endif | 983 | #endif |
984 | 984 | ||
985 | /* obsolete: kernel/time/time.c */ | 985 | /* obsolete: kernel/time/time.c */ |
986 | asmlinkage long compat_sys_stime(compat_time_t __user *tptr); | 986 | asmlinkage long compat_sys_stime(old_time32_t __user *tptr); |
987 | 987 | ||
988 | /* obsolete: net/socket.c */ | 988 | /* obsolete: net/socket.c */ |
989 | asmlinkage long compat_sys_socketcall(int call, u32 __user *args); | 989 | asmlinkage long compat_sys_socketcall(int call, u32 __user *args); |
@@ -1002,15 +1002,15 @@ static inline bool in_compat_syscall(void) { return is_compat_task(); } | |||
1002 | #endif | 1002 | #endif |
1003 | 1003 | ||
1004 | /** | 1004 | /** |
1005 | * ns_to_compat_timeval - Compat version of ns_to_timeval | 1005 | * ns_to_old_timeval32 - Compat version of ns_to_timeval |
1006 | * @nsec: the nanoseconds value to be converted | 1006 | * @nsec: the nanoseconds value to be converted |
1007 | * | 1007 | * |
1008 | * Returns the compat_timeval representation of the nsec parameter. | 1008 | * Returns the old_timeval32 representation of the nsec parameter. |
1009 | */ | 1009 | */ |
1010 | static inline struct compat_timeval ns_to_compat_timeval(s64 nsec) | 1010 | static inline struct old_timeval32 ns_to_old_timeval32(s64 nsec) |
1011 | { | 1011 | { |
1012 | struct timeval tv; | 1012 | struct timeval tv; |
1013 | struct compat_timeval ctv; | 1013 | struct old_timeval32 ctv; |
1014 | 1014 | ||
1015 | tv = ns_to_timeval(nsec); | 1015 | tv = ns_to_timeval(nsec); |
1016 | ctv.tv_sec = tv.tv_sec; | 1016 | ctv.tv_sec = tv.tv_sec; |
diff --git a/include/linux/compat_time.h b/include/linux/compat_time.h deleted file mode 100644 index e70bfd1d2c3f..000000000000 --- a/include/linux/compat_time.h +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | #ifndef _LINUX_COMPAT_TIME_H | ||
3 | #define _LINUX_COMPAT_TIME_H | ||
4 | |||
5 | #include <linux/types.h> | ||
6 | #include <linux/time64.h> | ||
7 | |||
8 | typedef s32 compat_time_t; | ||
9 | |||
10 | struct compat_timespec { | ||
11 | compat_time_t tv_sec; | ||
12 | s32 tv_nsec; | ||
13 | }; | ||
14 | |||
15 | struct compat_timeval { | ||
16 | compat_time_t tv_sec; | ||
17 | s32 tv_usec; | ||
18 | }; | ||
19 | |||
20 | struct compat_itimerspec { | ||
21 | struct compat_timespec it_interval; | ||
22 | struct compat_timespec it_value; | ||
23 | }; | ||
24 | |||
25 | extern int compat_get_timespec64(struct timespec64 *, const void __user *); | ||
26 | extern int compat_put_timespec64(const struct timespec64 *, void __user *); | ||
27 | extern int get_compat_itimerspec64(struct itimerspec64 *its, | ||
28 | const struct compat_itimerspec __user *uits); | ||
29 | extern int put_compat_itimerspec64(const struct itimerspec64 *its, | ||
30 | struct compat_itimerspec __user *uits); | ||
31 | |||
32 | #endif /* _LINUX_COMPAT_TIME_H */ | ||
diff --git a/include/linux/elfcore-compat.h b/include/linux/elfcore-compat.h index b5f2efdd05e0..7a37f4ce9fd2 100644 --- a/include/linux/elfcore-compat.h +++ b/include/linux/elfcore-compat.h | |||
@@ -27,10 +27,10 @@ struct compat_elf_prstatus | |||
27 | compat_pid_t pr_ppid; | 27 | compat_pid_t pr_ppid; |
28 | compat_pid_t pr_pgrp; | 28 | compat_pid_t pr_pgrp; |
29 | compat_pid_t pr_sid; | 29 | compat_pid_t pr_sid; |
30 | struct compat_timeval pr_utime; | 30 | struct old_timeval32 pr_utime; |
31 | struct compat_timeval pr_stime; | 31 | struct old_timeval32 pr_stime; |
32 | struct compat_timeval pr_cutime; | 32 | struct old_timeval32 pr_cutime; |
33 | struct compat_timeval pr_cstime; | 33 | struct old_timeval32 pr_cstime; |
34 | compat_elf_gregset_t pr_reg; | 34 | compat_elf_gregset_t pr_reg; |
35 | #ifdef CONFIG_BINFMT_ELF_FDPIC | 35 | #ifdef CONFIG_BINFMT_ELF_FDPIC |
36 | compat_ulong_t pr_exec_fdpic_loadmap; | 36 | compat_ulong_t pr_exec_fdpic_loadmap; |
diff --git a/include/linux/restart_block.h b/include/linux/restart_block.h index 5d83d0c1d06c..bba2920e9c05 100644 --- a/include/linux/restart_block.h +++ b/include/linux/restart_block.h | |||
@@ -10,7 +10,7 @@ | |||
10 | #include <linux/time64.h> | 10 | #include <linux/time64.h> |
11 | 11 | ||
12 | struct timespec; | 12 | struct timespec; |
13 | struct compat_timespec; | 13 | struct old_timespec32; |
14 | struct pollfd; | 14 | struct pollfd; |
15 | 15 | ||
16 | enum timespec_type { | 16 | enum timespec_type { |
@@ -40,7 +40,7 @@ struct restart_block { | |||
40 | enum timespec_type type; | 40 | enum timespec_type type; |
41 | union { | 41 | union { |
42 | struct __kernel_timespec __user *rmtp; | 42 | struct __kernel_timespec __user *rmtp; |
43 | struct compat_timespec __user *compat_rmtp; | 43 | struct old_timespec32 __user *compat_rmtp; |
44 | }; | 44 | }; |
45 | u64 expires; | 45 | u64 expires; |
46 | } nanosleep; | 46 | } nanosleep; |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 2ff814c92f7f..b3e27e5ee322 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -60,7 +60,7 @@ struct tms; | |||
60 | struct utimbuf; | 60 | struct utimbuf; |
61 | struct mq_attr; | 61 | struct mq_attr; |
62 | struct compat_stat; | 62 | struct compat_stat; |
63 | struct compat_timeval; | 63 | struct old_timeval32; |
64 | struct robust_list_head; | 64 | struct robust_list_head; |
65 | struct getcpu_cache; | 65 | struct getcpu_cache; |
66 | struct old_linux_dirent; | 66 | struct old_linux_dirent; |
diff --git a/include/linux/time32.h b/include/linux/time32.h index 92c0ca092d93..0e0d7304d1a8 100644 --- a/include/linux/time32.h +++ b/include/linux/time32.h | |||
@@ -13,6 +13,31 @@ | |||
13 | 13 | ||
14 | #define TIME_T_MAX (time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1) | 14 | #define TIME_T_MAX (time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1) |
15 | 15 | ||
16 | typedef s32 old_time32_t; | ||
17 | |||
18 | struct old_timespec32 { | ||
19 | old_time32_t tv_sec; | ||
20 | s32 tv_nsec; | ||
21 | }; | ||
22 | |||
23 | struct old_timeval32 { | ||
24 | old_time32_t tv_sec; | ||
25 | s32 tv_usec; | ||
26 | }; | ||
27 | |||
28 | struct old_itimerspec32 { | ||
29 | struct old_timespec32 it_interval; | ||
30 | struct old_timespec32 it_value; | ||
31 | }; | ||
32 | |||
33 | extern int get_old_timespec32(struct timespec64 *, const void __user *); | ||
34 | extern int put_old_timespec32(const struct timespec64 *, void __user *); | ||
35 | extern int get_old_itimerspec32(struct itimerspec64 *its, | ||
36 | const struct old_itimerspec32 __user *uits); | ||
37 | extern int put_old_itimerspec32(const struct itimerspec64 *its, | ||
38 | struct old_itimerspec32 __user *uits); | ||
39 | |||
40 | |||
16 | #if __BITS_PER_LONG == 64 | 41 | #if __BITS_PER_LONG == 64 |
17 | 42 | ||
18 | /* timespec64 is defined as timespec here */ | 43 | /* timespec64 is defined as timespec here */ |
@@ -183,18 +208,17 @@ extern struct timeval ns_to_timeval(const s64 nsec); | |||
183 | extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); | 208 | extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); |
184 | 209 | ||
185 | /* | 210 | /* |
186 | * New aliases for compat time functions. These will be used to replace | 211 | * Old names for the 32-bit time_t interfaces, these will be removed |
187 | * the compat code so it can be shared between 32-bit and 64-bit builds | 212 | * when everything uses the new names. |
188 | * both of which provide compatibility with old 32-bit tasks. | ||
189 | */ | 213 | */ |
190 | #define old_time32_t compat_time_t | 214 | #define compat_time_t old_time32_t |
191 | #define old_timeval32 compat_timeval | 215 | #define compat_timeval old_timeval32 |
192 | #define old_timespec32 compat_timespec | 216 | #define compat_timespec old_timespec32 |
193 | #define old_itimerspec32 compat_itimerspec | 217 | #define compat_itimerspec old_itimerspec32 |
194 | #define ns_to_old_timeval32 ns_to_compat_timeval | 218 | #define ns_to_compat_timeval ns_to_old_timeval32 |
195 | #define get_old_itimerspec32 get_compat_itimerspec64 | 219 | #define get_compat_itimerspec64 get_old_itimerspec32 |
196 | #define put_old_itimerspec32 put_compat_itimerspec64 | 220 | #define put_compat_itimerspec64 put_old_itimerspec32 |
197 | #define get_old_timespec32 compat_get_timespec64 | 221 | #define compat_get_timespec64 get_old_timespec32 |
198 | #define put_old_timespec32 compat_put_timespec64 | 222 | #define compat_put_timespec64 put_old_timespec32 |
199 | 223 | ||
200 | #endif | 224 | #endif |
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index c0d58f390c3b..db7833370351 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
@@ -1461,10 +1461,10 @@ COMPAT_SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, | |||
1461 | #endif | 1461 | #endif |
1462 | 1462 | ||
1463 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1463 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1464 | static int compat_prepare_timeout(const struct compat_timespec __user *p, | 1464 | static int compat_prepare_timeout(const struct old_timespec32 __user *p, |
1465 | struct timespec64 *ts) | 1465 | struct timespec64 *ts) |
1466 | { | 1466 | { |
1467 | if (compat_get_timespec64(ts, p)) | 1467 | if (get_old_timespec32(ts, p)) |
1468 | return -EFAULT; | 1468 | return -EFAULT; |
1469 | if (!timespec64_valid(ts)) | 1469 | if (!timespec64_valid(ts)) |
1470 | return -EINVAL; | 1470 | return -EINVAL; |
@@ -1474,7 +1474,7 @@ static int compat_prepare_timeout(const struct compat_timespec __user *p, | |||
1474 | COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, | 1474 | COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, |
1475 | const char __user *, u_msg_ptr, | 1475 | const char __user *, u_msg_ptr, |
1476 | compat_size_t, msg_len, unsigned int, msg_prio, | 1476 | compat_size_t, msg_len, unsigned int, msg_prio, |
1477 | const struct compat_timespec __user *, u_abs_timeout) | 1477 | const struct old_timespec32 __user *, u_abs_timeout) |
1478 | { | 1478 | { |
1479 | struct timespec64 ts, *p = NULL; | 1479 | struct timespec64 ts, *p = NULL; |
1480 | if (u_abs_timeout) { | 1480 | if (u_abs_timeout) { |
@@ -1489,7 +1489,7 @@ COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, | |||
1489 | COMPAT_SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, | 1489 | COMPAT_SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, |
1490 | char __user *, u_msg_ptr, | 1490 | char __user *, u_msg_ptr, |
1491 | compat_size_t, msg_len, unsigned int __user *, u_msg_prio, | 1491 | compat_size_t, msg_len, unsigned int __user *, u_msg_prio, |
1492 | const struct compat_timespec __user *, u_abs_timeout) | 1492 | const struct old_timespec32 __user *, u_abs_timeout) |
1493 | { | 1493 | { |
1494 | struct timespec64 ts, *p = NULL; | 1494 | struct timespec64 ts, *p = NULL; |
1495 | if (u_abs_timeout) { | 1495 | if (u_abs_timeout) { |
@@ -622,9 +622,9 @@ struct compat_msqid_ds { | |||
622 | struct compat_ipc_perm msg_perm; | 622 | struct compat_ipc_perm msg_perm; |
623 | compat_uptr_t msg_first; | 623 | compat_uptr_t msg_first; |
624 | compat_uptr_t msg_last; | 624 | compat_uptr_t msg_last; |
625 | compat_time_t msg_stime; | 625 | old_time32_t msg_stime; |
626 | compat_time_t msg_rtime; | 626 | old_time32_t msg_rtime; |
627 | compat_time_t msg_ctime; | 627 | old_time32_t msg_ctime; |
628 | compat_ulong_t msg_lcbytes; | 628 | compat_ulong_t msg_lcbytes; |
629 | compat_ulong_t msg_lqbytes; | 629 | compat_ulong_t msg_lqbytes; |
630 | unsigned short msg_cbytes; | 630 | unsigned short msg_cbytes; |
@@ -1698,8 +1698,8 @@ SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, cmd, unsigned long, arg) | |||
1698 | 1698 | ||
1699 | struct compat_semid_ds { | 1699 | struct compat_semid_ds { |
1700 | struct compat_ipc_perm sem_perm; | 1700 | struct compat_ipc_perm sem_perm; |
1701 | compat_time_t sem_otime; | 1701 | old_time32_t sem_otime; |
1702 | compat_time_t sem_ctime; | 1702 | old_time32_t sem_ctime; |
1703 | compat_uptr_t sem_base; | 1703 | compat_uptr_t sem_base; |
1704 | compat_uptr_t sem_pending; | 1704 | compat_uptr_t sem_pending; |
1705 | compat_uptr_t sem_pending_last; | 1705 | compat_uptr_t sem_pending_last; |
@@ -2214,11 +2214,11 @@ SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops, | |||
2214 | #ifdef CONFIG_COMPAT_32BIT_TIME | 2214 | #ifdef CONFIG_COMPAT_32BIT_TIME |
2215 | long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems, | 2215 | long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems, |
2216 | unsigned int nsops, | 2216 | unsigned int nsops, |
2217 | const struct compat_timespec __user *timeout) | 2217 | const struct old_timespec32 __user *timeout) |
2218 | { | 2218 | { |
2219 | if (timeout) { | 2219 | if (timeout) { |
2220 | struct timespec64 ts; | 2220 | struct timespec64 ts; |
2221 | if (compat_get_timespec64(&ts, timeout)) | 2221 | if (get_old_timespec32(&ts, timeout)) |
2222 | return -EFAULT; | 2222 | return -EFAULT; |
2223 | return do_semtimedop(semid, tsems, nsops, &ts); | 2223 | return do_semtimedop(semid, tsems, nsops, &ts); |
2224 | } | 2224 | } |
@@ -2227,7 +2227,7 @@ long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems, | |||
2227 | 2227 | ||
2228 | COMPAT_SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsems, | 2228 | COMPAT_SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsems, |
2229 | unsigned int, nsops, | 2229 | unsigned int, nsops, |
2230 | const struct compat_timespec __user *, timeout) | 2230 | const struct old_timespec32 __user *, timeout) |
2231 | { | 2231 | { |
2232 | return compat_ksys_semtimedop(semid, tsems, nsops, timeout); | 2232 | return compat_ksys_semtimedop(semid, tsems, nsops, timeout); |
2233 | } | 2233 | } |
@@ -1201,9 +1201,9 @@ SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf) | |||
1201 | struct compat_shmid_ds { | 1201 | struct compat_shmid_ds { |
1202 | struct compat_ipc_perm shm_perm; | 1202 | struct compat_ipc_perm shm_perm; |
1203 | int shm_segsz; | 1203 | int shm_segsz; |
1204 | compat_time_t shm_atime; | 1204 | old_time32_t shm_atime; |
1205 | compat_time_t shm_dtime; | 1205 | old_time32_t shm_dtime; |
1206 | compat_time_t shm_ctime; | 1206 | old_time32_t shm_ctime; |
1207 | compat_ipc_pid_t shm_cpid; | 1207 | compat_ipc_pid_t shm_cpid; |
1208 | compat_ipc_pid_t shm_lpid; | 1208 | compat_ipc_pid_t shm_lpid; |
1209 | unsigned short shm_nattch; | 1209 | unsigned short shm_nattch; |
diff --git a/ipc/syscall.c b/ipc/syscall.c index 65d405f1ba0c..1ac06e3983c0 100644 --- a/ipc/syscall.c +++ b/ipc/syscall.c | |||
@@ -35,7 +35,7 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, | |||
35 | (const struct __kernel_timespec __user *)fifth); | 35 | (const struct __kernel_timespec __user *)fifth); |
36 | else if (IS_ENABLED(CONFIG_COMPAT_32BIT_TIME)) | 36 | else if (IS_ENABLED(CONFIG_COMPAT_32BIT_TIME)) |
37 | return compat_ksys_semtimedop(first, ptr, second, | 37 | return compat_ksys_semtimedop(first, ptr, second, |
38 | (const struct compat_timespec __user *)fifth); | 38 | (const struct old_timespec32 __user *)fifth); |
39 | else | 39 | else |
40 | return -ENOSYS; | 40 | return -ENOSYS; |
41 | 41 | ||
diff --git a/ipc/util.h b/ipc/util.h index 0a159f69b3bb..1ee81bce25e9 100644 --- a/ipc/util.h +++ b/ipc/util.h | |||
@@ -266,7 +266,7 @@ long ksys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf); | |||
266 | /* for CONFIG_ARCH_WANT_OLD_COMPAT_IPC */ | 266 | /* for CONFIG_ARCH_WANT_OLD_COMPAT_IPC */ |
267 | long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems, | 267 | long compat_ksys_semtimedop(int semid, struct sembuf __user *tsems, |
268 | unsigned int nsops, | 268 | unsigned int nsops, |
269 | const struct compat_timespec __user *timeout); | 269 | const struct old_timespec32 __user *timeout); |
270 | #ifdef CONFIG_COMPAT | 270 | #ifdef CONFIG_COMPAT |
271 | long compat_ksys_semctl(int semid, int semnum, int cmd, int arg); | 271 | long compat_ksys_semctl(int semid, int semnum, int cmd, int arg); |
272 | long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr); | 272 | long compat_ksys_msgctl(int msqid, int cmd, void __user *uptr); |
diff --git a/kernel/compat.c b/kernel/compat.c index 8e40efc2928a..089d00d0da9c 100644 --- a/kernel/compat.c +++ b/kernel/compat.c | |||
@@ -93,28 +93,28 @@ int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc) | |||
93 | return 0; | 93 | return 0; |
94 | } | 94 | } |
95 | 95 | ||
96 | static int __compat_get_timeval(struct timeval *tv, const struct compat_timeval __user *ctv) | 96 | static int __compat_get_timeval(struct timeval *tv, const struct old_timeval32 __user *ctv) |
97 | { | 97 | { |
98 | return (!access_ok(VERIFY_READ, ctv, sizeof(*ctv)) || | 98 | return (!access_ok(VERIFY_READ, ctv, sizeof(*ctv)) || |
99 | __get_user(tv->tv_sec, &ctv->tv_sec) || | 99 | __get_user(tv->tv_sec, &ctv->tv_sec) || |
100 | __get_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0; | 100 | __get_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0; |
101 | } | 101 | } |
102 | 102 | ||
103 | static int __compat_put_timeval(const struct timeval *tv, struct compat_timeval __user *ctv) | 103 | static int __compat_put_timeval(const struct timeval *tv, struct old_timeval32 __user *ctv) |
104 | { | 104 | { |
105 | return (!access_ok(VERIFY_WRITE, ctv, sizeof(*ctv)) || | 105 | return (!access_ok(VERIFY_WRITE, ctv, sizeof(*ctv)) || |
106 | __put_user(tv->tv_sec, &ctv->tv_sec) || | 106 | __put_user(tv->tv_sec, &ctv->tv_sec) || |
107 | __put_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0; | 107 | __put_user(tv->tv_usec, &ctv->tv_usec)) ? -EFAULT : 0; |
108 | } | 108 | } |
109 | 109 | ||
110 | static int __compat_get_timespec(struct timespec *ts, const struct compat_timespec __user *cts) | 110 | static int __compat_get_timespec(struct timespec *ts, const struct old_timespec32 __user *cts) |
111 | { | 111 | { |
112 | return (!access_ok(VERIFY_READ, cts, sizeof(*cts)) || | 112 | return (!access_ok(VERIFY_READ, cts, sizeof(*cts)) || |
113 | __get_user(ts->tv_sec, &cts->tv_sec) || | 113 | __get_user(ts->tv_sec, &cts->tv_sec) || |
114 | __get_user(ts->tv_nsec, &cts->tv_nsec)) ? -EFAULT : 0; | 114 | __get_user(ts->tv_nsec, &cts->tv_nsec)) ? -EFAULT : 0; |
115 | } | 115 | } |
116 | 116 | ||
117 | static int __compat_put_timespec(const struct timespec *ts, struct compat_timespec __user *cts) | 117 | static int __compat_put_timespec(const struct timespec *ts, struct old_timespec32 __user *cts) |
118 | { | 118 | { |
119 | return (!access_ok(VERIFY_WRITE, cts, sizeof(*cts)) || | 119 | return (!access_ok(VERIFY_WRITE, cts, sizeof(*cts)) || |
120 | __put_user(ts->tv_sec, &cts->tv_sec) || | 120 | __put_user(ts->tv_sec, &cts->tv_sec) || |
diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c index 83f830acbb5f..410a77a8f6e2 100644 --- a/kernel/futex_compat.c +++ b/kernel/futex_compat.c | |||
@@ -173,7 +173,7 @@ err_unlock: | |||
173 | } | 173 | } |
174 | 174 | ||
175 | COMPAT_SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, | 175 | COMPAT_SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, |
176 | struct compat_timespec __user *, utime, u32 __user *, uaddr2, | 176 | struct old_timespec32 __user *, utime, u32 __user *, uaddr2, |
177 | u32, val3) | 177 | u32, val3) |
178 | { | 178 | { |
179 | struct timespec ts; | 179 | struct timespec ts; |
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 625bc9897f62..8287b75ed961 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -5257,13 +5257,13 @@ SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid, | |||
5257 | #ifdef CONFIG_COMPAT | 5257 | #ifdef CONFIG_COMPAT |
5258 | COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval, | 5258 | COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval, |
5259 | compat_pid_t, pid, | 5259 | compat_pid_t, pid, |
5260 | struct compat_timespec __user *, interval) | 5260 | struct old_timespec32 __user *, interval) |
5261 | { | 5261 | { |
5262 | struct timespec64 t; | 5262 | struct timespec64 t; |
5263 | int retval = sched_rr_get_interval(pid, &t); | 5263 | int retval = sched_rr_get_interval(pid, &t); |
5264 | 5264 | ||
5265 | if (retval == 0) | 5265 | if (retval == 0) |
5266 | retval = compat_put_timespec64(&t, interval); | 5266 | retval = put_old_timespec32(&t, interval); |
5267 | return retval; | 5267 | return retval; |
5268 | } | 5268 | } |
5269 | #endif | 5269 | #endif |
diff --git a/kernel/signal.c b/kernel/signal.c index 5843c541fda9..a4db724e14c1 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -3173,7 +3173,7 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | |||
3173 | #ifdef CONFIG_COMPAT | 3173 | #ifdef CONFIG_COMPAT |
3174 | COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, | 3174 | COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, |
3175 | struct compat_siginfo __user *, uinfo, | 3175 | struct compat_siginfo __user *, uinfo, |
3176 | struct compat_timespec __user *, uts, compat_size_t, sigsetsize) | 3176 | struct old_timespec32 __user *, uts, compat_size_t, sigsetsize) |
3177 | { | 3177 | { |
3178 | sigset_t s; | 3178 | sigset_t s; |
3179 | struct timespec t; | 3179 | struct timespec t; |
diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c index e1a549c9e399..9cdd74bd2d27 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c | |||
@@ -1660,7 +1660,7 @@ int nanosleep_copyout(struct restart_block *restart, struct timespec64 *ts) | |||
1660 | switch(restart->nanosleep.type) { | 1660 | switch(restart->nanosleep.type) { |
1661 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1661 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1662 | case TT_COMPAT: | 1662 | case TT_COMPAT: |
1663 | if (compat_put_timespec64(ts, restart->nanosleep.compat_rmtp)) | 1663 | if (put_old_timespec32(ts, restart->nanosleep.compat_rmtp)) |
1664 | return -EFAULT; | 1664 | return -EFAULT; |
1665 | break; | 1665 | break; |
1666 | #endif | 1666 | #endif |
@@ -1780,12 +1780,12 @@ SYSCALL_DEFINE2(nanosleep, struct __kernel_timespec __user *, rqtp, | |||
1780 | 1780 | ||
1781 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1781 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1782 | 1782 | ||
1783 | COMPAT_SYSCALL_DEFINE2(nanosleep, struct compat_timespec __user *, rqtp, | 1783 | COMPAT_SYSCALL_DEFINE2(nanosleep, struct old_timespec32 __user *, rqtp, |
1784 | struct compat_timespec __user *, rmtp) | 1784 | struct old_timespec32 __user *, rmtp) |
1785 | { | 1785 | { |
1786 | struct timespec64 tu; | 1786 | struct timespec64 tu; |
1787 | 1787 | ||
1788 | if (compat_get_timespec64(&tu, rqtp)) | 1788 | if (get_old_timespec32(&tu, rqtp)) |
1789 | return -EFAULT; | 1789 | return -EFAULT; |
1790 | 1790 | ||
1791 | if (!timespec64_valid(&tu)) | 1791 | if (!timespec64_valid(&tu)) |
diff --git a/kernel/time/posix-stubs.c b/kernel/time/posix-stubs.c index 2c6847d5d69b..989ccf028bde 100644 --- a/kernel/time/posix-stubs.c +++ b/kernel/time/posix-stubs.c | |||
@@ -162,20 +162,20 @@ COMPAT_SYS_NI(setitimer); | |||
162 | 162 | ||
163 | #ifdef CONFIG_COMPAT_32BIT_TIME | 163 | #ifdef CONFIG_COMPAT_32BIT_TIME |
164 | COMPAT_SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, | 164 | COMPAT_SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, |
165 | struct compat_timespec __user *, tp) | 165 | struct old_timespec32 __user *, tp) |
166 | { | 166 | { |
167 | struct timespec64 new_tp; | 167 | struct timespec64 new_tp; |
168 | 168 | ||
169 | if (which_clock != CLOCK_REALTIME) | 169 | if (which_clock != CLOCK_REALTIME) |
170 | return -EINVAL; | 170 | return -EINVAL; |
171 | if (compat_get_timespec64(&new_tp, tp)) | 171 | if (get_old_timespec32(&new_tp, tp)) |
172 | return -EFAULT; | 172 | return -EFAULT; |
173 | 173 | ||
174 | return do_sys_settimeofday64(&new_tp, NULL); | 174 | return do_sys_settimeofday64(&new_tp, NULL); |
175 | } | 175 | } |
176 | 176 | ||
177 | COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, | 177 | COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, |
178 | struct compat_timespec __user *, tp) | 178 | struct old_timespec32 __user *, tp) |
179 | { | 179 | { |
180 | int ret; | 180 | int ret; |
181 | struct timespec64 kernel_tp; | 181 | struct timespec64 kernel_tp; |
@@ -184,13 +184,13 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, | |||
184 | if (ret) | 184 | if (ret) |
185 | return ret; | 185 | return ret; |
186 | 186 | ||
187 | if (compat_put_timespec64(&kernel_tp, tp)) | 187 | if (put_old_timespec32(&kernel_tp, tp)) |
188 | return -EFAULT; | 188 | return -EFAULT; |
189 | return 0; | 189 | return 0; |
190 | } | 190 | } |
191 | 191 | ||
192 | COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, | 192 | COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, |
193 | struct compat_timespec __user *, tp) | 193 | struct old_timespec32 __user *, tp) |
194 | { | 194 | { |
195 | struct timespec64 rtn_tp = { | 195 | struct timespec64 rtn_tp = { |
196 | .tv_sec = 0, | 196 | .tv_sec = 0, |
@@ -201,7 +201,7 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, | |||
201 | case CLOCK_REALTIME: | 201 | case CLOCK_REALTIME: |
202 | case CLOCK_MONOTONIC: | 202 | case CLOCK_MONOTONIC: |
203 | case CLOCK_BOOTTIME: | 203 | case CLOCK_BOOTTIME: |
204 | if (compat_put_timespec64(&rtn_tp, tp)) | 204 | if (put_old_timespec32(&rtn_tp, tp)) |
205 | return -EFAULT; | 205 | return -EFAULT; |
206 | return 0; | 206 | return 0; |
207 | default: | 207 | default: |
@@ -210,8 +210,8 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, | |||
210 | } | 210 | } |
211 | 211 | ||
212 | COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, | 212 | COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, |
213 | struct compat_timespec __user *, rqtp, | 213 | struct old_timespec32 __user *, rqtp, |
214 | struct compat_timespec __user *, rmtp) | 214 | struct old_timespec32 __user *, rmtp) |
215 | { | 215 | { |
216 | struct timespec64 t; | 216 | struct timespec64 t; |
217 | 217 | ||
@@ -224,7 +224,7 @@ COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, | |||
224 | return -EINVAL; | 224 | return -EINVAL; |
225 | } | 225 | } |
226 | 226 | ||
227 | if (compat_get_timespec64(&t, rqtp)) | 227 | if (get_old_timespec32(&t, rqtp)) |
228 | return -EFAULT; | 228 | return -EFAULT; |
229 | if (!timespec64_valid(&t)) | 229 | if (!timespec64_valid(&t)) |
230 | return -EINVAL; | 230 | return -EINVAL; |
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c index 4b9127e95430..3e71921668ba 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c | |||
@@ -755,13 +755,13 @@ SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id, | |||
755 | #ifdef CONFIG_COMPAT_32BIT_TIME | 755 | #ifdef CONFIG_COMPAT_32BIT_TIME |
756 | 756 | ||
757 | COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id, | 757 | COMPAT_SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id, |
758 | struct compat_itimerspec __user *, setting) | 758 | struct old_itimerspec32 __user *, setting) |
759 | { | 759 | { |
760 | struct itimerspec64 cur_setting; | 760 | struct itimerspec64 cur_setting; |
761 | 761 | ||
762 | int ret = do_timer_gettime(timer_id, &cur_setting); | 762 | int ret = do_timer_gettime(timer_id, &cur_setting); |
763 | if (!ret) { | 763 | if (!ret) { |
764 | if (put_compat_itimerspec64(&cur_setting, setting)) | 764 | if (put_old_itimerspec32(&cur_setting, setting)) |
765 | ret = -EFAULT; | 765 | ret = -EFAULT; |
766 | } | 766 | } |
767 | return ret; | 767 | return ret; |
@@ -928,8 +928,8 @@ SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, | |||
928 | 928 | ||
929 | #ifdef CONFIG_COMPAT_32BIT_TIME | 929 | #ifdef CONFIG_COMPAT_32BIT_TIME |
930 | COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, | 930 | COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, |
931 | struct compat_itimerspec __user *, new, | 931 | struct old_itimerspec32 __user *, new, |
932 | struct compat_itimerspec __user *, old) | 932 | struct old_itimerspec32 __user *, old) |
933 | { | 933 | { |
934 | struct itimerspec64 new_spec, old_spec; | 934 | struct itimerspec64 new_spec, old_spec; |
935 | struct itimerspec64 *rtn = old ? &old_spec : NULL; | 935 | struct itimerspec64 *rtn = old ? &old_spec : NULL; |
@@ -937,12 +937,12 @@ COMPAT_SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, | |||
937 | 937 | ||
938 | if (!new) | 938 | if (!new) |
939 | return -EINVAL; | 939 | return -EINVAL; |
940 | if (get_compat_itimerspec64(&new_spec, new)) | 940 | if (get_old_itimerspec32(&new_spec, new)) |
941 | return -EFAULT; | 941 | return -EFAULT; |
942 | 942 | ||
943 | error = do_timer_settime(timer_id, flags, &new_spec, rtn); | 943 | error = do_timer_settime(timer_id, flags, &new_spec, rtn); |
944 | if (!error && old) { | 944 | if (!error && old) { |
945 | if (put_compat_itimerspec64(&old_spec, old)) | 945 | if (put_old_itimerspec32(&old_spec, old)) |
946 | error = -EFAULT; | 946 | error = -EFAULT; |
947 | } | 947 | } |
948 | return error; | 948 | return error; |
@@ -1115,7 +1115,7 @@ SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock, | |||
1115 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1115 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1116 | 1116 | ||
1117 | COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock, | 1117 | COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock, |
1118 | struct compat_timespec __user *, tp) | 1118 | struct old_timespec32 __user *, tp) |
1119 | { | 1119 | { |
1120 | const struct k_clock *kc = clockid_to_kclock(which_clock); | 1120 | const struct k_clock *kc = clockid_to_kclock(which_clock); |
1121 | struct timespec64 ts; | 1121 | struct timespec64 ts; |
@@ -1123,14 +1123,14 @@ COMPAT_SYSCALL_DEFINE2(clock_settime, clockid_t, which_clock, | |||
1123 | if (!kc || !kc->clock_set) | 1123 | if (!kc || !kc->clock_set) |
1124 | return -EINVAL; | 1124 | return -EINVAL; |
1125 | 1125 | ||
1126 | if (compat_get_timespec64(&ts, tp)) | 1126 | if (get_old_timespec32(&ts, tp)) |
1127 | return -EFAULT; | 1127 | return -EFAULT; |
1128 | 1128 | ||
1129 | return kc->clock_set(which_clock, &ts); | 1129 | return kc->clock_set(which_clock, &ts); |
1130 | } | 1130 | } |
1131 | 1131 | ||
1132 | COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, | 1132 | COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, |
1133 | struct compat_timespec __user *, tp) | 1133 | struct old_timespec32 __user *, tp) |
1134 | { | 1134 | { |
1135 | const struct k_clock *kc = clockid_to_kclock(which_clock); | 1135 | const struct k_clock *kc = clockid_to_kclock(which_clock); |
1136 | struct timespec64 ts; | 1136 | struct timespec64 ts; |
@@ -1141,7 +1141,7 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock, | |||
1141 | 1141 | ||
1142 | err = kc->clock_get(which_clock, &ts); | 1142 | err = kc->clock_get(which_clock, &ts); |
1143 | 1143 | ||
1144 | if (!err && compat_put_timespec64(&ts, tp)) | 1144 | if (!err && put_old_timespec32(&ts, tp)) |
1145 | err = -EFAULT; | 1145 | err = -EFAULT; |
1146 | 1146 | ||
1147 | return err; | 1147 | return err; |
@@ -1180,7 +1180,7 @@ COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock, | |||
1180 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1180 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1181 | 1181 | ||
1182 | COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, | 1182 | COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, |
1183 | struct compat_timespec __user *, tp) | 1183 | struct old_timespec32 __user *, tp) |
1184 | { | 1184 | { |
1185 | const struct k_clock *kc = clockid_to_kclock(which_clock); | 1185 | const struct k_clock *kc = clockid_to_kclock(which_clock); |
1186 | struct timespec64 ts; | 1186 | struct timespec64 ts; |
@@ -1190,7 +1190,7 @@ COMPAT_SYSCALL_DEFINE2(clock_getres, clockid_t, which_clock, | |||
1190 | return -EINVAL; | 1190 | return -EINVAL; |
1191 | 1191 | ||
1192 | err = kc->clock_getres(which_clock, &ts); | 1192 | err = kc->clock_getres(which_clock, &ts); |
1193 | if (!err && tp && compat_put_timespec64(&ts, tp)) | 1193 | if (!err && tp && put_old_timespec32(&ts, tp)) |
1194 | return -EFAULT; | 1194 | return -EFAULT; |
1195 | 1195 | ||
1196 | return err; | 1196 | return err; |
@@ -1237,8 +1237,8 @@ SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags, | |||
1237 | #ifdef CONFIG_COMPAT_32BIT_TIME | 1237 | #ifdef CONFIG_COMPAT_32BIT_TIME |
1238 | 1238 | ||
1239 | COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, | 1239 | COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, |
1240 | struct compat_timespec __user *, rqtp, | 1240 | struct old_timespec32 __user *, rqtp, |
1241 | struct compat_timespec __user *, rmtp) | 1241 | struct old_timespec32 __user *, rmtp) |
1242 | { | 1242 | { |
1243 | const struct k_clock *kc = clockid_to_kclock(which_clock); | 1243 | const struct k_clock *kc = clockid_to_kclock(which_clock); |
1244 | struct timespec64 t; | 1244 | struct timespec64 t; |
@@ -1248,7 +1248,7 @@ COMPAT_SYSCALL_DEFINE4(clock_nanosleep, clockid_t, which_clock, int, flags, | |||
1248 | if (!kc->nsleep) | 1248 | if (!kc->nsleep) |
1249 | return -EOPNOTSUPP; | 1249 | return -EOPNOTSUPP; |
1250 | 1250 | ||
1251 | if (compat_get_timespec64(&t, rqtp)) | 1251 | if (get_old_timespec32(&t, rqtp)) |
1252 | return -EFAULT; | 1252 | return -EFAULT; |
1253 | 1253 | ||
1254 | if (!timespec64_valid(&t)) | 1254 | if (!timespec64_valid(&t)) |
diff --git a/kernel/time/time.c b/kernel/time/time.c index de332250d6fa..f1983f468fe3 100644 --- a/kernel/time/time.c +++ b/kernel/time/time.c | |||
@@ -104,12 +104,12 @@ SYSCALL_DEFINE1(stime, time_t __user *, tptr) | |||
104 | #ifdef CONFIG_COMPAT | 104 | #ifdef CONFIG_COMPAT |
105 | #ifdef __ARCH_WANT_COMPAT_SYS_TIME | 105 | #ifdef __ARCH_WANT_COMPAT_SYS_TIME |
106 | 106 | ||
107 | /* compat_time_t is a 32 bit "long" and needs to get converted. */ | 107 | /* old_time32_t is a 32 bit "long" and needs to get converted. */ |
108 | COMPAT_SYSCALL_DEFINE1(time, compat_time_t __user *, tloc) | 108 | COMPAT_SYSCALL_DEFINE1(time, old_time32_t __user *, tloc) |
109 | { | 109 | { |
110 | compat_time_t i; | 110 | old_time32_t i; |
111 | 111 | ||
112 | i = (compat_time_t)ktime_get_real_seconds(); | 112 | i = (old_time32_t)ktime_get_real_seconds(); |
113 | 113 | ||
114 | if (tloc) { | 114 | if (tloc) { |
115 | if (put_user(i,tloc)) | 115 | if (put_user(i,tloc)) |
@@ -119,7 +119,7 @@ COMPAT_SYSCALL_DEFINE1(time, compat_time_t __user *, tloc) | |||
119 | return i; | 119 | return i; |
120 | } | 120 | } |
121 | 121 | ||
122 | COMPAT_SYSCALL_DEFINE1(stime, compat_time_t __user *, tptr) | 122 | COMPAT_SYSCALL_DEFINE1(stime, old_time32_t __user *, tptr) |
123 | { | 123 | { |
124 | struct timespec64 tv; | 124 | struct timespec64 tv; |
125 | int err; | 125 | int err; |
@@ -225,7 +225,7 @@ SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv, | |||
225 | } | 225 | } |
226 | 226 | ||
227 | #ifdef CONFIG_COMPAT | 227 | #ifdef CONFIG_COMPAT |
228 | COMPAT_SYSCALL_DEFINE2(gettimeofday, struct compat_timeval __user *, tv, | 228 | COMPAT_SYSCALL_DEFINE2(gettimeofday, struct old_timeval32 __user *, tv, |
229 | struct timezone __user *, tz) | 229 | struct timezone __user *, tz) |
230 | { | 230 | { |
231 | if (tv) { | 231 | if (tv) { |
@@ -244,7 +244,7 @@ COMPAT_SYSCALL_DEFINE2(gettimeofday, struct compat_timeval __user *, tv, | |||
244 | return 0; | 244 | return 0; |
245 | } | 245 | } |
246 | 246 | ||
247 | COMPAT_SYSCALL_DEFINE2(settimeofday, struct compat_timeval __user *, tv, | 247 | COMPAT_SYSCALL_DEFINE2(settimeofday, struct old_timeval32 __user *, tv, |
248 | struct timezone __user *, tz) | 248 | struct timezone __user *, tz) |
249 | { | 249 | { |
250 | struct timespec64 new_ts; | 250 | struct timespec64 new_ts; |
@@ -863,10 +863,10 @@ int put_timespec64(const struct timespec64 *ts, | |||
863 | } | 863 | } |
864 | EXPORT_SYMBOL_GPL(put_timespec64); | 864 | EXPORT_SYMBOL_GPL(put_timespec64); |
865 | 865 | ||
866 | int __compat_get_timespec64(struct timespec64 *ts64, | 866 | int __get_old_timespec32(struct timespec64 *ts64, |
867 | const struct compat_timespec __user *cts) | 867 | const struct old_timespec32 __user *cts) |
868 | { | 868 | { |
869 | struct compat_timespec ts; | 869 | struct old_timespec32 ts; |
870 | int ret; | 870 | int ret; |
871 | 871 | ||
872 | ret = copy_from_user(&ts, cts, sizeof(ts)); | 872 | ret = copy_from_user(&ts, cts, sizeof(ts)); |
@@ -879,33 +879,33 @@ int __compat_get_timespec64(struct timespec64 *ts64, | |||
879 | return 0; | 879 | return 0; |
880 | } | 880 | } |
881 | 881 | ||
882 | int __compat_put_timespec64(const struct timespec64 *ts64, | 882 | int __put_old_timespec32(const struct timespec64 *ts64, |
883 | struct compat_timespec __user *cts) | 883 | struct old_timespec32 __user *cts) |
884 | { | 884 | { |
885 | struct compat_timespec ts = { | 885 | struct old_timespec32 ts = { |
886 | .tv_sec = ts64->tv_sec, | 886 | .tv_sec = ts64->tv_sec, |
887 | .tv_nsec = ts64->tv_nsec | 887 | .tv_nsec = ts64->tv_nsec |
888 | }; | 888 | }; |
889 | return copy_to_user(cts, &ts, sizeof(ts)) ? -EFAULT : 0; | 889 | return copy_to_user(cts, &ts, sizeof(ts)) ? -EFAULT : 0; |
890 | } | 890 | } |
891 | 891 | ||
892 | int compat_get_timespec64(struct timespec64 *ts, const void __user *uts) | 892 | int get_old_timespec32(struct timespec64 *ts, const void __user *uts) |
893 | { | 893 | { |
894 | if (COMPAT_USE_64BIT_TIME) | 894 | if (COMPAT_USE_64BIT_TIME) |
895 | return copy_from_user(ts, uts, sizeof(*ts)) ? -EFAULT : 0; | 895 | return copy_from_user(ts, uts, sizeof(*ts)) ? -EFAULT : 0; |
896 | else | 896 | else |
897 | return __compat_get_timespec64(ts, uts); | 897 | return __get_old_timespec32(ts, uts); |
898 | } | 898 | } |
899 | EXPORT_SYMBOL_GPL(compat_get_timespec64); | 899 | EXPORT_SYMBOL_GPL(get_old_timespec32); |
900 | 900 | ||
901 | int compat_put_timespec64(const struct timespec64 *ts, void __user *uts) | 901 | int put_old_timespec32(const struct timespec64 *ts, void __user *uts) |
902 | { | 902 | { |
903 | if (COMPAT_USE_64BIT_TIME) | 903 | if (COMPAT_USE_64BIT_TIME) |
904 | return copy_to_user(uts, ts, sizeof(*ts)) ? -EFAULT : 0; | 904 | return copy_to_user(uts, ts, sizeof(*ts)) ? -EFAULT : 0; |
905 | else | 905 | else |
906 | return __compat_put_timespec64(ts, uts); | 906 | return __put_old_timespec32(ts, uts); |
907 | } | 907 | } |
908 | EXPORT_SYMBOL_GPL(compat_put_timespec64); | 908 | EXPORT_SYMBOL_GPL(put_old_timespec32); |
909 | 909 | ||
910 | int get_itimerspec64(struct itimerspec64 *it, | 910 | int get_itimerspec64(struct itimerspec64 *it, |
911 | const struct __kernel_itimerspec __user *uit) | 911 | const struct __kernel_itimerspec __user *uit) |
@@ -937,23 +937,23 @@ int put_itimerspec64(const struct itimerspec64 *it, | |||
937 | } | 937 | } |
938 | EXPORT_SYMBOL_GPL(put_itimerspec64); | 938 | EXPORT_SYMBOL_GPL(put_itimerspec64); |
939 | 939 | ||
940 | int get_compat_itimerspec64(struct itimerspec64 *its, | 940 | int get_old_itimerspec32(struct itimerspec64 *its, |
941 | const struct compat_itimerspec __user *uits) | 941 | const struct old_itimerspec32 __user *uits) |
942 | { | 942 | { |
943 | 943 | ||
944 | if (__compat_get_timespec64(&its->it_interval, &uits->it_interval) || | 944 | if (__get_old_timespec32(&its->it_interval, &uits->it_interval) || |
945 | __compat_get_timespec64(&its->it_value, &uits->it_value)) | 945 | __get_old_timespec32(&its->it_value, &uits->it_value)) |
946 | return -EFAULT; | 946 | return -EFAULT; |
947 | return 0; | 947 | return 0; |
948 | } | 948 | } |
949 | EXPORT_SYMBOL_GPL(get_compat_itimerspec64); | 949 | EXPORT_SYMBOL_GPL(get_old_itimerspec32); |
950 | 950 | ||
951 | int put_compat_itimerspec64(const struct itimerspec64 *its, | 951 | int put_old_itimerspec32(const struct itimerspec64 *its, |
952 | struct compat_itimerspec __user *uits) | 952 | struct old_itimerspec32 __user *uits) |
953 | { | 953 | { |
954 | if (__compat_put_timespec64(&its->it_interval, &uits->it_interval) || | 954 | if (__put_old_timespec32(&its->it_interval, &uits->it_interval) || |
955 | __compat_put_timespec64(&its->it_value, &uits->it_value)) | 955 | __put_old_timespec32(&its->it_value, &uits->it_value)) |
956 | return -EFAULT; | 956 | return -EFAULT; |
957 | return 0; | 957 | return 0; |
958 | } | 958 | } |
959 | EXPORT_SYMBOL_GPL(put_compat_itimerspec64); | 959 | EXPORT_SYMBOL_GPL(put_old_itimerspec32); |
diff --git a/net/compat.c b/net/compat.c index 3b2105f6549d..2ef160876bc1 100644 --- a/net/compat.c +++ b/net/compat.c | |||
@@ -812,7 +812,7 @@ COMPAT_SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, buf, compat_size_t, len | |||
812 | 812 | ||
813 | static int __compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, | 813 | static int __compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, |
814 | unsigned int vlen, unsigned int flags, | 814 | unsigned int vlen, unsigned int flags, |
815 | struct compat_timespec __user *timeout) | 815 | struct old_timespec32 __user *timeout) |
816 | { | 816 | { |
817 | int datagrams; | 817 | int datagrams; |
818 | struct timespec ktspec; | 818 | struct timespec ktspec; |
@@ -834,7 +834,7 @@ static int __compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, | |||
834 | 834 | ||
835 | COMPAT_SYSCALL_DEFINE5(recvmmsg, int, fd, struct compat_mmsghdr __user *, mmsg, | 835 | COMPAT_SYSCALL_DEFINE5(recvmmsg, int, fd, struct compat_mmsghdr __user *, mmsg, |
836 | unsigned int, vlen, unsigned int, flags, | 836 | unsigned int, vlen, unsigned int, flags, |
837 | struct compat_timespec __user *, timeout) | 837 | struct old_timespec32 __user *, timeout) |
838 | { | 838 | { |
839 | return __compat_sys_recvmmsg(fd, mmsg, vlen, flags, timeout); | 839 | return __compat_sys_recvmmsg(fd, mmsg, vlen, flags, timeout); |
840 | } | 840 | } |