diff options
-rw-r--r-- | drivers/iommu/io-pgtable-arm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index feacc54bec68..f9bc6ebb8140 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c | |||
@@ -335,8 +335,12 @@ static int __arm_lpae_map(struct arm_lpae_io_pgtable *data, unsigned long iova, | |||
335 | if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS) | 335 | if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS) |
336 | pte |= ARM_LPAE_PTE_NSTABLE; | 336 | pte |= ARM_LPAE_PTE_NSTABLE; |
337 | __arm_lpae_set_pte(ptep, pte, cfg); | 337 | __arm_lpae_set_pte(ptep, pte, cfg); |
338 | } else { | 338 | } else if (!iopte_leaf(pte, lvl)) { |
339 | cptep = iopte_deref(pte, data); | 339 | cptep = iopte_deref(pte, data); |
340 | } else { | ||
341 | /* We require an unmap first */ | ||
342 | WARN_ON(!selftest_running); | ||
343 | return -EEXIST; | ||
340 | } | 344 | } |
341 | 345 | ||
342 | /* Rinse, repeat */ | 346 | /* Rinse, repeat */ |