Message ID | 20241216092140.329196-2-schlameuss@linux.ibm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests: kvm: s390: Reject invalid ioctls on ucontrol VMs | expand |
On 2024-12-16 10:21, Christoph Schlameuss wrote: > Prevent null pointer dereference when processing the > KVM_DEV_FLIC_APF_ENABLE and KVM_DEV_FLIC_APF_DISABLE_WAIT ioctls in the > interrupt controller. > > Fixes: 3c038e6be0e2 ("KVM: async_pf: Async page fault support on s390") > Reported-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com> Reviewed-by: Hariharan Mari <hari55@linux.ibm.com> > --- > Documentation/virt/kvm/devices/s390_flic.rst | 4 ++++ > arch/s390/kvm/interrupt.c | 4 ++++ > 2 files changed, 8 insertions(+) > > diff --git a/Documentation/virt/kvm/devices/s390_flic.rst > b/Documentation/virt/kvm/devices/s390_flic.rst > index ea96559ba501..b784f8016748 100644 > --- a/Documentation/virt/kvm/devices/s390_flic.rst > +++ b/Documentation/virt/kvm/devices/s390_flic.rst > @@ -58,11 +58,15 @@ Groups: > Enables async page faults for the guest. So in case of a major > page fault > the host is allowed to handle this async and continues the guest. > > + -EINVAL is returned when called on the FLIC of a ucontrol VM. > + > KVM_DEV_FLIC_APF_DISABLE_WAIT > Disables async page faults for the guest and waits until already > pending > async page faults are done. This is necessary to trigger a > completion interrupt > for every init interrupt before migrating the interrupt list. > > + -EINVAL is returned when called on the FLIC of a ucontrol VM. > + > KVM_DEV_FLIC_ADAPTER_REGISTER > Register an I/O adapter interrupt source. Takes a > kvm_s390_io_adapter > describing the adapter to register:: > diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c > index ea8dce299954..22d73c13e555 100644 > --- a/arch/s390/kvm/interrupt.c > +++ b/arch/s390/kvm/interrupt.c > @@ -2678,9 +2678,13 @@ static int flic_set_attr(struct kvm_device > *dev, struct kvm_device_attr *attr) > kvm_s390_clear_float_irqs(dev->kvm); > break; > case KVM_DEV_FLIC_APF_ENABLE: > + if (kvm_is_ucontrol(dev->kvm)) > + return -EINVAL; > dev->kvm->arch.gmap->pfault_enabled = 1; > break; > case KVM_DEV_FLIC_APF_DISABLE_WAIT: > + if (kvm_is_ucontrol(dev->kvm)) > + return -EINVAL; > dev->kvm->arch.gmap->pfault_enabled = 0; > /* > * Make sure no async faults are in transition when
diff --git a/Documentation/virt/kvm/devices/s390_flic.rst b/Documentation/virt/kvm/devices/s390_flic.rst index ea96559ba501..b784f8016748 100644 --- a/Documentation/virt/kvm/devices/s390_flic.rst +++ b/Documentation/virt/kvm/devices/s390_flic.rst @@ -58,11 +58,15 @@ Groups: Enables async page faults for the guest. So in case of a major page fault the host is allowed to handle this async and continues the guest. + -EINVAL is returned when called on the FLIC of a ucontrol VM. + KVM_DEV_FLIC_APF_DISABLE_WAIT Disables async page faults for the guest and waits until already pending async page faults are done. This is necessary to trigger a completion interrupt for every init interrupt before migrating the interrupt list. + -EINVAL is returned when called on the FLIC of a ucontrol VM. + KVM_DEV_FLIC_ADAPTER_REGISTER Register an I/O adapter interrupt source. Takes a kvm_s390_io_adapter describing the adapter to register:: diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index ea8dce299954..22d73c13e555 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -2678,9 +2678,13 @@ static int flic_set_attr(struct kvm_device *dev, struct kvm_device_attr *attr) kvm_s390_clear_float_irqs(dev->kvm); break; case KVM_DEV_FLIC_APF_ENABLE: + if (kvm_is_ucontrol(dev->kvm)) + return -EINVAL; dev->kvm->arch.gmap->pfault_enabled = 1; break; case KVM_DEV_FLIC_APF_DISABLE_WAIT: + if (kvm_is_ucontrol(dev->kvm)) + return -EINVAL; dev->kvm->arch.gmap->pfault_enabled = 0; /* * Make sure no async faults are in transition when
Prevent null pointer dereference when processing the KVM_DEV_FLIC_APF_ENABLE and KVM_DEV_FLIC_APF_DISABLE_WAIT ioctls in the interrupt controller. Fixes: 3c038e6be0e2 ("KVM: async_pf: Async page fault support on s390") Reported-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com> --- Documentation/virt/kvm/devices/s390_flic.rst | 4 ++++ arch/s390/kvm/interrupt.c | 4 ++++ 2 files changed, 8 insertions(+)