[PATCH v2] kvm: arm: Fix handling of stage2 huge mappings

Marc Zyngier marc.zyngier at arm.com
Wed Mar 20 10:31:54 PDT 2019


On Wed, 20 Mar 2019 14:57:19 +0000
Suzuki K Poulose <suzuki.poulose at arm.com> wrote:

> We rely on the mmu_notifier call backs to handle the split/merge
> of huge pages and thus we are guaranteed that, while creating a
> block mapping, either the entire block is unmapped at stage2 or it
> is missing permission.
> 
> However, we miss a case where the block mapping is split for dirty
> logging case and then could later be made block mapping, if we cancel the
> dirty logging. This not only creates inconsistent TLB entries for
> the pages in the the block, but also leakes the table pages for
> PMD level.
> 
> Handle this corner case for the huge mappings at stage2 by
> unmapping the non-huge mapping for the block. This could potentially
> release the upper level table. So we need to restart the table walk
> once we unmap the range.
> 
> Fixes : ad361f093c1e31d ("KVM: ARM: Support hugetlbfs backed huge pages")
> Reported-by: Zheng Xiang <zhengxiang9 at huawei.com>
> Cc: Zheng Xiang <zhengxiang9 at huawei.com>
> Cc: Zhenghui Yu <yuzenghui at huawei.com>
       ^
> Cc: Marc Zyngier <marc.zyngier at arm.com>
> Cc: Christoffer Dall <christoffer.dall at arm.com>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>

Applied, with Zenghui's name fixed.

Thanks,

	M.
-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list