* [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
@ 2025-11-12 18:58 ` Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps Vishal Moola (Oracle)
` (5 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-12 18:58 UTC (permalink / raw)
To: linux-mm, linux-kernel, bpf
Cc: Uladzislau Rezki, Andrew Morton, Christoph Hellwig,
Vishal Moola (Oracle),
Christoph Hellwig
Vmalloc explicitly supports a list of flags, but we never enforce them.
vmalloc has been trying to handle unsupported flags by clearing and
setting flags wherever necessary. This is messy and makes the code
harder to understand, when we could simply check for a supported input
immediately instead.
Define a helper mask and function telling callers they have passed in
invalid flags, and clear those unsupported vmalloc flags.
Suggested-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
mm/vmalloc.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 0832f944544c..802a189f8d83 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -3911,6 +3911,26 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
return NULL;
}
+/*
+ * See __vmalloc_node_range() for a clear list of supported vmalloc flags.
+ * This gfp lists all flags currently passed through vmalloc. Currently,
+ * __GFP_ZERO is used by BPF and __GFP_NORETRY is used by percpu. Both drm
+ * and BPF also use GFP_USER, which is GFP_KERNEL | __GFP_HARDWALL.
+ */
+#define GFP_VMALLOC_SUPPORTED (GFP_KERNEL | GFP_ATOMIC | GFP_NOWAIT |\
+ __GFP_NOFAIL | __GFP_ZERO | __GFP_NORETRY |\
+ __GFP_HARDWALL)
+
+static gfp_t vmalloc_fix_flags(gfp_t flags)
+{
+ gfp_t invalid_mask = flags & ~GFP_VMALLOC_SUPPORTED;
+
+ flags &= GFP_VMALLOC_SUPPORTED;
+ WARN(1, "Unexpected gfp: %#x (%pGg). Fixing up to gfp: %#x (%pGg). Fix your code!\n",
+ invalid_mask, &invalid_mask, flags, &flags);
+ return flags;
+}
+
/**
* __vmalloc_node_range - allocate virtually contiguous memory
* @size: allocation size
@@ -4092,6 +4112,8 @@ EXPORT_SYMBOL_GPL(__vmalloc_node_noprof);
void *__vmalloc_noprof(unsigned long size, gfp_t gfp_mask)
{
+ if (unlikely(gfp_mask & ~GFP_VMALLOC_SUPPORTED))
+ gfp_mask = vmalloc_fix_flags(gfp_mask);
return __vmalloc_node_noprof(size, 1, gfp_mask, NUMA_NO_NODE,
__builtin_return_address(0));
}
@@ -4131,6 +4153,8 @@ EXPORT_SYMBOL(vmalloc_noprof);
*/
void *vmalloc_huge_node_noprof(unsigned long size, gfp_t gfp_mask, int node)
{
+ if (unlikely(gfp_mask & ~GFP_VMALLOC_SUPPORTED))
+ gfp_mask = vmalloc_fix_flags(gfp_mask);
return __vmalloc_node_range_noprof(size, 1, VMALLOC_START, VMALLOC_END,
gfp_mask, PAGE_KERNEL, VM_ALLOW_HUGE_VMAP,
node, __builtin_return_address(0));
--
2.51.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags Vishal Moola (Oracle)
@ 2025-11-12 18:58 ` Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages() Vishal Moola (Oracle)
` (4 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-12 18:58 UTC (permalink / raw)
To: linux-mm, linux-kernel, bpf
Cc: Uladzislau Rezki, Andrew Morton, Christoph Hellwig,
Vishal Moola (Oracle)
vm_area_alloc_pages() attempts to use different gfp flags as a way
to optimize allocations. This has been done inline which makes things
harder to read.
Add a helper function to make the code more readable.
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
---
mm/vmalloc.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 802a189f8d83..c0876ccf3447 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -3614,6 +3614,17 @@ void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot)
EXPORT_SYMBOL_GPL(vmap_pfn);
#endif /* CONFIG_VMAP_PFN */
+/*
+ * Helper for vmalloc to adjust the gfp flags for certain allocations.
+ */
+static inline gfp_t vmalloc_gfp_adjust(gfp_t flags, const bool large)
+{
+ flags |= __GFP_NOWARN;
+ if (large)
+ flags &= ~__GFP_NOFAIL;
+ return flags;
+}
+
static inline unsigned int
vm_area_alloc_pages(gfp_t gfp, int nid,
unsigned int order, unsigned int nr_pages, struct page **pages)
@@ -3852,9 +3863,9 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
* Please note, the __vmalloc_node_range_noprof() falls-back
* to order-0 pages if high-order attempt is unsuccessful.
*/
- area->nr_pages = vm_area_alloc_pages((page_order ?
- gfp_mask & ~__GFP_NOFAIL : gfp_mask) | __GFP_NOWARN,
- node, page_order, nr_small_pages, area->pages);
+ area->nr_pages = vm_area_alloc_pages(
+ vmalloc_gfp_adjust(gfp_mask, page_order), node,
+ page_order, nr_small_pages, area->pages);
atomic_long_add(area->nr_pages, &nr_vmalloc_pages);
/* All pages of vm should be charged to same memcg, so use first one. */
--
2.51.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages()
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps Vishal Moola (Oracle)
@ 2025-11-12 18:58 ` Vishal Moola (Oracle)
2025-11-12 18:58 ` [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block() Vishal Moola (Oracle)
` (3 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-12 18:58 UTC (permalink / raw)
To: linux-mm, linux-kernel, bpf
Cc: Uladzislau Rezki, Andrew Morton, Christoph Hellwig,
Vishal Moola (Oracle)
Now that we have already checked for unsupported flags, we can use the
helper function to set the necessary gfp flags for the large order
allocation optimization.
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
---
mm/vmalloc.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index c0876ccf3447..6a3ee36d77c5 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -3634,10 +3634,8 @@ vm_area_alloc_pages(gfp_t gfp, int nid,
unsigned int max_attempt_order = MAX_PAGE_ORDER;
struct page *page;
int i;
- gfp_t large_gfp = (gfp &
- ~(__GFP_DIRECT_RECLAIM | __GFP_NOFAIL | __GFP_COMP))
- | __GFP_NOWARN;
unsigned int large_order = ilog2(nr_remaining);
+ gfp_t large_gfp = vmalloc_gfp_adjust(gfp, large_order) & ~__GFP_DIRECT_RECLAIM;
large_order = min(max_attempt_order, large_order);
--
2.51.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block()
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
` (2 preceding siblings ...)
2025-11-12 18:58 ` [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages() Vishal Moola (Oracle)
@ 2025-11-12 18:58 ` Vishal Moola (Oracle)
2025-11-12 22:22 ` [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Andrew Morton
` (2 subsequent siblings)
6 siblings, 0 replies; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-12 18:58 UTC (permalink / raw)
To: linux-mm, linux-kernel, bpf
Cc: Uladzislau Rezki, Andrew Morton, Christoph Hellwig,
Vishal Moola (Oracle)
The only caller, vb_alloc(), passes GFP_KERNEL into new_vmap_block()
which is a subset of GFP_RECLAIM_MASK. Since there's no reason to use
this mask here, remove it.
Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
mm/vmalloc.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 6a3ee36d77c5..49e0b68768d7 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -2699,8 +2699,7 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask)
node = numa_node_id();
- vb = kmalloc_node(sizeof(struct vmap_block),
- gfp_mask & GFP_RECLAIM_MASK, node);
+ vb = kmalloc_node(sizeof(struct vmap_block), gfp_mask, node);
if (unlikely(!vb))
return ERR_PTR(-ENOMEM);
--
2.51.1
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v2 0/4] make vmalloc gfp flags usage more apparent
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
` (3 preceding siblings ...)
2025-11-12 18:58 ` [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block() Vishal Moola (Oracle)
@ 2025-11-12 22:22 ` Andrew Morton
2025-11-13 3:48 ` Baolin Wang
2025-11-13 7:41 ` [syzbot ci] " syzbot ci
6 siblings, 0 replies; 12+ messages in thread
From: Andrew Morton @ 2025-11-12 22:22 UTC (permalink / raw)
To: Vishal Moola (Oracle)
Cc: linux-mm, linux-kernel, bpf, Uladzislau Rezki, Christoph Hellwig
On Wed, 12 Nov 2025 10:58:29 -0800 "Vishal Moola (Oracle)" <vishal.moola@gmail.com> wrote:
> v2:
> - Add __GFP_HARDWALL[3] for bpf and drm users.
> - cc BPF mailing list
v1->v2 diff:
--- a/mm/vmalloc.c~b
+++ a/mm/vmalloc.c
@@ -3922,10 +3922,12 @@ fail:
/*
* See __vmalloc_node_range() for a clear list of supported vmalloc flags.
* This gfp lists all flags currently passed through vmalloc. Currently,
- * __GFP_ZERO is used by BFP and __GFP_NORETRY is used by percpu.
+ * __GFP_ZERO is used by BPF and __GFP_NORETRY is used by percpu. Both drm
+ * and BPF also use GFP_USER, which is GFP_KERNEL | __GFP_HARDWALL.
*/
#define GFP_VMALLOC_SUPPORTED (GFP_KERNEL | GFP_ATOMIC | GFP_NOWAIT |\
- __GFP_NOFAIL | __GFP_ZERO | __GFP_NORETRY)
+ __GFP_NOFAIL | __GFP_ZERO | __GFP_NORETRY |\
+ __GFP_HARDWALL)
static gfp_t vmalloc_fix_flags(gfp_t flags)
{
_
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v2 0/4] make vmalloc gfp flags usage more apparent
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
` (4 preceding siblings ...)
2025-11-12 22:22 ` [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Andrew Morton
@ 2025-11-13 3:48 ` Baolin Wang
2025-11-13 16:01 ` Vishal Moola (Oracle)
2025-11-13 7:41 ` [syzbot ci] " syzbot ci
6 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2025-11-13 3:48 UTC (permalink / raw)
To: Vishal Moola (Oracle), linux-mm, linux-kernel, bpf
Cc: Uladzislau Rezki, Andrew Morton, Christoph Hellwig
Hi,
On 2025/11/13 02:58, Vishal Moola (Oracle) wrote:
> We should do a better job at enforcing gfp flags for vmalloc. Right now, we
> have a kernel-doc for __vmalloc_node_range(), and hope callers pass in
> supported flags. If a caller were to pass in an unsupported flag, we may
> BUG, silently clear it, or completely ignore it.
>
> If we are more proactive about enforcing gfp flags, we can making sure
> callers know when they may be asking for unsupported behavior.
>
> This patchset lets vmalloc control the incoming gfp flags, and cleans up
> some hard to read gfp code.
>
> ---
> Linked rfc [1] and rfc v2[2] for convenience.
Just FYI, I hit this warning when booting today's mm-new branch.
[ 1.238451] ------------[ cut here ]------------
[ 1.238453] Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to
gfp: 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
[ 1.249347] WARNING: CPU: 27 PID: 338 at mm/vmalloc.c:3937
__vmalloc_noprof+0x74/0x80
[ 1.249352] Modules linked in:
[ 1.249354] CPU: 27 UID: 0 PID: 338 Comm: (journald) Not tainted
6.18.0-rc5+ #55 PREEMPT(none)
[ 1.249357] RIP: 0010:__vmalloc_noprof+0x74/0x80
[ 1.249359] Code: 00 5d e9 6f f8 ff ff 89 d1 49 89 e0 48 8d 54 24 04
89 74 24 04 81 e1 e0 ad 11 00 48 c7 c7 68 b0 75 82 89 0c 24 e8 7c bf ce
ff <0f> 0b 8b 14 24 eb ab e8 f0 61 a5 00 90
90 90 90 90 90 90 90 90 90
[ 1.249360] RSP: 0018:ffffc90000bebe08 EFLAGS: 00010286
[ 1.249362] RAX: 0000000000000000 RBX: 0000000000001000 RCX:
ffffffff82fdee68
[ 1.249363] RDX: 000000000000001b RSI: 0000000000000000 RDI:
ffffffff82a5ee60
[ 1.249364] RBP: 0000000000001000 R08: 0000000000000000 R09:
ffffc90000bebcb8
[ 1.249364] R10: ffffc90000bebcb0 R11: ffffffff8315eea8 R12:
ffff88810aac98c0
[ 1.249365] R13: 0000000000000000 R14: ffffffff8141abe0 R15:
fffffffffffffff3
[ 1.249368] FS: 00007fbc9436ee80(0000) GS:ffff88bec00e1000(0000)
knlGS:0000000000000000
[ 1.249370] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1.249371] CR2: 0000562248eda010 CR3: 00000001028a8005 CR4:
0000000000770ef0
[ 1.249371] PKRU: 55555554
[ 1.249372] Call Trace:
[ 1.249373] <TASK>
[ 1.249374] bpf_prog_alloc_no_stats+0x37/0x250
[ 1.249377] ? __pfx_seccomp_check_filter+0x10/0x10
[ 1.249379] bpf_prog_alloc+0x1a/0xa0
[ 1.249381] bpf_prog_create_from_user+0x51/0x130
[ 1.249385] seccomp_set_mode_filter+0x117/0x410
[ 1.249387] do_syscall_64+0x5b/0xda0
[ 1.249390] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 1.249392] RIP: 0033:0x7fbc94f4c9cd
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v2 0/4] make vmalloc gfp flags usage more apparent
2025-11-13 3:48 ` Baolin Wang
@ 2025-11-13 16:01 ` Vishal Moola (Oracle)
0 siblings, 0 replies; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-13 16:01 UTC (permalink / raw)
To: Baolin Wang
Cc: linux-mm, linux-kernel, bpf, Uladzislau Rezki, Andrew Morton,
Christoph Hellwig
On Thu, Nov 13, 2025 at 11:48:05AM +0800, Baolin Wang wrote:
> Hi,
>
> On 2025/11/13 02:58, Vishal Moola (Oracle) wrote:
> > We should do a better job at enforcing gfp flags for vmalloc. Right now, we
> > have a kernel-doc for __vmalloc_node_range(), and hope callers pass in
> > supported flags. If a caller were to pass in an unsupported flag, we may
> > BUG, silently clear it, or completely ignore it.
> >
> > If we are more proactive about enforcing gfp flags, we can making sure
> > callers know when they may be asking for unsupported behavior.
> >
> > This patchset lets vmalloc control the incoming gfp flags, and cleans up
> > some hard to read gfp code.
> >
> > ---
> > Linked rfc [1] and rfc v2[2] for convenience.
>
> Just FYI, I hit this warning when booting today's mm-new branch.
>
> [ 1.238451] ------------[ cut here ]------------
> [ 1.238453] Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to gfp:
Thanks. I'll send an updated version that catches this next week. In the
meantime, do let me know if you find any more warnings for other gfp
flags.
> 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
> [ 1.249347] WARNING: CPU: 27 PID: 338 at mm/vmalloc.c:3937
> __vmalloc_noprof+0x74/0x80
> [ 1.249352] Modules linked in:
> [ 1.249354] CPU: 27 UID: 0 PID: 338 Comm: (journald) Not tainted
> 6.18.0-rc5+ #55 PREEMPT(none)
> [ 1.249357] RIP: 0010:__vmalloc_noprof+0x74/0x80
> [ 1.249359] Code: 00 5d e9 6f f8 ff ff 89 d1 49 89 e0 48 8d 54 24 04 89
> 74 24 04 81 e1 e0 ad 11 00 48 c7 c7 68 b0 75 82 89 0c 24 e8 7c bf ce ff <0f>
> 0b 8b 14 24 eb ab e8 f0 61 a5 00 90
> 90 90 90 90 90 90 90 90 90
> [ 1.249360] RSP: 0018:ffffc90000bebe08 EFLAGS: 00010286
> [ 1.249362] RAX: 0000000000000000 RBX: 0000000000001000 RCX:
> ffffffff82fdee68
> [ 1.249363] RDX: 000000000000001b RSI: 0000000000000000 RDI:
> ffffffff82a5ee60
> [ 1.249364] RBP: 0000000000001000 R08: 0000000000000000 R09:
> ffffc90000bebcb8
> [ 1.249364] R10: ffffc90000bebcb0 R11: ffffffff8315eea8 R12:
> ffff88810aac98c0
> [ 1.249365] R13: 0000000000000000 R14: ffffffff8141abe0 R15:
> fffffffffffffff3
> [ 1.249368] FS: 00007fbc9436ee80(0000) GS:ffff88bec00e1000(0000)
> knlGS:0000000000000000
> [ 1.249370] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1.249371] CR2: 0000562248eda010 CR3: 00000001028a8005 CR4:
> 0000000000770ef0
> [ 1.249371] PKRU: 55555554
> [ 1.249372] Call Trace:
> [ 1.249373] <TASK>
> [ 1.249374] bpf_prog_alloc_no_stats+0x37/0x250
> [ 1.249377] ? __pfx_seccomp_check_filter+0x10/0x10
> [ 1.249379] bpf_prog_alloc+0x1a/0xa0
> [ 1.249381] bpf_prog_create_from_user+0x51/0x130
> [ 1.249385] seccomp_set_mode_filter+0x117/0x410
> [ 1.249387] do_syscall_64+0x5b/0xda0
> [ 1.249390] entry_SYSCALL_64_after_hwframe+0x76/0x7e
> [ 1.249392] RIP: 0033:0x7fbc94f4c9cd
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [syzbot ci] Re: make vmalloc gfp flags usage more apparent
2025-11-12 18:58 [PATCH v2 0/4] make vmalloc gfp flags usage more apparent Vishal Moola (Oracle)
` (5 preceding siblings ...)
2025-11-13 3:48 ` Baolin Wang
@ 2025-11-13 7:41 ` syzbot ci
2025-11-13 13:33 ` Uladzislau Rezki
6 siblings, 1 reply; 12+ messages in thread
From: syzbot ci @ 2025-11-13 7:41 UTC (permalink / raw)
To: akpm, bpf, hch, hch, linux-kernel, linux-mm, urezki, vishal.moola
Cc: syzbot, syzkaller-bugs
syzbot ci has tested the following series
[v2] make vmalloc gfp flags usage more apparent
https://lore.kernel.org/all/20251112185834.32487-1-vishal.moola@gmail.com
* [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags
* [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps
* [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages()
* [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block()
and found the following issue:
WARNING: kmalloc bug in bpf_prog_alloc_no_stats
Full report is available here:
https://ci.syzbot.org/series/46d6cb1a-188d-4ff5-8fab-9c58465d74d3
***
WARNING: kmalloc bug in bpf_prog_alloc_no_stats
tree: linux-next
URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next
base: b179ce312bafcb8c68dc718e015aee79b7939ff0
arch: amd64
compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
config: https://ci.syzbot.org/builds/3449e2a5-35e0-4eac-86c6-97ca0ec741d7/config
------------[ cut here ]------------
Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to gfp: 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
WARNING: mm/vmalloc.c:3938 at vmalloc_fix_flags+0x9c/0xe0, CPU#1: syz-executor/6079
Modules linked in:
CPU: 1 UID: 0 PID: 6079 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
RIP: 0010:vmalloc_fix_flags+0x9c/0xe0
Code: 81 e6 1f 52 ee ff 89 74 24 30 81 e3 e0 ad 11 00 89 5c 24 20 90 48 c7 c7 40 c3 76 8b 4c 89 fa 89 d9 4d 89 f0 e8 a5 a1 6c ff 90 <0f> 0b 90 90 8b 44 24 20 48 c7 04 24 0e 36 e0 45 4b c7 04 2c 00 00
RSP: 0018:ffffc90005557b00 EFLAGS: 00010246
RAX: a6bff5ae8e950700 RBX: 0000000000000dc0 RCX: ffff888173b29d40
RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000002
RBP: ffffc90005557b98 R08: 0000000000000003 R09: 0000000000000004
R10: dffffc0000000000 R11: fffffbfff1bba6ec R12: 1ffff92000aaaf60
R13: dffffc0000000000 R14: ffffc90005557b20 R15: ffffc90005557b30
FS: 000055557c070500(0000) GS:ffff8882a9ec0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f86f6df0000 CR3: 0000000113d64000 CR4: 00000000000006f0
Call Trace:
<TASK>
__vmalloc_noprof+0xf2/0x120
bpf_prog_alloc_no_stats+0x4a/0x4d0
bpf_prog_alloc+0x3c/0x1a0
bpf_prog_create_from_user+0xa7/0x440
do_seccomp+0x7b1/0xd90
__se_sys_prctl+0xc3c/0x1830
do_syscall_64+0xfa/0xfa0
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fcbe2f90b0d
Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 18 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 9d 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 1b 48 8b 54 24 18 64 48 2b 14 25 28 00 00 00
RSP: 002b:00007ffed4000b80 EFLAGS: 00000246 ORIG_RAX: 000000000000009d
RAX: ffffffffffffffda RBX: 00007fcbe302cf80 RCX: 00007fcbe2f90b0d
RDX: 00007ffed4000be0 RSI: 0000000000000002 RDI: 0000000000000016
RBP: 00007ffed4000bf0 R08: 0000000000000006 R09: 0000000000000071
R10: 0000000000000071 R11: 0000000000000246 R12: 000000000000006d
R13: 00007ffed4001018 R14: 00007ffed4001298 R15: 0000000000000000
</TASK>
***
If these findings have caused you to resend the series or submit a
separate fix, please add the following tag to your commit message:
Tested-by: syzbot@syzkaller.appspotmail.com
---
This report is generated by a bot. It may contain errors.
syzbot ci engineers can be reached at syzkaller@googlegroups.com.
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [syzbot ci] Re: make vmalloc gfp flags usage more apparent
2025-11-13 7:41 ` [syzbot ci] " syzbot ci
@ 2025-11-13 13:33 ` Uladzislau Rezki
2025-11-13 16:48 ` Vishal Moola (Oracle)
0 siblings, 1 reply; 12+ messages in thread
From: Uladzislau Rezki @ 2025-11-13 13:33 UTC (permalink / raw)
To: vishal.moola
Cc: akpm, bpf, hch, hch, linux-kernel, linux-mm, urezki,
vishal.moola, syzbot, syzkaller-bugs
On Wed, Nov 12, 2025 at 11:41:37PM -0800, syzbot ci wrote:
> syzbot ci has tested the following series
>
> [v2] make vmalloc gfp flags usage more apparent
> https://lore.kernel.org/all/20251112185834.32487-1-vishal.moola@gmail.com
> * [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags
> * [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps
> * [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages()
> * [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block()
>
> and found the following issue:
> WARNING: kmalloc bug in bpf_prog_alloc_no_stats
>
> Full report is available here:
> https://ci.syzbot.org/series/46d6cb1a-188d-4ff5-8fab-9c58465d74d3
>
> ***
>
> WARNING: kmalloc bug in bpf_prog_alloc_no_stats
>
> tree: linux-next
> URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next
> base: b179ce312bafcb8c68dc718e015aee79b7939ff0
> arch: amd64
> compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
> config: https://ci.syzbot.org/builds/3449e2a5-35e0-4eac-86c6-97ca0ec741d7/config
>
> ------------[ cut here ]------------
> Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to gfp: 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
> WARNING: mm/vmalloc.c:3938 at vmalloc_fix_flags+0x9c/0xe0, CPU#1: syz-executor/6079
> Modules linked in:
>
Again bpf :)
GFP_KERNEL_ACCOUNT? I saw there have been __GFP_HARDWALL added already,
IMO it is worth to replace it by "high level flag", which is GFP_USER.
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot ci] Re: make vmalloc gfp flags usage more apparent
2025-11-13 13:33 ` Uladzislau Rezki
@ 2025-11-13 16:48 ` Vishal Moola (Oracle)
2025-11-13 16:54 ` Uladzislau Rezki
0 siblings, 1 reply; 12+ messages in thread
From: Vishal Moola (Oracle) @ 2025-11-13 16:48 UTC (permalink / raw)
To: Uladzislau Rezki
Cc: akpm, bpf, hch, hch, linux-kernel, linux-mm, syzbot, syzkaller-bugs
On Thu, Nov 13, 2025 at 02:33:31PM +0100, Uladzislau Rezki wrote:
> On Wed, Nov 12, 2025 at 11:41:37PM -0800, syzbot ci wrote:
> > syzbot ci has tested the following series
> >
> > [v2] make vmalloc gfp flags usage more apparent
> > https://lore.kernel.org/all/20251112185834.32487-1-vishal.moola@gmail.com
> > * [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags
> > * [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps
> > * [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages()
> > * [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block()
> >
> > and found the following issue:
> > WARNING: kmalloc bug in bpf_prog_alloc_no_stats
> >
> > Full report is available here:
> > https://ci.syzbot.org/series/46d6cb1a-188d-4ff5-8fab-9c58465d74d3
> >
> > ***
> >
> > WARNING: kmalloc bug in bpf_prog_alloc_no_stats
> >
> > tree: linux-next
> > URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next
> > base: b179ce312bafcb8c68dc718e015aee79b7939ff0
> > arch: amd64
> > compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
> > config: https://ci.syzbot.org/builds/3449e2a5-35e0-4eac-86c6-97ca0ec741d7/config
> >
> > ------------[ cut here ]------------
> > Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to gfp: 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
> > WARNING: mm/vmalloc.c:3938 at vmalloc_fix_flags+0x9c/0xe0, CPU#1: syz-executor/6079
> > Modules linked in:
> >
> Again bpf :)
>
> GFP_KERNEL_ACCOUNT? I saw there have been __GFP_HARDWALL added already,
> IMO it is worth to replace it by "high level flag", which is GFP_USER.
Yeah I'll replace __GFP_HARDWALL with GFP_USER, and add
GFP_KERNEL_ACCOUNT. At this point I'll just add GFP_NOFS and GFP_NOIO
as well so its easier to understand the mask.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [syzbot ci] Re: make vmalloc gfp flags usage more apparent
2025-11-13 16:48 ` Vishal Moola (Oracle)
@ 2025-11-13 16:54 ` Uladzislau Rezki
0 siblings, 0 replies; 12+ messages in thread
From: Uladzislau Rezki @ 2025-11-13 16:54 UTC (permalink / raw)
To: Vishal Moola (Oracle)
Cc: Uladzislau Rezki, akpm, bpf, hch, hch, linux-kernel, linux-mm,
syzbot, syzkaller-bugs
On Thu, Nov 13, 2025 at 08:48:41AM -0800, Vishal Moola (Oracle) wrote:
> On Thu, Nov 13, 2025 at 02:33:31PM +0100, Uladzislau Rezki wrote:
> > On Wed, Nov 12, 2025 at 11:41:37PM -0800, syzbot ci wrote:
> > > syzbot ci has tested the following series
> > >
> > > [v2] make vmalloc gfp flags usage more apparent
> > > https://lore.kernel.org/all/20251112185834.32487-1-vishal.moola@gmail.com
> > > * [PATCH v2 1/4] mm/vmalloc: warn on invalid vmalloc gfp flags
> > > * [PATCH v2 2/4] mm/vmalloc: Add a helper to optimize vmalloc allocation gfps
> > > * [PATCH v2 3/4] mm/vmalloc: cleanup large_gfp in vm_area_alloc_pages()
> > > * [PATCH v2 4/4] mm/vmalloc: cleanup gfp flag use in new_vmap_block()
> > >
> > > and found the following issue:
> > > WARNING: kmalloc bug in bpf_prog_alloc_no_stats
> > >
> > > Full report is available here:
> > > https://ci.syzbot.org/series/46d6cb1a-188d-4ff5-8fab-9c58465d74d3
> > >
> > > ***
> > >
> > > WARNING: kmalloc bug in bpf_prog_alloc_no_stats
> > >
> > > tree: linux-next
> > > URL: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next
> > > base: b179ce312bafcb8c68dc718e015aee79b7939ff0
> > > arch: amd64
> > > compiler: Debian clang version 20.1.8 (++20250708063551+0c9f909b7976-1~exp1~20250708183702.136), Debian LLD 20.1.8
> > > config: https://ci.syzbot.org/builds/3449e2a5-35e0-4eac-86c6-97ca0ec741d7/config
> > >
> > > ------------[ cut here ]------------
> > > Unexpected gfp: 0x400000 (__GFP_ACCOUNT). Fixing up to gfp: 0xdc0 (GFP_KERNEL|__GFP_ZERO). Fix your code!
> > > WARNING: mm/vmalloc.c:3938 at vmalloc_fix_flags+0x9c/0xe0, CPU#1: syz-executor/6079
> > > Modules linked in:
> > >
> > Again bpf :)
> >
> > GFP_KERNEL_ACCOUNT? I saw there have been __GFP_HARDWALL added already,
> > IMO it is worth to replace it by "high level flag", which is GFP_USER.
>
> Yeah I'll replace __GFP_HARDWALL with GFP_USER, and add
> GFP_KERNEL_ACCOUNT. At this point I'll just add GFP_NOFS and GFP_NOIO
> as well so its easier to understand the mask.
>
Sounds good!
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 12+ messages in thread