[tip: timers/core] timers/itimer: Zero-init old itimerval before copy to userspace
From: tip-bot2 for Jérémy Jean
Date: Tue Aug 11 2026 - 09:54:32 EST
The following commit has been merged into the timers/core branch of tip:
Commit-ID: 18c7d85864e554adc8fad1e8d2e9d2cb6c3911c8
Gitweb: https://git.kernel.org/tip/18c7d85864e554adc8fad1e8d2e9d2cb6c3911c8
Author: Jérémy Jean <Jeremy.Jean@xxxxxxxxxxxxxxxxx>
AuthorDate: Sun, 09 Aug 2026 19:04:16
Committer: Thomas Gleixner <tglx@xxxxxxxxxx>
CommitterDate: Tue, 11 Aug 2026 15:43:12 +02:00
timers/itimer: Zero-init old itimerval before copy to userspace
On native sparc64, struct __kernel_old_timeval contains a four-byte hole
after tv_usec because tv_sec is 64-bit while __kernel_suseconds_t is 32-bit.
put_itimerval() fills only the named fields in a stack-allocated
__kernel_old_itimerval and copies the entire object to userspace, so
getitimer() can expose the two padding holes.
Zero-initialize the aggregate before assigning the fields so implicit
padding is deterministic before it crosses the user/kernel boundary.
Signed-off-by: Jérémy Jean <Jeremy.Jean@xxxxxxxxxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxx>
Assisted-by: Codex:gpt-5
Cc: stable@xxxxxxxxxxxxxxx
Link: https://patch.msgid.link/20260809190428.1523014-1-Jeremy.Jean@xxxxxxxxxxxxxxxxx
---
kernel/time/itimer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/itimer.c b/kernel/time/itimer.c
index 7c6110e..03a32df 100644
--- a/kernel/time/itimer.c
+++ b/kernel/time/itimer.c
@@ -100,7 +100,7 @@ static int do_getitimer(int which, struct itimerspec64 *value)
static int put_itimerval(struct __kernel_old_itimerval __user *o,
const struct itimerspec64 *i)
{
- struct __kernel_old_itimerval v;
+ struct __kernel_old_itimerval v = {};
v.it_interval.tv_sec = i->it_interval.tv_sec;
v.it_interval.tv_usec = i->it_interval.tv_nsec / NSEC_PER_USEC;