]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 31 Jan 2021 16:09:58 +0000 (17:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 31 Jan 2021 16:09:58 +0000 (17:09 +0100)
queue-5.10/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch [deleted file]
queue-5.10/series
queue-5.4/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch [deleted file]
queue-5.4/series

diff --git a/queue-5.10/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch b/queue-5.10/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch
deleted file mode 100644 (file)
index 34c3bd4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-From f21916ec4826766463fe9fb55a5f43d2a365811d Mon Sep 17 00:00:00 2001
-From: Tony Krowiak <akrowiak@linux.ibm.com>
-Date: Tue, 22 Dec 2020 20:20:13 -0500
-Subject: s390/vfio-ap: clean up vfio_ap resources when KVM pointer invalidated
-
-From: Tony Krowiak <akrowiak@linux.ibm.com>
-
-commit f21916ec4826766463fe9fb55a5f43d2a365811d upstream.
-
-The vfio_ap device driver registers a group notifier with VFIO when the
-file descriptor for a VFIO mediated device for a KVM guest is opened to
-receive notification that the KVM pointer is set (VFIO_GROUP_NOTIFY_SET_KVM
-event). When the KVM pointer is set, the vfio_ap driver takes the
-following actions:
-1. Stashes the KVM pointer in the vfio_ap_mdev struct that holds the state
-   of the mediated device.
-2. Calls the kvm_get_kvm() function to increment its reference counter.
-3. Sets the function pointer to the function that handles interception of
-   the instruction that enables/disables interrupt processing.
-4. Sets the masks in the KVM guest's CRYCB to pass AP resources through to
-   the guest.
-
-In order to avoid memory leaks, when the notifier is called to receive
-notification that the KVM pointer has been set to NULL, the vfio_ap device
-driver should reverse the actions taken when the KVM pointer was set.
-
-Fixes: 258287c994de ("s390: vfio-ap: implement mediated device open callback")
-Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
-Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
-Reviewed-by: Cornelia Huck <cohuck@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/r/20201223012013.5418-1-akrowiak@linux.ibm.com
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/s390/crypto/vfio_ap_ops.c |   49 +++++++++++++++++++++-----------------
- 1 file changed, 28 insertions(+), 21 deletions(-)
-
---- a/drivers/s390/crypto/vfio_ap_ops.c
-+++ b/drivers/s390/crypto/vfio_ap_ops.c
-@@ -1038,19 +1038,14 @@ static int vfio_ap_mdev_set_kvm(struct a
- {
-       struct ap_matrix_mdev *m;
--      mutex_lock(&matrix_dev->lock);
--
-       list_for_each_entry(m, &matrix_dev->mdev_list, node) {
--              if ((m != matrix_mdev) && (m->kvm == kvm)) {
--                      mutex_unlock(&matrix_dev->lock);
-+              if ((m != matrix_mdev) && (m->kvm == kvm))
-                       return -EPERM;
--              }
-       }
-       matrix_mdev->kvm = kvm;
-       kvm_get_kvm(kvm);
-       kvm->arch.crypto.pqap_hook = &matrix_mdev->pqap_hook;
--      mutex_unlock(&matrix_dev->lock);
-       return 0;
- }
-@@ -1084,35 +1079,52 @@ static int vfio_ap_mdev_iommu_notifier(s
-       return NOTIFY_DONE;
- }
-+static void vfio_ap_mdev_unset_kvm(struct ap_matrix_mdev *matrix_mdev)
-+{
-+      kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
-+      matrix_mdev->kvm->arch.crypto.pqap_hook = NULL;
-+      vfio_ap_mdev_reset_queues(matrix_mdev->mdev);
-+      kvm_put_kvm(matrix_mdev->kvm);
-+      matrix_mdev->kvm = NULL;
-+}
-+
- static int vfio_ap_mdev_group_notifier(struct notifier_block *nb,
-                                      unsigned long action, void *data)
- {
--      int ret;
-+      int ret, notify_rc = NOTIFY_OK;
-       struct ap_matrix_mdev *matrix_mdev;
-       if (action != VFIO_GROUP_NOTIFY_SET_KVM)
-               return NOTIFY_OK;
-       matrix_mdev = container_of(nb, struct ap_matrix_mdev, group_notifier);
-+      mutex_lock(&matrix_dev->lock);
-       if (!data) {
--              matrix_mdev->kvm = NULL;
--              return NOTIFY_OK;
-+              if (matrix_mdev->kvm)
-+                      vfio_ap_mdev_unset_kvm(matrix_mdev);
-+              goto notify_done;
-       }
-       ret = vfio_ap_mdev_set_kvm(matrix_mdev, data);
--      if (ret)
--              return NOTIFY_DONE;
-+      if (ret) {
-+              notify_rc = NOTIFY_DONE;
-+              goto notify_done;
-+      }
-       /* If there is no CRYCB pointer, then we can't copy the masks */
--      if (!matrix_mdev->kvm->arch.crypto.crycbd)
--              return NOTIFY_DONE;
-+      if (!matrix_mdev->kvm->arch.crypto.crycbd) {
-+              notify_rc = NOTIFY_DONE;
-+              goto notify_done;
-+      }
-       kvm_arch_crypto_set_masks(matrix_mdev->kvm, matrix_mdev->matrix.apm,
-                                 matrix_mdev->matrix.aqm,
-                                 matrix_mdev->matrix.adm);
--      return NOTIFY_OK;
-+notify_done:
-+      mutex_unlock(&matrix_dev->lock);
-+      return notify_rc;
- }
- static struct vfio_ap_queue *vfio_ap_find_queue(int apqn)
-@@ -1246,13 +1258,8 @@ static void vfio_ap_mdev_release(struct
-       struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
-       mutex_lock(&matrix_dev->lock);
--      if (matrix_mdev->kvm) {
--              kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
--              matrix_mdev->kvm->arch.crypto.pqap_hook = NULL;
--              vfio_ap_mdev_reset_queues(mdev);
--              kvm_put_kvm(matrix_mdev->kvm);
--              matrix_mdev->kvm = NULL;
--      }
-+      if (matrix_mdev->kvm)
-+              vfio_ap_mdev_unset_kvm(matrix_mdev);
-       mutex_unlock(&matrix_dev->lock);
-       vfio_unregister_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY,
index 2e4ed9ac1670f79805adaca0208bfcf4b081d31b..ef5942c7b4c2d185d81814571791bd21b20a1089 100644 (file)
@@ -28,5 +28,4 @@ bcache-only-check-feature-sets-when-sb-version-bcache_sb_version_cdev_with_featu
 net-usb-qmi_wwan-added-support-for-thales-cinterion-plsx3-modem-family.patch
 s390-uv-fix-sysfs-max-number-of-vcpus-reporting.patch
 s390-vfio-ap-no-need-to-disable-irq-after-queue-reset.patch
-s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch
 pm-hibernate-flush-swap-writer-after-marking.patch
diff --git a/queue-5.4/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch b/queue-5.4/s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch
deleted file mode 100644 (file)
index 34c3bd4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-From f21916ec4826766463fe9fb55a5f43d2a365811d Mon Sep 17 00:00:00 2001
-From: Tony Krowiak <akrowiak@linux.ibm.com>
-Date: Tue, 22 Dec 2020 20:20:13 -0500
-Subject: s390/vfio-ap: clean up vfio_ap resources when KVM pointer invalidated
-
-From: Tony Krowiak <akrowiak@linux.ibm.com>
-
-commit f21916ec4826766463fe9fb55a5f43d2a365811d upstream.
-
-The vfio_ap device driver registers a group notifier with VFIO when the
-file descriptor for a VFIO mediated device for a KVM guest is opened to
-receive notification that the KVM pointer is set (VFIO_GROUP_NOTIFY_SET_KVM
-event). When the KVM pointer is set, the vfio_ap driver takes the
-following actions:
-1. Stashes the KVM pointer in the vfio_ap_mdev struct that holds the state
-   of the mediated device.
-2. Calls the kvm_get_kvm() function to increment its reference counter.
-3. Sets the function pointer to the function that handles interception of
-   the instruction that enables/disables interrupt processing.
-4. Sets the masks in the KVM guest's CRYCB to pass AP resources through to
-   the guest.
-
-In order to avoid memory leaks, when the notifier is called to receive
-notification that the KVM pointer has been set to NULL, the vfio_ap device
-driver should reverse the actions taken when the KVM pointer was set.
-
-Fixes: 258287c994de ("s390: vfio-ap: implement mediated device open callback")
-Signed-off-by: Tony Krowiak <akrowiak@linux.ibm.com>
-Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
-Reviewed-by: Cornelia Huck <cohuck@redhat.com>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/r/20201223012013.5418-1-akrowiak@linux.ibm.com
-Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/s390/crypto/vfio_ap_ops.c |   49 +++++++++++++++++++++-----------------
- 1 file changed, 28 insertions(+), 21 deletions(-)
-
---- a/drivers/s390/crypto/vfio_ap_ops.c
-+++ b/drivers/s390/crypto/vfio_ap_ops.c
-@@ -1038,19 +1038,14 @@ static int vfio_ap_mdev_set_kvm(struct a
- {
-       struct ap_matrix_mdev *m;
--      mutex_lock(&matrix_dev->lock);
--
-       list_for_each_entry(m, &matrix_dev->mdev_list, node) {
--              if ((m != matrix_mdev) && (m->kvm == kvm)) {
--                      mutex_unlock(&matrix_dev->lock);
-+              if ((m != matrix_mdev) && (m->kvm == kvm))
-                       return -EPERM;
--              }
-       }
-       matrix_mdev->kvm = kvm;
-       kvm_get_kvm(kvm);
-       kvm->arch.crypto.pqap_hook = &matrix_mdev->pqap_hook;
--      mutex_unlock(&matrix_dev->lock);
-       return 0;
- }
-@@ -1084,35 +1079,52 @@ static int vfio_ap_mdev_iommu_notifier(s
-       return NOTIFY_DONE;
- }
-+static void vfio_ap_mdev_unset_kvm(struct ap_matrix_mdev *matrix_mdev)
-+{
-+      kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
-+      matrix_mdev->kvm->arch.crypto.pqap_hook = NULL;
-+      vfio_ap_mdev_reset_queues(matrix_mdev->mdev);
-+      kvm_put_kvm(matrix_mdev->kvm);
-+      matrix_mdev->kvm = NULL;
-+}
-+
- static int vfio_ap_mdev_group_notifier(struct notifier_block *nb,
-                                      unsigned long action, void *data)
- {
--      int ret;
-+      int ret, notify_rc = NOTIFY_OK;
-       struct ap_matrix_mdev *matrix_mdev;
-       if (action != VFIO_GROUP_NOTIFY_SET_KVM)
-               return NOTIFY_OK;
-       matrix_mdev = container_of(nb, struct ap_matrix_mdev, group_notifier);
-+      mutex_lock(&matrix_dev->lock);
-       if (!data) {
--              matrix_mdev->kvm = NULL;
--              return NOTIFY_OK;
-+              if (matrix_mdev->kvm)
-+                      vfio_ap_mdev_unset_kvm(matrix_mdev);
-+              goto notify_done;
-       }
-       ret = vfio_ap_mdev_set_kvm(matrix_mdev, data);
--      if (ret)
--              return NOTIFY_DONE;
-+      if (ret) {
-+              notify_rc = NOTIFY_DONE;
-+              goto notify_done;
-+      }
-       /* If there is no CRYCB pointer, then we can't copy the masks */
--      if (!matrix_mdev->kvm->arch.crypto.crycbd)
--              return NOTIFY_DONE;
-+      if (!matrix_mdev->kvm->arch.crypto.crycbd) {
-+              notify_rc = NOTIFY_DONE;
-+              goto notify_done;
-+      }
-       kvm_arch_crypto_set_masks(matrix_mdev->kvm, matrix_mdev->matrix.apm,
-                                 matrix_mdev->matrix.aqm,
-                                 matrix_mdev->matrix.adm);
--      return NOTIFY_OK;
-+notify_done:
-+      mutex_unlock(&matrix_dev->lock);
-+      return notify_rc;
- }
- static struct vfio_ap_queue *vfio_ap_find_queue(int apqn)
-@@ -1246,13 +1258,8 @@ static void vfio_ap_mdev_release(struct
-       struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev);
-       mutex_lock(&matrix_dev->lock);
--      if (matrix_mdev->kvm) {
--              kvm_arch_crypto_clear_masks(matrix_mdev->kvm);
--              matrix_mdev->kvm->arch.crypto.pqap_hook = NULL;
--              vfio_ap_mdev_reset_queues(mdev);
--              kvm_put_kvm(matrix_mdev->kvm);
--              matrix_mdev->kvm = NULL;
--      }
-+      if (matrix_mdev->kvm)
-+              vfio_ap_mdev_unset_kvm(matrix_mdev);
-       mutex_unlock(&matrix_dev->lock);
-       vfio_unregister_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY,
index f14b6b532ba3f0ba39fab0a8c98d7c5e996ff6bc..f9f8a853e03d4d23dfd8bd8c2a83bbf2715dcb98 100644 (file)
@@ -10,5 +10,4 @@ arm-dts-imx6qdl-gw52xx-fix-duplicate-regulator-naming.patch
 wext-fix-null-ptr-dereference-with-cfg80211-s-lack-of-commit.patch
 net-usb-qmi_wwan-added-support-for-thales-cinterion-plsx3-modem-family.patch
 s390-vfio-ap-no-need-to-disable-irq-after-queue-reset.patch
-s390-vfio-ap-clean-up-vfio_ap-resources-when-kvm-pointer-invalidated.patch
 pm-hibernate-flush-swap-writer-after-marking.patch