aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuslan Bukin <br@FreeBSD.org>2022-05-07 09:27:17 +0000
committerRuslan Bukin <br@FreeBSD.org>2022-05-07 09:27:17 +0000
commit8b8e56dd5bc781b7d1c7185cd267b0b16a637aa2 (patch)
tree0d498f1dd81533b9c273ed5b4aba6717d4c6fc8d
parent6ff004272a1ebf4c326b2644a9e52e8c74a8254f (diff)
downloadsrc-8b8e56dd5bc781b7d1c7185cd267b0b16a637aa2.tar.gz
src-8b8e56dd5bc781b7d1c7185cd267b0b16a637aa2.zip
Check if iommu ctx is valid before passing it to functions.
Differential Revision: https://reviews.freebsd.org/D35130 Sponsored by: UKRI
-rw-r--r--sys/arm64/arm64/gicv3_its.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c
index 7b06a44f35b3..a77be66bdd7f 100644
--- a/sys/arm64/arm64/gicv3_its.c
+++ b/sys/arm64/arm64/gicv3_its.c
@@ -1481,6 +1481,8 @@ gicv3_iommu_init(device_t dev, device_t child, struct iommu_domain **domain)
sc = device_get_softc(dev);
ctx = iommu_get_dev_ctx(child);
+ if (ctx == NULL)
+ return (ENXIO);
error = iommu_map_msi(ctx, PAGE_SIZE, GITS_TRANSLATER,
IOMMU_MAP_ENTRY_WRITE, IOMMU_MF_CANWAIT, &sc->ma);
*domain = iommu_get_ctx_domain(ctx);
@@ -1494,6 +1496,9 @@ gicv3_iommu_deinit(device_t dev, device_t child)
struct iommu_ctx *ctx;
ctx = iommu_get_dev_ctx(child);
+ if (ctx == NULL)
+ return;
+
iommu_unmap_msi(ctx);
}
#endif