• Konrad Rzeszutek Wilk's avatar
    xen/setup: Fix one-off error when adding for-balloon PFNs to the P2M. · c96aae1f
    Konrad Rzeszutek Wilk authored
    When we are finished with return PFNs to the hypervisor, then
    populate it back, and also mark the E820 MMIO and E820 gaps
    as IDENTITY_FRAMEs, we then call P2M to set areas that can
    be used for ballooning. We were off by one, and ended up
    over-writting a P2M entry that most likely was an IDENTITY_FRAME.
    For example:
    
    1-1 mapping on 40000->40200
    1-1 mapping on bc558->bc5ac
    1-1 mapping on bc5b4->bc8c5
    1-1 mapping on bc8c6->bcb7c
    1-1 mapping on bcd00->100000
    Released 614 pages of unused memory
    Set 277889 page(s) to 1-1 mapping
    Populating 40200-40466 pfn range: 614 pages added
    
    => here we set from 40466 up to bc559 P2M tree to be
    INVALID_P2M_ENTRY. We should have done it up to bc558.
    
    The end result is that if anybody is trying to construct
    a PTE for PFN bc558 they end up with ~PAGE_PRESENT.
    
    CC: stable@vger.kernel.org
    Reported-by-and-Tested-by: default avatarAndre Przywara <andre.przywara@amd.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    c96aae1f
setup.c 14.2 KB