[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/6] VT-d: don't leak domid mapping on error path
- To: Jan Beulich <jbeulich@xxxxxxxx>
- From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
- Date: Fri, 12 Nov 2021 15:35:34 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=b0bzl3Qa7MhO23SqKi3jN9f4lzmHAWw3lTDuxg0RuoE=; b=QTvKJWajtYoQk52WEnYyk0ujf281uJh06pwJiKhC7Y4ab6hYs6/RC7UXBDahbJkhau+owCP3GWgd3NQL1TnduwYcAE1Yj1uHCNuTnyrgJCPbQsxERc4srPDgZpQUldnqZDOhIuatncWStlB8eqQfzkcpM9y+OBx+NveSIMBk/YTibQ4LPyHI3hgNXDl2k1j6P5P5EnjHVg6Vd6F8I1qD0LOvlkzrVrdBXGvguORL1qTAJadZ/owbn4a29yAkpUoCFnSFRt8TonQNRAr1UeOT4AOwcCGGKEFowwuoLx/Et9ZeKpw4YjUHzSECJ66jPFf3melJ4ywpUk3MjMDHK/UFxg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=els3Vky/lXho2/I5HHdAh+PlkGkAqe8v6Sr7uxrMPlnpnmRCZhNzXGs7UlfaJZ1bkLbqcA2xeA6itNqg+WGGLRAf9ScygJm/n19TDW7iqhMGalCDvuc7p0HXQ4DDJFCAHd1PXOddoq4qm0FiCKLtWYsL1wQFQJ2BuoGVZAG93uXJ+JVwk+iKzt2UdNe0FqqDbRGt4NI6Mh2Xn9IqOqHmgYhXUVo74nwDP/ma6wgja27i7ekjCqwgsEJ/8ySVNRBge6X/CNMF7aWePywry9fH3SOD9b4FSUErW0QiGCJd+xFWsMVaDP9E4DK9NyOC46XarlPb2yj6PzkJUg111fRcKA==
- Authentication-results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
- Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>
- Delivery-date: Fri, 12 Nov 2021 14:36:02 +0000
- Ironport-data: A9a23:dVfNHaubGhzg3K1mf6s2g0o/aufnVLdZMUV32f8akzHdYApBsoF/q tZmKWCOOKuIYGPwKYp0Poq0/R4D6MLWm4diSwFl+ChkRXtE+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHhJZS5LwbZj29cx2ILhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Npl5aG2EDgIOP32uP0zdAt3Hn55ZIwa0eqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY258RRKqDO pVxhTxHXBH+akxrIFMuWK0anMWsuHTfX2FlkQfAzUYwyzeKl1EguFT3C/LWd8KLQ4NJn0+ej mPA42n9RBodMbS32TeDt36hmOLLtSf6Q54JUq218OZwh1+ezXBVDwcZPXO5q/Skjk+1W/pEN lcZvCEpqMAPGFeDF4enGUfi+Tjd40BaC4E4//AGBB+lmpfSujm4ADg+bidvT84JuZAxHB12/ wrc9z/2PgBHvLqQQHOb076bqzKuJCQYRVM/iT84oRgtuIe6/txq5v7bZpM6SfPu0IWpcd3l6 2nS9HBWulkFsSIcO0xXF3jjiinkmJXGRxVdCu7/DjP8tVMRiGJIiuWVBbnnARRocNnxorqp5 iFsdy2iAAYmV8zleMulGrVlIV1Rz6zZWAAweHY2d3Xbyxyj+mS4Yadb6yxkKUFiP64sIGGyP hGO51kKv84OZhNGiJObharrVqzGKoC6RbzYug38NIISMvCdiifblM2RWaJg9z+0yxV9+U3OE ZyabdytHR4n5VdPl1KLqxMm+eZznEgWnDqLLbiilkjP+efONRa9FOZeWHPTP79R0U9xiFiMm zqpH5DRkEs3vSyXSnS/zLP/2nhWdyVmXs6v9JQMHgNBSyI/cFwc5zbq6epJU6RunrhPl/eO+ Xe4W0RCz0H4i2GBIgKPAk2Popu2NXqmhX5kbyEqI3iy3H0vPdSm4KsFLsNldrg77u1zi/VzS qBdKcmHB/1OTBXB+igcMsah/NAzKkzziFLcJTehbRg+Y4VkG17D9Oj7c1a97yIJFCe265cz+ uXyygPBTJMfbA1+F8KKOum3xla8sCFFyuJ/VkfFOPdJf0Do/NQ4IiD9lKZvccoNNQ/C1n2R0 APPWUUUouzEookU9tjVhP/b89f1QrUmRkcDRjvV97e7MyXe71GP+44YXbbaZy3ZWUP15L6mO bdfwcbjPaBVh11NqYd9TepmlPps+9v1qrZG5Q14B3GXPU+zA7ZtL3Taj8lCsqpBmu1QtQesA x/d/9BbPfOCOd//EU5XLw0gN7zR2fYRkzjUzPI0PESlu3MnoOvZCR1fb0uWlShQDLppK4d0k +4utfkf5xG7lhd3YM2NiTpZ9jjUI3ENO0n9Wkr23GM/ZtIX92x/
- Ironport-hdrordr: A9a23:demt/q6o6wTgXr4H+APXwVmBI+orL9Y04lQ7vn2ZFiY7TiXIra yTdaoguCMc6AxxZJkh8erwX5VoZUmsj6KdhrNhQItKPTOWw1dASbsN0WKM+UyDJ8STzJ856U 4kSdkDNDSSNykKsS+Z2njALz9I+rDum8rJ9ISuv0uFDzsaE52Ihz0JdDpzeXcGIjWua6BJcK Z1saF81kWdkDksH4mG7j5vZZm2m/T70LbdJTIWDR8u7weDyRuu9b7BChCdmjMTSSlGz7sO+X XM11WR3NTtj9iLjjvnk0PD5ZVfn9XsjvNFGcy3k8AQbhHhkByhaohNU6CL+Bo1vOaswlA3l8 SkmWZtA+1Dr1fqOk2lqxrk3AftlB4o9n/Z0FedxUDupMToLQhKQ/ZptMZ8SF/0+kAgtNZz3O ZgxGSCradaChvGgWDU+8XIfwsCrDv1nVMS1cooy1BPW4oXb7Fc6aYF+llOLZsGFCXmrKg6De hVCt3G7vo+SyLaU5nghBgs/DWQZAV3Iv/fKXJy/vB9kgIm0kyR9nFoh/D2xRw7hdUAo5ot3Z WMDk0nrsAJciYsV9MOOA42e7rANoX8e2O+DIusGyWTKEgmAQOHl3el2sR+2AmVEKZ4u6fa3q 6xCW9liQ==
- Ironport-sdr: LL4Xjlm3zi9E2zPopdqTFN2d1IW82PinG/Vr+Z60pysarJb3QtBKJYRjzyqZwRAa+DWdrcA8wR qqoMsHT+6AP/+03w1nD73QtMW5lbrCHAwE8I1nGe4VXebjp+5R2BBeZnqQuuEqNFB3nssVoW2G djF8+CsCIJ8KrTQ16hXQ4QJqrk1ObeDHsz5DIucs5KIYGPERtg8bctPj79nFaMdjePCBOgRCsv lqYs4c1cHLAX0PCjlvL5NUpi2pN9UnLPIENfvs9EMESKO96eECC8cMhSN6a7o0gw/9+r89siqM WX4Mx47mvF9T4RmyXZv5TGTa
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On Fri, Nov 12, 2021 at 02:45:14PM +0100, Jan Beulich wrote:
> On 12.11.2021 14:42, Roger Pau Monné wrote:
> > On Fri, Nov 12, 2021 at 10:48:43AM +0100, Jan Beulich wrote:
> >> While domain_context_mapping() invokes domain_context_unmap() in a sub-
> >> case of handling DEV_TYPE_PCI when encountering an error, thus avoiding
> >> a leak, individual calls to domain_context_mapping_one() aren't
> >> similarly covered. Such a leak might persist until domain destruction.
> >> Leverage that these cases can be recognized by pdev being non-NULL.
> >
> > Would it help to place the domid cleanup in domain_context_unmap_one,
> > as that would then cover calls from domain_context_unmap and the
> > failure path in domain_context_mapping_one.
>
> I don't think that would work (without further convolution), because of
> the up to 3 successive calls in DEV_TYPE_PCI handling. Cleanup may happen
> only on the first map's error path or after the last unmap.
Hm, I see. And AFAICT that's because some devices that get assigned to
a guest iommu context are not actually assigned to the guest (ie:
pdev->domain doesn't get set, neither the device is added to the
per-domain list), which makes them invisible to
any_pdev_behind_iommu.
I dislike that the domid is added in domain_context_mapping_one, while
the cleanup is not done in domain_context_unmap_one, and that some
devices context could be using the domain id without being assigned to
the domain.
Thanks, Roger.
|