From 2fa98d256d9b6d127160a2a5c4bb0cebb51ffd17 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 29 Nov 2021 08:25:53 +0100 Subject: [PATCH] 5.15-stable patches 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 --- ...-amd-iommuv2-initialization-messages.patch | 44 ++++++++++++ queue-5.15/series | 3 + ...putting-an-uninitialized-iova_domain.patch | 68 +++++++++++++++++++ ...ct-used-length-reported-to-the-guest.patch | 41 +++++++++++ 4 files changed, 156 insertions(+) create mode 100644 queue-5.15/iommu-amd-clarify-amd-iommuv2-initialization-messages.patch create mode 100644 queue-5.15/vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch create mode 100644 queue-5.15/vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch 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 index 00000000000..ecc33844b3e --- /dev/null +++ b/queue-5.15/iommu-amd-clarify-amd-iommuv2-initialization-messages.patch @@ -0,0 +1,44 @@ +From 717e88aad37befedfd531378b632e794e24e9afb Mon Sep 17 00:00:00 2001 +From: Joerg Roedel +Date: Tue, 23 Nov 2021 11:55:07 +0100 +Subject: iommu/amd: Clarify AMD IOMMUv2 initialization messages + +From: Joerg Roedel + +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 +Link: https://lore.kernel.org/r/20211123105507.7654-3-joro@8bytes.org +Signed-off-by: Greg Kroah-Hartman +--- + 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 \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: diff --git a/queue-5.15/series b/queue-5.15/series index f8294bbe0a7..4bc0349070a 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -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 index 00000000000..47fef85713c --- /dev/null +++ b/queue-5.15/vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch @@ -0,0 +1,68 @@ +From bb93ce4b150dde79f58e34103cbd1fe829796649 Mon Sep 17 00:00:00 2001 +From: Longpeng +Date: Wed, 24 Nov 2021 09:52:15 +0800 +Subject: vdpa_sim: avoid putting an uninitialized iova_domain + +From: Longpeng + +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: + + 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 +Acked-by: Jason Wang +Reviewed-by: Stefano Garzarella +Link: https://lore.kernel.org/r/20211124015215.119-1-longpeng2@huawei.com +Signed-off-by: Michael S. Tsirkin +Signed-off-by: Greg Kroah-Hartman +--- + 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 index 00000000000..a8d511abc7d --- /dev/null +++ b/queue-5.15/vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch @@ -0,0 +1,41 @@ +From 49d8c5ffad07ca014cfae72a1b9b8c52b6ad9cb8 Mon Sep 17 00:00:00 2001 +From: Stefano Garzarella +Date: Mon, 22 Nov 2021 17:35:24 +0100 +Subject: vhost/vsock: fix incorrect used length reported to the guest + +From: Stefano Garzarella + +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 +Suggested-by: Jason Wang +Signed-off-by: Stefano Garzarella +Link: https://lore.kernel.org/r/20211122163525.294024-2-sgarzare@redhat.com +Signed-off-by: Michael S. Tsirkin +Reviewed-by: Stefan Hajnoczi +Reviewed-by: Halil Pasic +Signed-off-by: Greg Kroah-Hartman +--- + 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))); -- 2.47.2