2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00

KVM/riscv fixes for 6.17, take #1

- Fix pte settings within kvm_riscv_gstage_ioremap()
 - Fix comments in kvm_riscv_check_vcpu_requests()
 - Fix stack overrun when setting vlenb via ONE_REG
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEZdn75s5e6LHDQ+f/rUjsVaLHLAcFAmixlM4ACgkQrUjsVaLH
 LAfbyw//V5AWOlLdqqYzjZ8jlbemeNjvr03UaWsOwb/IYPkf4h5mbk1v2mBrXp1d
 ZSrswa71kD29tFcD79zdvpo8yBFHHLymhuRns7Ocz1x2n51SluD4Kzq/DRhD11+D
 DFa+vteiC0rNHqfBqq6YIeeHFjD9WEI46JQPS5b7Ri+Rpi3uOHjXTO1qUxlrwCSw
 Yrc89QxBNyPFp1hOa0794452okbdjtGQdWDFhwE9zpQXlsRh3H41p/r3WYZnDZT+
 FdrGKVBCs0/VV7+2uVdr2s7bmhbk9YOWUbFKF8RrkdJMAvQUd/bePduvuaKpJ0ja
 YnQvhx8217nRbTxRt5dGG68my93ne17nSJh7Zp4WNWy3KbZ4upikKl+8YyKjzh8q
 j5lISF1Dj88EgGHDQUQ+HAolJSZEoeAmrmTjyxFTzvseliJEkKYkJy6XTng3uTyX
 vxCvCwLwlt1+COb8DGJf8hI5sxq26isZtC0yA98H6ZCrmCm6Iwlpzn6q4gngyx+l
 Kkuqu9nCOyyo5FT/6K8b5VB+dy0k1LHOddQamkTOeTkMT35AkDPZC/kIWSA8kdPg
 Wcwwb0lKEZYiYFkQDR/4ytTA0kr0pXF7kHqnIWyUOVDR8GhTRmoVCkDBUwVbrdDN
 Q4ebW2nLHPZAdaZxnJGENHR2wOgBLtJQHIfAsaPa8Stf7JKswHw=
 =GMGp
 -----END PGP SIGNATURE-----

Merge tag 'kvm-riscv-fixes-6.17-1' of https://github.com/kvm-riscv/linux into HEAD

KVM/riscv fixes for 6.17, take #1

- Fix pte settings within kvm_riscv_gstage_ioremap()
- Fix comments in kvm_riscv_check_vcpu_requests()
- Fix stack overrun when setting vlenb via ONE_REG
This commit is contained in:
Paolo Bonzini 2025-08-29 12:57:18 -04:00
commit 085e899aa1
3 changed files with 7 additions and 2 deletions

View File

@ -39,6 +39,7 @@ int kvm_riscv_mmu_ioremap(struct kvm *kvm, gpa_t gpa, phys_addr_t hpa,
unsigned long size, bool writable, bool in_atomic)
{
int ret = 0;
pgprot_t prot;
unsigned long pfn;
phys_addr_t addr, end;
struct kvm_mmu_memory_cache pcache = {
@ -55,10 +56,12 @@ int kvm_riscv_mmu_ioremap(struct kvm *kvm, gpa_t gpa, phys_addr_t hpa,
end = (gpa + size + PAGE_SIZE - 1) & PAGE_MASK;
pfn = __phys_to_pfn(hpa);
prot = pgprot_noncached(PAGE_WRITE);
for (addr = gpa; addr < end; addr += PAGE_SIZE) {
map.addr = addr;
map.pte = pfn_pte(pfn, PAGE_KERNEL_IO);
map.pte = pfn_pte(pfn, prot);
map.pte = pte_mkdirty(map.pte);
map.level = 0;
if (!writable)

View File

@ -683,7 +683,7 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
}
/**
* check_vcpu_requests - check and handle pending vCPU requests
* kvm_riscv_check_vcpu_requests - check and handle pending vCPU requests
* @vcpu: the VCPU pointer
*
* Return: 1 if we should enter the guest

View File

@ -182,6 +182,8 @@ int kvm_riscv_vcpu_set_reg_vector(struct kvm_vcpu *vcpu,
struct kvm_cpu_context *cntx = &vcpu->arch.guest_context;
unsigned long reg_val;
if (reg_size != sizeof(reg_val))
return -EINVAL;
if (copy_from_user(&reg_val, uaddr, reg_size))
return -EFAULT;
if (reg_val != cntx->vector.vlenb)