On 04/12/15 10:25, Pavel Fedin wrote: > ARM64 CPU has zero register which is read-only, with a value of 0. > However, KVM currently incorrectly recognizes it being SP (because > Rt == 31, and in struct user_pt_regs 'regs' array is followed by SP), > resulting in invalid value being read, or even SP corruption on write. > > The problem has been discovered by performing an operation > > *((volatile int *)reg) = 0; > > which compiles as "str xzr, [xx]", and resulted in strange values being > written. > > v1 => v2: > - Changed type of transfer value to u64 and store it directly in > struct sys_reg_params instead of a pointer > - Use lower_32_bits()/upper_32_bits() where appropriate > - Fixed wrong usage of 'Rt' instead of 'Rt2' in kvm_handle_cp_64(), > overlooked in v1 > - Do not write value back when reading [+Christoffer] Hi Pavel, Thanks a lot for respining this quickly. I just had a few minor comments, so this is almost ready to go. If you can fix that (and assuming nobody has any further objection), we'll try to get this queued ASAP. Cheers, M. -- Jazz is not dead. It just smells funny... -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html