From: Florian Bezdeka <[email protected]> The helper used for copying the timeout values (=mq_fetch_timeout()) was always copying sizeof(struct timespec64) from user to kernel space. For applications with time_t being 4 bytes only (like for native 32 bit applications) that is simply too much.
Signed-off-by: Florian Bezdeka <[email protected]> --- kernel/cobalt/posix/mqueue.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/cobalt/posix/mqueue.c b/kernel/cobalt/posix/mqueue.c index f9044d4d2..dd8acd55b 100644 --- a/kernel/cobalt/posix/mqueue.c +++ b/kernel/cobalt/posix/mqueue.c @@ -886,8 +886,7 @@ COBALT_SYSCALL(mq_getattr, current, static inline int mq_fetch_timeout(struct timespec64 *ts, const void __user *u_ts) { - return u_ts == NULL ? -EFAULT : - cobalt_copy_from_user(ts, u_ts, sizeof(*ts)); + return u_ts == NULL ? -EFAULT : cobalt_get_u_timespec(ts, u_ts); } int __cobalt_mq_timedsend(mqd_t uqd, const void __user *u_buf, size_t len, -- 2.29.2
