Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull kvm fixes from Paolo Bonzini:
"A smattering of bug fixes across most architectures"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
powerpc/kvm/cma: Fix panic introduces by signed shift operation
KVM: s390/mm: Fix guest storage key corruption in ptep_set_access_flags
KVM: s390/mm: Fix storage key corruption during swapping
arm/arm64: KVM: Complete WFI/WFE instructions
ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU
KVM: s390/mm: try a cow on read only pages for key ops
KVM: s390: Fix user triggerable bug in dead code

+28 -17
+2
arch/arm/kvm/handle_exit.c
··· 93 93 else 94 94 kvm_vcpu_block(vcpu); 95 95 96 + kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); 97 + 96 98 return 1; 97 99 } 98 100
+4
arch/arm/kvm/init.S
··· 99 99 mrc p15, 0, r0, c10, c2, 1 100 100 mcr p15, 4, r0, c10, c2, 1 101 101 102 + @ Invalidate the stale TLBs from Bootloader 103 + mcr p15, 4, r0, c8, c7, 0 @ TLBIALLH 104 + dsb ish 105 + 102 106 @ Set the HSCTLR to: 103 107 @ - ARM/THUMB exceptions: Kernel config (Thumb-2 kernel) 104 108 @ - Endianness: Kernel config
+2
arch/arm64/kvm/handle_exit.c
··· 66 66 else 67 67 kvm_vcpu_block(vcpu); 68 68 69 + kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); 70 + 69 71 return 1; 70 72 } 71 73
+4
arch/arm64/kvm/hyp-init.S
··· 80 80 msr mair_el2, x4 81 81 isb 82 82 83 + /* Invalidate the stale TLBs from Bootloader */ 84 + tlbi alle2 85 + dsb sy 86 + 83 87 mrs x4, sctlr_el2 84 88 and x4, x4, #SCTLR_EL2_EE // preserve endianness of EL2 85 89 ldr x5, =SCTLR_EL2_FLAGS
+2 -2
arch/powerpc/kvm/book3s_64_mmu_hv.c
··· 62 62 } 63 63 64 64 kvm->arch.hpt_cma_alloc = 0; 65 - page = kvm_alloc_hpt(1 << (order - PAGE_SHIFT)); 65 + page = kvm_alloc_hpt(1ul << (order - PAGE_SHIFT)); 66 66 if (page) { 67 67 hpt = (unsigned long)pfn_to_kaddr(page_to_pfn(page)); 68 - memset((void *)hpt, 0, (1 << order)); 68 + memset((void *)hpt, 0, (1ul << order)); 69 69 kvm->arch.hpt_cma_alloc = 1; 70 70 } 71 71
+4 -2
arch/s390/include/asm/pgtable.h
··· 1127 1127 unsigned long addr, pte_t *ptep) 1128 1128 { 1129 1129 pgste_t pgste; 1130 - pte_t pte; 1130 + pte_t pte, oldpte; 1131 1131 int young; 1132 1132 1133 1133 if (mm_has_pgste(vma->vm_mm)) { ··· 1135 1135 pgste = pgste_ipte_notify(vma->vm_mm, ptep, pgste); 1136 1136 } 1137 1137 1138 - pte = *ptep; 1138 + oldpte = pte = *ptep; 1139 1139 ptep_flush_direct(vma->vm_mm, addr, ptep); 1140 1140 young = pte_young(pte); 1141 1141 pte = pte_mkold(pte); 1142 1142 1143 1143 if (mm_has_pgste(vma->vm_mm)) { 1144 + pgste = pgste_update_all(&oldpte, pgste, vma->vm_mm); 1144 1145 pgste = pgste_set_pte(ptep, pgste, pte); 1145 1146 pgste_set_unlock(ptep, pgste); 1146 1147 } else ··· 1331 1330 ptep_flush_direct(vma->vm_mm, address, ptep); 1332 1331 1333 1332 if (mm_has_pgste(vma->vm_mm)) { 1333 + pgste_set_key(ptep, pgste, entry, vma->vm_mm); 1334 1334 pgste = pgste_set_pte(ptep, pgste, entry); 1335 1335 pgste_set_unlock(ptep, pgste); 1336 1336 } else
-13
arch/s390/kvm/kvm-s390.c
··· 1317 1317 return -EINVAL; 1318 1318 } 1319 1319 1320 - switch (kvm_run->exit_reason) { 1321 - case KVM_EXIT_S390_SIEIC: 1322 - case KVM_EXIT_UNKNOWN: 1323 - case KVM_EXIT_INTR: 1324 - case KVM_EXIT_S390_RESET: 1325 - case KVM_EXIT_S390_UCONTROL: 1326 - case KVM_EXIT_S390_TSCH: 1327 - case KVM_EXIT_DEBUG: 1328 - break; 1329 - default: 1330 - BUG(); 1331 - } 1332 - 1333 1320 vcpu->arch.sie_block->gpsw.mask = kvm_run->psw_mask; 1334 1321 vcpu->arch.sie_block->gpsw.addr = kvm_run->psw_addr; 1335 1322 if (kvm_run->kvm_dirty_regs & KVM_SYNC_PREFIX) {
+10
arch/s390/mm/pgtable.c
··· 986 986 pte_t *ptep; 987 987 988 988 down_read(&mm->mmap_sem); 989 + retry: 989 990 ptep = get_locked_pte(current->mm, addr, &ptl); 990 991 if (unlikely(!ptep)) { 991 992 up_read(&mm->mmap_sem); 992 993 return -EFAULT; 993 994 } 995 + if (!(pte_val(*ptep) & _PAGE_INVALID) && 996 + (pte_val(*ptep) & _PAGE_PROTECT)) { 997 + pte_unmap_unlock(*ptep, ptl); 998 + if (fixup_user_fault(current, mm, addr, FAULT_FLAG_WRITE)) { 999 + up_read(&mm->mmap_sem); 1000 + return -EFAULT; 1001 + } 1002 + goto retry; 1003 + } 994 1004 995 1005 new = old = pgste_get_lock(ptep); 996 1006 pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT |