• Guenter Roeck's avatar
    x86/setup: Fix static memory detection · bac59d18
    Guenter Roeck authored
    When booting x86 images in qemu, the following warning is seen randomly
    if DEBUG_LOCKDEP is enabled.
    
      WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:1119
    	  lockdep_register_key+0xc0/0x100
    
    static_obj() returns true if an address is between _stext and _end.
    
    On x86, this includes the brk memory space. Problem is that this memory
    block is not static on x86; its unused portions are released after init
    and can be allocated. This results in the observed warning if a lockdep
    object is allocated from this memory.
    
    Solve the problem by implementing arch_is_kernel_initmem_freed() for
    x86 and have it return true if an address is within the released memory
    range.
    
    The same problem was solved for s390 with commit
    
      7a5da02d ("locking/lockdep: check for freed initmem in static_obj()"),
    
    which introduced arch_is_kernel_initmem_freed().
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200131021159.9178-1-linux@roeck-us.net
    bac59d18
setup.c 32.1 KB