Messages in this thread Patch in this message | | | Subject | [PATCH 2] mm/kvmalloc: do not call kmalloc for size > KMALLOC_MAX_SIZE | From | Konstantin Khlebnikov <> | Date | Thu, 01 Nov 2018 13:09:16 +0300 |
| |
Allocations over KMALLOC_MAX_SIZE could be served only by vmalloc.
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> --- mm/util.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/mm/util.c b/mm/util.c index 8bf08b5b5760..f5f04fa22814 100644 --- a/mm/util.c +++ b/mm/util.c @@ -392,6 +392,9 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node) gfp_t kmalloc_flags = flags; void *ret; + if (size > KMALLOC_MAX_SIZE) + goto fallback; + /* * vmalloc uses GFP_KERNEL for some internal allocations (e.g page tables) * so the given set of flags has to be compatible. @@ -422,6 +425,7 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node) if (ret || size <= PAGE_SIZE) return ret; +fallback: return __vmalloc_node_flags_caller(size, node, flags, __builtin_return_address(0)); }
| |