|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen stable-4.20] VT-d: check bus_to_context_maddr()'s return value
commit aab88a3ef3ce7b92fa96b965bf39560f173baa88
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Oct 21 15:21:14 2025 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Oct 21 15:21:14 2025 +0200
VT-d: check bus_to_context_maddr()'s return value
The function returning zero is an error indication; we shouldn't try to
map MFN 0 and then treat that page as a context table.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
master commit: ef5b718cf81a2448118b86b86777f9430739445d
master date: 2025-10-13 16:50:01 +0200
---
xen/drivers/passthrough/vtd/iommu.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/xen/drivers/passthrough/vtd/iommu.c
b/xen/drivers/passthrough/vtd/iommu.c
index a1927d9f12..5816ea0c9f 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1498,6 +1498,11 @@ int domain_context_mapping_one(
ASSERT(pcidevs_locked());
spin_lock(&iommu->lock);
maddr = bus_to_context_maddr(iommu, bus);
+ if ( !maddr )
+ {
+ spin_unlock(&iommu->lock);
+ return -ENOMEM;
+ }
context_entries = (struct context_entry *)map_vtd_domain_page(maddr);
context = &context_entries[devfn];
old = (lctxt = *context).full;
@@ -1852,6 +1857,12 @@ int domain_context_unmap_one(
spin_lock(&iommu->lock);
maddr = bus_to_context_maddr(iommu, bus);
+ if ( !maddr )
+ {
+ ASSERT_UNREACHABLE();
+ spin_unlock(&iommu->lock);
+ return 0;
+ }
context_entries = (struct context_entry *)map_vtd_domain_page(maddr);
context = &context_entries[devfn];
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.20
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |