summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorHungyu Lin <dennylin0707@gmail.com>2026-10-20 16:11:21 +0000
committerThomas Gleixner <tglx@kernel.org>2026-10-25 22:43:19 +0100
commit5b819071e4346256c4edbae5cc2095dff25694fc (patch)
tree97a6461d655523808f51f979e09dd0dbae2cf1c0 /kernel
parentbd091346971c88fccd44afd2547d28366f824572 (diff)
downloadlinux-5b819071e4346256c4edbae5cc2095dff25694fc.tar.gz
linux-5b819071e4346256c4edbae5cc2095dff25694fc.zip
posix-timers: Accept NULL clock_getres() output in stubs
With CONFIG_POSIX_TIMERS disabled, clock_getres() returns -EFAULT for a supported clock when the result pointer is NULL. POSIX permits a NULL result pointer to suppress returning the clock resolution. Only copy the result when a destination is provided, in both the native and time32 stubs. This matches the full POSIX timer implementation and preserves clock ID validation. Fixes: baa73d9e478f ("posix-timers: Make them configurable") Fixes: d822cdcce43f ("posix-timers: Move compat versions of clock_gettime/settime/getres") Signed-off-by: Hungyu Lin <dennylin0707@gmail.com> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20261020161121.85042-1-dennylin0707@gmail.com
Diffstat (limited to 'kernel')
-rw-r--r--kernel/time/posix-stubs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/time/posix-stubs.c b/kernel/time/posix-stubs.c
index 9b6fcb8d85e7..5a27335a917e 100644
--- a/kernel/time/posix-stubs.c
+++ b/kernel/time/posix-stubs.c
@@ -83,7 +83,7 @@ SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock, struct __kernel_time
case CLOCK_REALTIME:
case CLOCK_MONOTONIC:
case CLOCK_BOOTTIME:
- if (put_timespec64(&rtn_tp, tp))
+ if (tp && put_timespec64(&rtn_tp, tp))
return -EFAULT;
return 0;
default:
@@ -166,7 +166,7 @@ SYSCALL_DEFINE2(clock_getres_time32, clockid_t, which_clock,
case CLOCK_REALTIME:
case CLOCK_MONOTONIC:
case CLOCK_BOOTTIME:
- if (put_old_timespec32(&rtn_tp, tp))
+ if (tp && put_old_timespec32(&rtn_tp, tp))
return -EFAULT;
return 0;
default: