Re: [RFC PATCH v2] ptp: Add vDSO-style vmclock support
From: Simon Horman <horms@kernel.org>
Date: 2024-06-30 13:29:06
Also in:
linux-arm-kernel, linux-hardening, linux-rtc, lkml, virtualization
+ Kees Cook, linux-hardening On Tue, Jun 25, 2024 at 08:01:56PM +0100, David Woodhouse wrote:
From: David Woodhouse <redacted> The vmclock "device" provides a shared memory region with precision clock information. By using shared memory, it is safe across Live Migration. Like the KVM PTP clock, this can convert TSC-based cross timestamps into KVM clock values. Unlike the KVM PTP clock, it does so only when such is actually helpful. The memory region of the device is also exposed to userspace so it can be read or memory mapped by application which need reliable notification of clock disruptions. Signed-off-by: David Woodhouse <redacted>
...
quoted hunk ↗ jump to hunk
diff --git a/drivers/ptp/ptp_vmclock.c b/drivers/ptp/ptp_vmclock.c
...
+static int vmclock_probe(struct platform_device *pdev)
+{...
+ /* If there is valid clock information, register a PTP clock */
+ if (st->cs_id) {
+ st->ptp_clock_info = ptp_vmclock_info;
+ strncpy(st->ptp_clock_info.name, st->name, sizeof(st->ptp_clock_info.name));
Hi David,
W=1 allmodconfig builds with gcc-13 flag the following.
Reading the documentation of strncpy() in fortify-string.h,
I wonder if strscpy() would be more appropriate in this case.
In file included from ./include/linux/string.h:374,
from ./include/linux/bitmap.h:13,
from ./include/linux/cpumask.h:13,
from ./arch/x86/include/asm/paravirt.h:21,
from ./arch/x86/include/asm/cpuid.h:62,
from ./arch/x86/include/asm/processor.h:19,
from ./include/linux/sched.h:13,
from ./include/linux/ratelimit.h:6,
from ./include/linux/dev_printk.h:16,
from ./include/linux/device.h:15,
from drivers/ptp/ptp_vmclock.c:8:
In function 'strncpy',
inlined from 'vmclock_probe' at drivers/ptp/ptp_vmclock.c:480:3:
./include/linux/fortify-string.h:125:33: warning: '__builtin_strncpy' specified bound 32 equals destination size [-Wstringop-truncation]
125 | #define __underlying_strncpy __builtin_strncpy
| ^
./include/linux/fortify-string.h:205:16: note: in expansion of macro '__underlying_strncpy'
205 | return __underlying_strncpy(p, q, size);
...