Merge branch 'work.ipc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull ipc compat cleanup and 64-bit time_t from Al Viro: "IPC copyin/copyout sanitizing, including 64bit time_t work from Deepa Dinamani" * 'work.ipc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: utimes: Make utimes y2038 safe ipc: shm: Make shmid_kernel timestamps y2038 safe ipc: sem: Make sem_array timestamps y2038 safe ipc: msg: Make msg_queue timestamps y2038 safe ipc: mqueue: Replace timespec with timespec64 ipc: Make sys_semtimedop() y2038 safe get rid of SYSVIPC_COMPAT on ia64 semtimedop(): move compat to native shmat(2): move compat to native msgrcv(2), msgsnd(2): move compat to native ipc(2): move compat to native ipc: make use of compat ipc_perm helpers semctl(): move compat to native semctl(): separate all layout-dependent copyin/copyout msgctl(): move compat to native msgctl(): split the actual work from copyin/copyout ipc: move compat shmctl to native shmctl: split the work from copyin/copyout
This commit is contained in:
commit
cc73fee0ba
19 changed files with 1066 additions and 1217 deletions
|
|
@ -182,7 +182,7 @@ struct audit_context {
|
|||
mqd_t mqdes;
|
||||
size_t msg_len;
|
||||
unsigned int msg_prio;
|
||||
struct timespec abs_timeout;
|
||||
struct timespec64 abs_timeout;
|
||||
} mq_sendrecv;
|
||||
struct {
|
||||
int oflag;
|
||||
|
|
|
|||
|
|
@ -1235,11 +1235,11 @@ static void show_special(struct audit_context *context, int *call_panic)
|
|||
case AUDIT_MQ_SENDRECV:
|
||||
audit_log_format(ab,
|
||||
"mqdes=%d msg_len=%zd msg_prio=%u "
|
||||
"abs_timeout_sec=%ld abs_timeout_nsec=%ld",
|
||||
"abs_timeout_sec=%lld abs_timeout_nsec=%ld",
|
||||
context->mq_sendrecv.mqdes,
|
||||
context->mq_sendrecv.msg_len,
|
||||
context->mq_sendrecv.msg_prio,
|
||||
context->mq_sendrecv.abs_timeout.tv_sec,
|
||||
(long long) context->mq_sendrecv.abs_timeout.tv_sec,
|
||||
context->mq_sendrecv.abs_timeout.tv_nsec);
|
||||
break;
|
||||
case AUDIT_MQ_NOTIFY:
|
||||
|
|
@ -2083,15 +2083,15 @@ void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr)
|
|||
*
|
||||
*/
|
||||
void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio,
|
||||
const struct timespec *abs_timeout)
|
||||
const struct timespec64 *abs_timeout)
|
||||
{
|
||||
struct audit_context *context = current->audit_context;
|
||||
struct timespec *p = &context->mq_sendrecv.abs_timeout;
|
||||
struct timespec64 *p = &context->mq_sendrecv.abs_timeout;
|
||||
|
||||
if (abs_timeout)
|
||||
memcpy(p, abs_timeout, sizeof(struct timespec));
|
||||
memcpy(p, abs_timeout, sizeof(*p));
|
||||
else
|
||||
memset(p, 0, sizeof(struct timespec));
|
||||
memset(p, 0, sizeof(*p));
|
||||
|
||||
context->mq_sendrecv.mqdes = mqdes;
|
||||
context->mq_sendrecv.msg_len = msg_len;
|
||||
|
|
|
|||
|
|
@ -200,29 +200,6 @@ int compat_put_timespec(const struct timespec *ts, void __user *uts)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(compat_put_timespec);
|
||||
|
||||
int compat_convert_timespec(struct timespec __user **kts,
|
||||
const void __user *cts)
|
||||
{
|
||||
struct timespec ts;
|
||||
struct timespec __user *uts;
|
||||
|
||||
if (!cts || COMPAT_USE_64BIT_TIME) {
|
||||
*kts = (struct timespec __user *)cts;
|
||||
return 0;
|
||||
}
|
||||
|
||||
uts = compat_alloc_user_space(sizeof(ts));
|
||||
if (!uts)
|
||||
return -EFAULT;
|
||||
if (compat_get_timespec(&ts, cts))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(uts, &ts, sizeof(ts)))
|
||||
return -EFAULT;
|
||||
|
||||
*kts = uts;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int get_compat_itimerval(struct itimerval *o, const struct compat_itimerval __user *i)
|
||||
{
|
||||
struct compat_itimerval v32;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue