diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/audit.h | 2 | ||||
-rw-r--r-- | kernel/auditsc.c | 12 | ||||
-rw-r--r-- | kernel/compat.c | 23 |
3 files changed, 7 insertions, 30 deletions
diff --git a/kernel/audit.h b/kernel/audit.h index b331d9b83f63..9b110ae17ee3 100644 --- a/kernel/audit.h +++ b/kernel/audit.h | |||
@@ -182,7 +182,7 @@ struct audit_context { | |||
182 | mqd_t mqdes; | 182 | mqd_t mqdes; |
183 | size_t msg_len; | 183 | size_t msg_len; |
184 | unsigned int msg_prio; | 184 | unsigned int msg_prio; |
185 | struct timespec abs_timeout; | 185 | struct timespec64 abs_timeout; |
186 | } mq_sendrecv; | 186 | } mq_sendrecv; |
187 | struct { | 187 | struct { |
188 | int oflag; | 188 | int oflag; |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index aac1a41f82bd..ecc23e25c9eb 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -1235,11 +1235,11 @@ static void show_special(struct audit_context *context, int *call_panic) | |||
1235 | case AUDIT_MQ_SENDRECV: | 1235 | case AUDIT_MQ_SENDRECV: |
1236 | audit_log_format(ab, | 1236 | audit_log_format(ab, |
1237 | "mqdes=%d msg_len=%zd msg_prio=%u " | 1237 | "mqdes=%d msg_len=%zd msg_prio=%u " |
1238 | "abs_timeout_sec=%ld abs_timeout_nsec=%ld", | 1238 | "abs_timeout_sec=%lld abs_timeout_nsec=%ld", |
1239 | context->mq_sendrecv.mqdes, | 1239 | context->mq_sendrecv.mqdes, |
1240 | context->mq_sendrecv.msg_len, | 1240 | context->mq_sendrecv.msg_len, |
1241 | context->mq_sendrecv.msg_prio, | 1241 | context->mq_sendrecv.msg_prio, |
1242 | context->mq_sendrecv.abs_timeout.tv_sec, | 1242 | (long long) context->mq_sendrecv.abs_timeout.tv_sec, |
1243 | context->mq_sendrecv.abs_timeout.tv_nsec); | 1243 | context->mq_sendrecv.abs_timeout.tv_nsec); |
1244 | break; | 1244 | break; |
1245 | case AUDIT_MQ_NOTIFY: | 1245 | case AUDIT_MQ_NOTIFY: |
@@ -2083,15 +2083,15 @@ void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr) | |||
2083 | * | 2083 | * |
2084 | */ | 2084 | */ |
2085 | void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, | 2085 | void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, |
2086 | const struct timespec *abs_timeout) | 2086 | const struct timespec64 *abs_timeout) |
2087 | { | 2087 | { |
2088 | struct audit_context *context = current->audit_context; | 2088 | struct audit_context *context = current->audit_context; |
2089 | struct timespec *p = &context->mq_sendrecv.abs_timeout; | 2089 | struct timespec64 *p = &context->mq_sendrecv.abs_timeout; |
2090 | 2090 | ||
2091 | if (abs_timeout) | 2091 | if (abs_timeout) |
2092 | memcpy(p, abs_timeout, sizeof(struct timespec)); | 2092 | memcpy(p, abs_timeout, sizeof(*p)); |
2093 | else | 2093 | else |
2094 | memset(p, 0, sizeof(struct timespec)); | 2094 | memset(p, 0, sizeof(*p)); |
2095 | 2095 | ||
2096 | context->mq_sendrecv.mqdes = mqdes; | 2096 | context->mq_sendrecv.mqdes = mqdes; |
2097 | context->mq_sendrecv.msg_len = msg_len; | 2097 | context->mq_sendrecv.msg_len = msg_len; |
diff --git a/kernel/compat.c b/kernel/compat.c index 6f0a0e723a06..772e038d04d9 100644 --- a/kernel/compat.c +++ b/kernel/compat.c | |||
@@ -200,29 +200,6 @@ int compat_put_timespec(const struct timespec *ts, void __user *uts) | |||
200 | } | 200 | } |
201 | EXPORT_SYMBOL_GPL(compat_put_timespec); | 201 | EXPORT_SYMBOL_GPL(compat_put_timespec); |
202 | 202 | ||
203 | int compat_convert_timespec(struct timespec __user **kts, | ||
204 | const void __user *cts) | ||
205 | { | ||
206 | struct timespec ts; | ||
207 | struct timespec __user *uts; | ||
208 | |||
209 | if (!cts || COMPAT_USE_64BIT_TIME) { | ||
210 | *kts = (struct timespec __user *)cts; | ||
211 | return 0; | ||
212 | } | ||
213 | |||
214 | uts = compat_alloc_user_space(sizeof(ts)); | ||
215 | if (!uts) | ||
216 | return -EFAULT; | ||
217 | if (compat_get_timespec(&ts, cts)) | ||
218 | return -EFAULT; | ||
219 | if (copy_to_user(uts, &ts, sizeof(ts))) | ||
220 | return -EFAULT; | ||
221 | |||
222 | *kts = uts; | ||
223 | return 0; | ||
224 | } | ||
225 | |||
226 | int get_compat_itimerval(struct itimerval *o, const struct compat_itimerval __user *i) | 203 | int get_compat_itimerval(struct itimerval *o, const struct compat_itimerval __user *i) |
227 | { | 204 | { |
228 | struct compat_itimerval v32; | 205 | struct compat_itimerval v32; |