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; |
