|
@@ -1212,7 +1212,10 @@ static int arm_smmu_alloc_init_pte(struct arm_smmu_device *smmu, pmd_t *pmd,
|
|
|
|
|
|
arm_smmu_flush_pgtable(smmu, page_address(table),
|
|
|
ARM_SMMU_PTE_HWTABLE_SIZE);
|
|
|
- pgtable_page_ctor(table);
|
|
|
+ if (!pgtable_page_ctor(table)) {
|
|
|
+ __free_page(table);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
pmd_populate(NULL, pmd, table);
|
|
|
arm_smmu_flush_pgtable(smmu, pmd, sizeof(*pmd));
|
|
|
}
|