lib: Check region base for merging in sbi_domain_root_add_memregion()

We can merge region B onto region A only if base of region A is
aligned to region A order + 1.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Xiang W <wxjstz@126.com>
This commit is contained in:
Anup Patel
2021-05-20 15:47:07 +05:30
committed by Anup Patel
parent fe92347b9f
commit b2dbbc0577

View File

@@ -511,7 +511,8 @@ int sbi_domain_root_add_memregion(const struct sbi_domain_memregion *reg)
if (!nreg1->order) if (!nreg1->order)
continue; continue;
if ((nreg->base + BIT(nreg->order)) == nreg1->base && if (!(nreg->base & (BIT(nreg->order + 1) - 1)) &&
(nreg->base + BIT(nreg->order)) == nreg1->base &&
nreg->order == nreg1->order && nreg->order == nreg1->order &&
nreg->flags == nreg1->flags) { nreg->flags == nreg1->flags) {
nreg->order++; nreg->order++;