• Mathias Krause's avatar
    KVM: Reject overly excessive IDs in KVM_CREATE_VCPU · 8b8e57e5
    Mathias Krause authored
    If, on a 64 bit system, a vCPU ID is provided that has the upper 32 bits
    set to a non-zero value, it may get accepted if the truncated to 32 bits
    integer value is below KVM_MAX_VCPU_IDS and 'max_vcpus'. This feels very
    wrong and triggered the reporting logic of PaX's SIZE_OVERFLOW plugin.
    
    Instead of silently truncating and accepting such values, pass the full
    value to kvm_vm_ioctl_create_vcpu() and make the existing limit checks
    return an error.
    
    Even if this is a userland ABI breaking change, no sane userland could
    have ever relied on that behaviour.
    
    Reported-by: PaX's SIZE_OVERFLOW plugin running on grsecurity's syzkaller
    Fixes: 6aa8b732 ("[PATCH] kvm: userspace interface")
    Cc: Emese Revfy <re.emese@gmail.com>
    Cc: PaX Team <pageexec@freemail.hu>
    Signed-off-by: default avatarMathias Krause <minipli@grsecurity.net>
    Link: https://lore.kernel.org/r/20240614202859.3597745-2-minipli@grsecurity.net
    [sean: tweak comment about INT_MAX assertion]
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    8b8e57e5
kvm_main.c 166 KB