[Bug 42980] BUG in gfn_to_pfn_prot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.kernel.org/show_bug.cgi?id=42980


Avi Kivity <avi@xxxxxxxxxx> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |avi@xxxxxxxxxx




--- Comment #1 from Avi Kivity <avi@xxxxxxxxxx>  2012-03-28 13:03:25 ---
   0:    89 d0                    mov    %edx,%eax
   2:    8d 4c ff 0c              lea    0xc(%rdi,%rdi,8),%ecx
   6:    4d 89 e0                 mov    %r12,%r8
   9:    48 d3 e8                 shr    %cl,%rax
   c:    4c 03 45 a8              add    -0x58(%rbp),%r8
  10:    25 ff 01 00 00           and    $0x1ff,%eax
  15:    41 39 f6                 cmp    %esi,%r14d
  18:    89 45 bc                 mov    %eax,-0x44(%rbp)
  1b:    89 c0                    mov    %eax,%eax
  1d:    49 8d 04 c0              lea    (%r8,%rax,8),%rax
  21:    48 89 45 b0              mov    %rax,-0x50(%rbp)
  25:    0f 84 e1 00 00 00        je     0x10c
  2b:    4c 8b 00                 mov    (%rax),%r8
  2e:    41 f6 c0 01              test   $0x1,%r8b
  32:    74 40                    je     0x74
  34:    4c 8b 0d 89 80 01 00     mov    0x18089(%rip),%r9        # 0x180c4
  3b:    4d 89 c2                 mov    %r8,%r10

Appears to be __direct_map()'s

        if (!is_shadow_present_pte(*iterator.sptep)) {
            u64 base_addr = iterator.addr;

%rax is 0xffff87ffffffffff. That is one less than the base of the direct map of
all physical memory.  So it looks like the code


static bool shadow_walk_okay(struct kvm_shadow_walk_iterator *iterator)
{
    if (iterator->level < PT_PAGE_TABLE_LEVEL)
        return false;

    iterator->index = SHADOW_PT_INDEX(iterator->addr, iterator->level);
    iterator->sptep    = ((u64 *)__va(iterator->shadow_addr)) +
iterator->index;
    return true;
}

saw iterator->shadow_addr == -1ULL.

That might be INVALID_PAGE assigned to pae_root (but that is masked out in
shadow_walk_init()) or a stray -1 due to a completely unrelated bug.

Anything interesting about how this was triggered?

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux