From: Si-Wei Liu <si-wei.liu@oracle.com>
To: Jason Wang <jasowang@redhat.com>
Cc: xuanzhuo@linux.alibaba.com, mst@redhat.com, gal@nvidia.com,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, eperezma@redhat.com
Subject: Re: [PATCH RFC 3/4] vhost-vdpa: should restore 1:1 dma mapping before detaching driver
Date: Tue, 15 Aug 2023 16:09:54 -0700 [thread overview]
Message-ID: <19466c8d-7e61-c95d-4ecc-130bd9920483@oracle.com> (raw)
In-Reply-To: <CACGkMEvrg0qA6=E-5WJL79XAdO3SpSr=rumsyYMW4a-7tZkD8Q@mail.gmail.com>
On 8/14/2023 7:32 PM, Jason Wang wrote:
> On Tue, Aug 15, 2023 at 9:45 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>> Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
>> ---
>> drivers/vhost/vdpa.c | 17 +++++++++++++++++
>> 1 file changed, 17 insertions(+)
>>
>> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
>> index b43e868..62b0a01 100644
>> --- a/drivers/vhost/vdpa.c
>> +++ b/drivers/vhost/vdpa.c
>> @@ -131,6 +131,15 @@ static struct vhost_vdpa_as *vhost_vdpa_find_alloc_as(struct vhost_vdpa *v,
>> return vhost_vdpa_alloc_as(v, asid);
>> }
>>
>> +static void vhost_vdpa_reset_map(struct vhost_vdpa *v, u32 asid)
>> +{
>> + struct vdpa_device *vdpa = v->vdpa;
>> + const struct vdpa_config_ops *ops = vdpa->config;
>> +
>> + if (ops->reset_map)
>> + ops->reset_map(vdpa, asid);
>> +}
>> +
>> static int vhost_vdpa_remove_as(struct vhost_vdpa *v, u32 asid)
>> {
>> struct vhost_vdpa_as *as = asid_to_as(v, asid);
>> @@ -140,6 +149,14 @@ static int vhost_vdpa_remove_as(struct vhost_vdpa *v, u32 asid)
>>
>> hlist_del(&as->hash_link);
>> vhost_vdpa_iotlb_unmap(v, &as->iotlb, 0ULL, 0ULL - 1, asid);
>> + /*
>> + * Devices with on-chip IOMMU need to restore iotlb
>> + * to 1:1 identity mapping before vhost-vdpa is going
>> + * to be removed and detached from the device. Give
>> + * them a chance to do so, as this cannot be done
>> + * efficiently via the whole-range unmap call above.
>> + */
> Same question as before, if 1:1 is restored and the userspace doesn't
> do any IOTLB updating. It looks like a security issue? (Assuming IOVA
> is PA)
This is already flawed independent of this series. It was introduced
from the two commits I referenced earlier in the other thread. Today
userspace is already able to do so with device reset and don't do any
IOTLB update. This series don't get it worse nor make it better.
FWIW as said earlier, to address this security issue properly we
probably should set up 1:1 DMA mapping in virtio_vdpa_probe() on demand,
and tears it down at virtio_vdpa_release_dev(). Question is, was
virtio-vdpa the only vdpa bus user that needs 1:1 DMA mapping, or it's
the other way around that vhost-vdpa is the only exception among all
vdpa bus drivers that don't want to start with 1:1 by default. This
would help parent vdpa implementation for what kind of mapping it should
start with upon creation.
Regards,
-Siwei
>
> Thanks
>
>> + vhost_vdpa_reset_map(v, asid);
>> kfree(as);
>>
>> return 0;
>> --
>> 1.8.3.1
>>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2023-08-15 23:10 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-02 17:12 [PATCH 0/2] vdpa/mlx5: Fixes for ASID handling Dragos Tatulea via Virtualization
2023-08-02 17:12 ` [PATCH 1/2] vdpa/mlx5: Fix mr->initialized semantics Dragos Tatulea via Virtualization
2023-08-03 8:03 ` Jason Wang
2023-08-03 11:40 ` Dragos Tatulea via Virtualization
2023-08-08 2:57 ` Jason Wang
2023-08-08 7:24 ` Dragos Tatulea via Virtualization
2023-08-09 1:42 ` Jason Wang
2023-08-14 14:15 ` Dragos Tatulea via Virtualization
2023-08-15 1:28 ` Jason Wang
2023-08-03 17:57 ` Si-Wei Liu
2023-08-08 3:00 ` Jason Wang
2023-08-08 22:58 ` Si-Wei Liu
2023-08-09 6:52 ` Jason Wang
2023-08-10 0:40 ` Si-Wei Liu
2023-08-10 3:10 ` Jason Wang
2023-08-10 22:20 ` Si-Wei Liu
2023-08-14 2:59 ` Jason Wang
2023-08-15 1:43 ` [PATCH RFC 0/4] vdpa: decouple reset of iotlb mapping from device reset Si-Wei Liu
2023-08-15 1:43 ` [PATCH RFC 1/4] vdpa: introduce .reset_map operation callback Si-Wei Liu
2023-08-15 2:21 ` Jason Wang
2023-08-15 19:49 ` Si-Wei Liu
2023-08-16 1:55 ` Jason Wang
2023-08-17 0:05 ` Si-Wei Liu
[not found] ` <CAJaqyWeC=G7fbgvmyCicnuGLYD84G5+b37tVA1KqzrSHO_AGDw@mail.gmail.com>
2023-08-21 22:31 ` Si-Wei Liu
2023-08-15 1:43 ` [PATCH RFC 2/4] vdpa/mlx5: implement .reset_map driver op Si-Wei Liu
2023-08-15 8:26 ` Dragos Tatulea via Virtualization
2023-08-15 23:11 ` Si-Wei Liu
2023-08-15 1:43 ` [PATCH RFC 3/4] vhost-vdpa: should restore 1:1 dma mapping before detaching driver Si-Wei Liu
2023-08-15 2:32 ` Jason Wang
2023-08-15 23:09 ` Si-Wei Liu [this message]
2023-08-15 1:43 ` [PATCH RFC 4/4] vhost-vdpa: introduce IOTLB_PERSIST backend feature bit Si-Wei Liu
2023-08-15 2:25 ` Jason Wang
2023-08-15 22:30 ` Si-Wei Liu
2023-08-16 1:48 ` Jason Wang
2023-08-16 23:43 ` Si-Wei Liu
2023-08-22 8:54 ` Jason Wang
2023-08-28 23:46 ` Si-Wei Liu
2023-08-02 17:12 ` [PATCH 2/2] vdpa/mlx5: Delete control vq iotlb in destroy_mr only when necessary Dragos Tatulea via Virtualization
2023-08-10 8:54 ` [PATCH 0/2] vdpa/mlx5: Fixes for ASID handling Michael S. Tsirkin
2023-08-10 8:59 ` Jason Wang
2023-08-10 9:04 ` Dragos Tatulea via Virtualization
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=19466c8d-7e61-c95d-4ecc-130bd9920483@oracle.com \
--to=si-wei.liu@oracle.com \
--cc=eperezma@redhat.com \
--cc=gal@nvidia.com \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=xuanzhuo@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox