]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: s390: Reject KVM_SET_GSI_ROUTING on ucontrol VMs
authorChristoph Schlameuss <schlameuss@linux.ibm.com>
Mon, 16 Dec 2024 09:21:37 +0000 (10:21 +0100)
committerClaudio Imbrenda <imbrenda@linux.ibm.com>
Tue, 7 Jan 2025 15:36:11 +0000 (16:36 +0100)
Prevent null pointer dereference when processing
KVM_IRQ_ROUTING_S390_ADAPTER routing entries.
The ioctl cannot be processed for ucontrol VMs.

Fixes: f65470661f36 ("KVM: s390/interrupt: do not pin adapter interrupt pages")
Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
Tested-by: Hariharan Mari <hari55@linux.ibm.com>
Reviewed-by: Hariharan Mari <hari55@linux.ibm.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Link: https://lore.kernel.org/r/20241216092140.329196-4-schlameuss@linux.ibm.com
Message-ID: <20241216092140.329196-4-schlameuss@linux.ibm.com>
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Documentation/virt/kvm/api.rst
arch/s390/kvm/interrupt.c

index 454c2aaa155e5b994ee1f68502d8fdf55cf6700a..f15b61317aad59a3ee4963e6f40c908069d40d04 100644 (file)
@@ -1914,6 +1914,9 @@ No flags are specified so far, the corresponding field must be set to zero.
   #define KVM_IRQ_ROUTING_HV_SINT 4
   #define KVM_IRQ_ROUTING_XEN_EVTCHN 5
 
+On s390, adding a KVM_IRQ_ROUTING_S390_ADAPTER is rejected on ucontrol VMs with
+error -EINVAL.
+
 flags:
 
 - KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI routing entry
index 22d73c13e5557d17d9723f663cef6552dff75704..d4f031e086fc38d3f8f8511a0039f7a6147889d3 100644 (file)
@@ -2898,6 +2898,8 @@ int kvm_set_routing_entry(struct kvm *kvm,
        switch (ue->type) {
        /* we store the userspace addresses instead of the guest addresses */
        case KVM_IRQ_ROUTING_S390_ADAPTER:
+               if (kvm_is_ucontrol(kvm))
+                       return -EINVAL;
                e->set = set_adapter_int;
                uaddr =  gmap_translate(kvm->arch.gmap, ue->u.adapter.summary_addr);
                if (uaddr == -EFAULT)