|
@@ -391,7 +391,8 @@ EXPORT_SYMBOL(vm_mmap);
|
|
|
* __GFP_RETRY_MAYFAIL is supported, and it should be used only if kmalloc is
|
|
|
* preferable to the vmalloc fallback, due to visible performance drawbacks.
|
|
|
*
|
|
|
- * Any use of gfp flags outside of GFP_KERNEL should be consulted with mm people.
|
|
|
+ * Please note that any use of gfp flags outside of GFP_KERNEL is careful to not
|
|
|
+ * fall back to vmalloc.
|
|
|
*/
|
|
|
void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
|
|
{
|
|
@@ -402,7 +403,8 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
|
|
* vmalloc uses GFP_KERNEL for some internal allocations (e.g page tables)
|
|
|
* so the given set of flags has to be compatible.
|
|
|
*/
|
|
|
- WARN_ON_ONCE((flags & GFP_KERNEL) != GFP_KERNEL);
|
|
|
+ if ((flags & GFP_KERNEL) != GFP_KERNEL)
|
|
|
+ return kmalloc_node(size, flags, node);
|
|
|
|
|
|
/*
|
|
|
* We want to attempt a large physically contiguous block first because
|