Skip to content
  • John Hubbard's avatar
    mm/page_alloc.c: change mm debug routines back to EXPORT_SYMBOL · ed12d845
    John Hubbard authored
    A new dump_page() routine was recently added, and marked
    EXPORT_SYMBOL_GPL.  dump_page() was also added to the VM_BUG_ON_PAGE()
    macro, and so the end result is that non-GPL code can no longer call
    get_page() and a few other routines.
    
    This only happens if the kernel was compiled with CONFIG_DEBUG_VM.
    
    Change dump_page() to be EXPORT_SYMBOL.
    
    Longer explanation:
    
    Prior to commit 309381fe ("mm: dump page when hitting a VM_BUG_ON
    using VM_BUG_ON_PAGE") , it was possible to build MIT-licensed (non-GPL)
    drivers on Fedora.  Fedora is semi-unique, in that it sets
    CONFIG_VM_DEBUG.
    
    Because Fedora sets CONFIG_VM_DEBUG, they end up pulling in dump_page(),
    via VM_BUG_ON_PAGE, via get_page().  As one of the authors of NVIDIA's
    new, open source, "UVM-Lite" kernel module, I originally choose to use
    the kernel's get_page() routine from within nvidia_uvm_page_cache.c,
    because get_page() has always seemed to be very clearly intended for use
    by non-GPL, driver code.
    
    So I'm hoping that making get_page() widely accessible again will not be
    too controversial.  We did check with Fedora first, and they responded
    (https://bugzilla.redhat.com/show_bug.cgi?id=1074710#c3
    
    ) that we should
    try to get upstream changed, before asking Fedora to change.  Their
    reasoning seems beneficial to Linux: leaving CONFIG_DEBUG_VM set allows
    Fedora to help catch mm bugs.
    
    Signed-off-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Josh Boyer <jwboyer@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ed12d845