| From: Danilo Krummrich <dakr@kernel.org> |
| Subject: mm: vrealloc: fix missing nommu implementation |
| Date: Thu, 25 Jul 2024 16:11:59 +0200 |
| |
| Commit 5ec6d992f460 ("mm: vmalloc: implement vrealloc()") introduces |
| vrealloc(), but lacks the implementation of the nommu version of this |
| function. |
| |
| Note that currently nommu isn't actually broken without this. The only |
| user, kvrealloc(), never actually calls into vrealloc() with nommu, since |
| it's guarded by is_vmalloc_addr(), which for nommu always returns false. |
| |
| However, since this becomes a real issue once vrealloc() is used by other |
| code, fix this. |
| |
| Link: https://lkml.kernel.org/r/20240725141227.13954-1-dakr@kernel.org |
| Fixes: 5ec6d992f460 ("mm: vmalloc: implement vrealloc()") |
| Signed-off-by: Danilo Krummrich <dakr@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/nommu.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/mm/nommu.c~mm-vmalloc-implement-vrealloc-fix |
| +++ a/mm/nommu.c |
| @@ -126,6 +126,11 @@ void *__vmalloc_noprof(unsigned long siz |
| } |
| EXPORT_SYMBOL(__vmalloc_noprof); |
| |
| +void *vrealloc_noprof(const void *p, size_t size, gfp_t flags) |
| +{ |
| + return krealloc_noprof(p, size, (flags | __GFP_COMP) & ~__GFP_HIGHMEM); |
| +} |
| + |
| void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align, |
| unsigned long start, unsigned long end, gfp_t gfp_mask, |
| pgprot_t prot, unsigned long vm_flags, int node, |
| _ |