x86: pvclock kvm: align allocation size to page size
Subsystems (3)
To match whats mapped via vsyscalls to userspace.
Reported-by Peter Hurley <[email protected]>
Signed-off-by Marcelo Tosatti <[email protected]>
arch/x86/kernel/kvmclock.c +6 -5
@@ -218,6 +218,9 @@ static void kvm_shutdown(void)void __init kvmclock_init (void ) {unsigned long mem; +int size; + + size =PAGE_ALIGN (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS );if (!kvm_para_available ())return ;
@@ -231,16 +234,14 @@ void __init kvmclock_init(void)printk (KERN_INFO "kvm-clock: Using msrs %x and %x" , msr_kvm_system_time, msr_kvm_wall_clock); - mem =memblock_alloc (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS , -PAGE_SIZE ); + mem =memblock_alloc (size,PAGE_SIZE );if (!mem)return ; hv_clock =__va (mem);if (kvm_register_clock ("boot clock" )) { hv_clock =NULL ; -memblock_free (mem, -sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS ); +memblock_free (mem, size);return ; } pv_time_ops.sched_clock = kvm_clock_read;
@@ -275,7 +276,7 @@ int __init kvm_setup_vsyscall_timeinfo(void)struct pvclock_vcpu_time_info *vcpu_time;unsigned int size; - size =sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS ; + size =PAGE_ALIGN (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS );preempt_disable (); cpu =smp_processor_id ();
Gleb Natapov
Reviewed-byQuoted 6 lines · Marcelo Tosatti
To match whats mapped via vsyscalls to userspace.
Reported-by Peter Hurley <[email protected]>Signed-off-by Marcelo Tosatti <[email protected]>
Reviewed-by Gleb Natapov <[email protected]>
Quoted 35 lines
arch/x86/kernel/kvmclock.c +5
-4@@ -218,6 +218,9 @@ static void kvm_shutdown(void)void __init kvmclock_init (void ) {unsigned long mem; +int size; + + size =PAGE_ALIGN (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS );if (!kvm_para_available ())return ;@@ -231,16 +234,14 @@ void __init kvmclock_init(void)printk (KERN_INFO "kvm-clock: Using msrs %x and %x" , msr_kvm_system_time, msr_kvm_wall_clock); - mem =memblock_alloc (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS , -PAGE_SIZE ); + mem =memblock_alloc (size,PAGE_SIZE );if (!mem)return ; hv_clock =__va (mem);if (kvm_register_clock ("boot clock" )) { hv_clock =NULL ; -memblock_free (mem, -sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS ); +memblock_free (mem, size);return ; } pv_time_ops.sched_clock = kvm_clock_read;
arch/x86/kernel/kvmclock.c int __init kvm_setup_vsyscall_timeinfo(void) · line 282
Quoted 8 lines
arch/x86/kernel/kvmclock.c +1
-1@@ -275,7 +276,7 @@ int __init kvm_setup_vsyscall_timeinfo(void)struct pvclock_vcpu_time_info *vcpu_time;unsigned int size; - size =sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS ; + size =PAGE_ALIGN (sizeof (struct pvclock_vsyscall_time_info )*NR_CPUS );preempt_disable (); cpu =smp_processor_id ();
--
Gleb.