62 lines
2.2 KiB
Diff
62 lines
2.2 KiB
Diff
Bugzilla: 1074710
|
|
Upstream-status: 3.15
|
|
|
|
From ed12d845b5f528cc0846023862b9c448a36122ec Mon Sep 17 00:00:00 2001
|
|
From: John Hubbard <jhubbard@nvidia.com>
|
|
Date: Mon, 7 Apr 2014 15:37:59 -0700
|
|
Subject: [PATCH] mm/page_alloc.c: change mm debug routines back to
|
|
EXPORT_SYMBOL
|
|
|
|
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 309381feaee5 ("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: John Hubbard <jhubbard@nvidia.com>
|
|
Cc: Sasha Levin <sasha.levin@oracle.com>
|
|
Cc: Josh Boyer <jwboyer@redhat.com>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
---
|
|
mm/page_alloc.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
|
index 48427a7cfb45..5dba2933c9c0 100644
|
|
--- a/mm/page_alloc.c
|
|
+++ b/mm/page_alloc.c
|
|
@@ -6568,4 +6568,4 @@ void dump_page(struct page *page, const char *reason)
|
|
{
|
|
dump_page_badflags(page, reason, 0);
|
|
}
|
|
-EXPORT_SYMBOL_GPL(dump_page);
|
|
+EXPORT_SYMBOL(dump_page);
|
|
--
|
|
1.9.0
|
|
|