FAILED: patch "[PATCH] ptp: Fix ptp_kvm_getcrosststamp issue for x86 ptp_kvm" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 773e89ab0056aaa2baa1ffd9f044551654410104 Mon Sep 17 00:00:00 2001
From: Zelin Deng <[email protected]>
Date: Wed, 29 Sep 2021 13:13:49 +0800
Subject: [PATCH] ptp: Fix ptp_kvm_getcrosststamp issue for x86 ptp_kvm
hv_clock is preallocated to have only HVC_BOOT_ARRAY_SIZE (64) elements; if the PTP_SYS_OFFSET_PRECISE ioctl is executed on vCPUs whose index is 64 of higher, retrieving the struct pvclock_vcpu_time_info pointer with "src = &hv_clock[cpu].pvti" will result in an out-of-bounds access and a wild pointer. Change it to "this_cpu_pvti()" which is guaranteed to be valid.
Message-Id: <[email protected]>
drivers/ptp/ptp_kvm_x86.c +2 -7
@@ -15,8 +15,6 @@#include <linux/ptp_clock_kernel.h> #include <linux/ptp_kvm.h> -struct pvclock_vsyscall_time_info *hv_clock; -static phys_addr_t clock_pair_gpa;static struct kvm_clock_pairing clock_pair;
@@ -28,8 +26,7 @@ int kvm_arch_ptp_init(void)return -ENODEV ; clock_pair_gpa =slow_virt_to_phys (&clock_pair); - hv_clock =pvclock_get_pvti_cpu0_va (); -if (!hv_clock) +if (!pvclock_get_pvti_cpu0_va ())return -ENODEV ; ret = kvm_hypercall2(KVM_HC_CLOCK_PAIRING, clock_pair_gpa,
@@ -64,10 +61,8 @@ int kvm_arch_ptp_get_crosststamp(u64 *cycle, struct timespec64 *tspec,struct pvclock_vcpu_time_info *src;unsigned int version;long ret; -int cpu; - cpu =smp_processor_id (); - src = &hv_clock[cpu].pvti; + src =this_cpu_pvti (); do { /*