+ Kees Cook, linux-hardening On Tue, Jun 25, 2024 at 08:01:56PM +0100, David Woodhouse wrote: > From: David Woodhouse <dwmw@xxxxxxxxxxxx> > > 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 <dwmw@xxxxxxxxxxxx> ... > 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); ...