]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Nov 2021 07:25:53 +0000 (08:25 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Nov 2021 07:25:53 +0000 (08:25 +0100)
added patches:
iommu-amd-clarify-amd-iommuv2-initialization-messages.patch
vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch
vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch

queue-5.15/iommu-amd-clarify-amd-iommuv2-initialization-messages.patch [new file with mode: 0644]
queue-5.15/series
queue-5.15/vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch [new file with mode: 0644]
queue-5.15/vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch [new file with mode: 0644]

diff --git a/queue-5.15/iommu-amd-clarify-amd-iommuv2-initialization-messages.patch b/queue-5.15/iommu-amd-clarify-amd-iommuv2-initialization-messages.patch
new file mode 100644 (file)
index 0000000..ecc3384
--- /dev/null
@@ -0,0 +1,44 @@
+From 717e88aad37befedfd531378b632e794e24e9afb Mon Sep 17 00:00:00 2001
+From: Joerg Roedel <jroedel@suse.de>
+Date: Tue, 23 Nov 2021 11:55:07 +0100
+Subject: iommu/amd: Clarify AMD IOMMUv2 initialization messages
+
+From: Joerg Roedel <jroedel@suse.de>
+
+commit 717e88aad37befedfd531378b632e794e24e9afb upstream.
+
+The messages printed on the initialization of the AMD IOMMUv2 driver
+have caused some confusion in the past. Clarify the messages to lower
+the confusion in the future.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Joerg Roedel <jroedel@suse.de>
+Link: https://lore.kernel.org/r/20211123105507.7654-3-joro@8bytes.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iommu/amd/iommu_v2.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/iommu/amd/iommu_v2.c
++++ b/drivers/iommu/amd/iommu_v2.c
+@@ -928,10 +928,8 @@ static int __init amd_iommu_v2_init(void
+ {
+       int ret;
+-      pr_info("AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>\n");
+-
+       if (!amd_iommu_v2_supported()) {
+-              pr_info("AMD IOMMUv2 functionality not available on this system\n");
++              pr_info("AMD IOMMUv2 functionality not available on this system - This is not a bug.\n");
+               /*
+                * Load anyway to provide the symbols to other modules
+                * which may use AMD IOMMUv2 optionally.
+@@ -946,6 +944,8 @@ static int __init amd_iommu_v2_init(void
+       amd_iommu_register_ppr_notifier(&ppr_nb);
++      pr_info("AMD IOMMUv2 loaded and initialized\n");
++
+       return 0;
+ out:
index f8294bbe0a7ea742d9ae169451325230aa488d98..4bc0349070aedfa4d2ed452e7e653422c4d066b2 100644 (file)
@@ -163,3 +163,6 @@ riscv-dts-microchip-fix-board-compatible.patch
 riscv-dts-microchip-drop-duplicated-mmc-sdhc-node.patch
 cifs-nosharesock-should-not-share-socket-with-future.patch
 ceph-properly-handle-statfs-on-multifs-setups.patch
+iommu-amd-clarify-amd-iommuv2-initialization-messages.patch
+vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch
+vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch
diff --git a/queue-5.15/vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch b/queue-5.15/vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch
new file mode 100644 (file)
index 0000000..47fef85
--- /dev/null
@@ -0,0 +1,68 @@
+From bb93ce4b150dde79f58e34103cbd1fe829796649 Mon Sep 17 00:00:00 2001
+From: Longpeng <longpeng2@huawei.com>
+Date: Wed, 24 Nov 2021 09:52:15 +0800
+Subject: vdpa_sim: avoid putting an uninitialized iova_domain
+
+From: Longpeng <longpeng2@huawei.com>
+
+commit bb93ce4b150dde79f58e34103cbd1fe829796649 upstream.
+
+The system will crash if we put an uninitialized iova_domain, this
+could happen when an error occurs before initializing the iova_domain
+in vdpasim_create().
+
+BUG: kernel NULL pointer dereference, address: 0000000000000000
+...
+RIP: 0010:__cpuhp_state_remove_instance+0x96/0x1c0
+...
+Call Trace:
+ <TASK>
+ put_iova_domain+0x29/0x220
+ vdpasim_free+0xd1/0x120 [vdpa_sim]
+ vdpa_release_dev+0x21/0x40 [vdpa]
+ device_release+0x33/0x90
+ kobject_release+0x63/0x160
+ vdpasim_create+0x127/0x2a0 [vdpa_sim]
+ vdpasim_net_dev_add+0x7d/0xfe [vdpa_sim_net]
+ vdpa_nl_cmd_dev_add_set_doit+0xe1/0x1a0 [vdpa]
+ genl_family_rcv_msg_doit+0x112/0x140
+ genl_rcv_msg+0xdf/0x1d0
+ ...
+
+So we must make sure the iova_domain is already initialized before
+put it.
+
+In addition, we may get the following warning in this case:
+WARNING: ... drivers/iommu/iova.c:344 iova_cache_put+0x58/0x70
+
+So we must make sure the iova_cache_put() is invoked only if the
+iova_cache_get() is already invoked. Let's fix it together.
+
+Cc: stable@vger.kernel.org
+Fixes: 4080fc106750 ("vdpa_sim: use iova module to allocate IOVA addresses")
+Signed-off-by: Longpeng <longpeng2@huawei.com>
+Acked-by: Jason Wang <jasowang@redhat.com>
+Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
+Link: https://lore.kernel.org/r/20211124015215.119-1-longpeng2@huawei.com
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/vdpa/vdpa_sim/vdpa_sim.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/drivers/vdpa/vdpa_sim/vdpa_sim.c
++++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c
+@@ -591,8 +591,11 @@ static void vdpasim_free(struct vdpa_dev
+               vringh_kiov_cleanup(&vdpasim->vqs[i].in_iov);
+       }
+-      put_iova_domain(&vdpasim->iova);
+-      iova_cache_put();
++      if (vdpa_get_dma_dev(vdpa)) {
++              put_iova_domain(&vdpasim->iova);
++              iova_cache_put();
++      }
++
+       kvfree(vdpasim->buffer);
+       if (vdpasim->iommu)
+               vhost_iotlb_free(vdpasim->iommu);
diff --git a/queue-5.15/vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch b/queue-5.15/vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch
new file mode 100644 (file)
index 0000000..a8d511a
--- /dev/null
@@ -0,0 +1,41 @@
+From 49d8c5ffad07ca014cfae72a1b9b8c52b6ad9cb8 Mon Sep 17 00:00:00 2001
+From: Stefano Garzarella <sgarzare@redhat.com>
+Date: Mon, 22 Nov 2021 17:35:24 +0100
+Subject: vhost/vsock: fix incorrect used length reported to the guest
+
+From: Stefano Garzarella <sgarzare@redhat.com>
+
+commit 49d8c5ffad07ca014cfae72a1b9b8c52b6ad9cb8 upstream.
+
+The "used length" reported by calling vhost_add_used() must be the
+number of bytes written by the device (using "in" buffers).
+
+In vhost_vsock_handle_tx_kick() the device only reads the guest
+buffers (they are all "out" buffers), without writing anything,
+so we must pass 0 as "used length" to comply virtio spec.
+
+Fixes: 433fc58e6bf2 ("VSOCK: Introduce vhost_vsock.ko")
+Cc: stable@vger.kernel.org
+Reported-by: Halil Pasic <pasic@linux.ibm.com>
+Suggested-by: Jason Wang <jasowang@redhat.com>
+Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
+Link: https://lore.kernel.org/r/20211122163525.294024-2-sgarzare@redhat.com
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
+Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/vhost/vsock.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/vhost/vsock.c
++++ b/drivers/vhost/vsock.c
+@@ -554,7 +554,7 @@ static void vhost_vsock_handle_tx_kick(s
+                       virtio_transport_free_pkt(pkt);
+               len += sizeof(pkt->hdr);
+-              vhost_add_used(vq, head, len);
++              vhost_add_used(vq, head, 0);
+               total_len += len;
+               added = true;
+       } while(likely(!vhost_exceeds_weight(vq, ++pkts, total_len)));