]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/mm: Fix phys_to_folio() usage in do_secure_storage_access()
authorHeiko Carstens <hca@linux.ibm.com>
Tue, 21 Apr 2026 05:52:44 +0000 (07:52 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Tue, 28 Apr 2026 12:45:03 +0000 (14:45 +0200)
In case of a Secure-Storage-Access exception the effective aka virtual
address which caused the exception is contained within the TEID.

do_secure_storage_access() incorrectly uses phys_to_folio() instead of
virt_to_folio() to translate the virtual address to the corresponding
folio.

Fix this by using virt_to_folio() instead of phys_to_folio().

Fixes: 084ea4d611a3 ("s390/mm: add (non)secure page access exceptions handlers")
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/mm/fault.c

index 191cc53caead3932c880b3ba42ab7526f9173a42..028aeb9c48d6ffaa34e15602873292b2fa64a09d 100644 (file)
@@ -438,7 +438,7 @@ void do_secure_storage_access(struct pt_regs *regs)
                panic("Unexpected PGM 0x3d with TEID bit 61=0");
        }
        if (is_kernel_fault(regs)) {
-               folio = phys_to_folio(addr);
+               folio = virt_to_folio((void *)addr);
                if (unlikely(!folio_try_get(folio)))
                        return;
                rc = uv_convert_from_secure(folio_to_phys(folio));