lkml.org 
[lkml]   [2021]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 167/323] KVM: s390: Fix handle_sske page fault handling
    Date
    From: Janis Schoetterl-Glausch <scgl@linux.ibm.com>

    [ Upstream commit 85f517b29418158d3e6e90c3f0fc01b306d2f1a1 ]

    If handle_sske cannot set the storage key, because there is no
    page table entry or no present large page entry, it calls
    fixup_user_fault.
    However, currently, if the call succeeds, handle_sske returns
    -EAGAIN, without having set the storage key.
    Instead, retry by continue'ing the loop without incrementing the
    address.
    The same issue in handle_pfmf was fixed by
    a11bdb1a6b78 ("KVM: s390: Fix pfmf and conditional skey emulation").

    Fixes: bd096f644319 ("KVM: s390: Add skey emulation fault handling")
    Signed-off-by: Janis Schoetterl-Glausch <scgl@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211022152648.26536-1-scgl@linux.ibm.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/s390/kvm/priv.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
    index 8679bd74d337a..9abdfb8b1a1ea 100644
    --- a/arch/s390/kvm/priv.c
    +++ b/arch/s390/kvm/priv.c
    @@ -397,6 +397,8 @@ static int handle_sske(struct kvm_vcpu *vcpu)
    up_read(&current->mm->mmap_sem);
    if (rc == -EFAULT)
    return kvm_s390_inject_program_int(vcpu, PGM_ADDRESSING);
    + if (rc == -EAGAIN)
    + continue;
    if (rc < 0)
    return rc;
    start += PAGE_SIZE;
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-24 14:04    [W:4.031 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site