From 189f164e573e18d9f8876dbd3ad8fcbe11f93037 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Sat, 21 Feb 2026 23:46:04 -0800 Subject: Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses Conversion performed via this Coccinelle script: // SPDX-License-Identifier: GPL-2.0-only // Options: --include-headers-for-types --all-includes --include-headers --keep-comments virtual patch @gfp depends on patch && !(file in "tools") && !(file in "samples")@ identifier ALLOC = {kmalloc_obj,kmalloc_objs,kmalloc_flex, kzalloc_obj,kzalloc_objs,kzalloc_flex, kvmalloc_obj,kvmalloc_objs,kvmalloc_flex, kvzalloc_obj,kvzalloc_objs,kvzalloc_flex}; @@ ALLOC(... - , GFP_KERNEL ) $ make coccicheck MODE=patch COCCI=gfp.cocci Build and boot tested x86_64 with Fedora 42's GCC and Clang: Linux version 6.19.0+ (user@host) (gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7), GNU ld version 2.44-12.fc42) #1 SMP PREEMPT_DYNAMIC 1970-01-01 Linux version 6.19.0+ (user@host) (clang version 20.1.8 (Fedora 20.1.8-4.fc42), LLD 20.1.8) #1 SMP PREEMPT_DYNAMIC 1970-01-01 Signed-off-by: Kees Cook Signed-off-by: Linus Torvalds --- kernel/bpf/syscall.c | 2 +- kernel/events/hw_breakpoint.c | 2 +- kernel/locking/locktorture.c | 11 +++++------ kernel/rcu/rcuscale.c | 7 +++---- kernel/rcu/rcutorture.c | 4 ++-- kernel/rcu/tasks.h | 2 +- kernel/sched/ext_idle.c | 2 +- kernel/time/timer_migration.c | 2 +- kernel/trace/trace_events_synth.c | 3 +-- kernel/trace/trace_syscalls.c | 2 +- kernel/user_namespace.c | 2 +- 11 files changed, 18 insertions(+), 21 deletions(-) (limited to 'kernel') diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 2d14fb6d0ed0..0378e83b4099 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -6077,7 +6077,7 @@ static int bpf_prog_bind_map(union bpf_attr *attr) } used_maps_new = kmalloc_objs(used_maps_new[0], - prog->aux->used_map_cnt + 1, GFP_KERNEL); + prog->aux->used_map_cnt + 1); if (!used_maps_new) { ret = -ENOMEM; goto out_unlock; diff --git a/kernel/events/hw_breakpoint.c b/kernel/events/hw_breakpoint.c index 6c44fbdcfa4d..789add0c185a 100644 --- a/kernel/events/hw_breakpoint.c +++ b/kernel/events/hw_breakpoint.c @@ -186,7 +186,7 @@ static __init bool bp_slots_histogram_alloc(struct bp_slots_histogram *hist, enum bp_type_idx type) { hist->count = kzalloc_objs(*hist->count, - hw_breakpoint_slots_cached(type), GFP_KERNEL); + hw_breakpoint_slots_cached(type)); return hist->count; } diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c index 776a226fc237..e618bcf75e2d 100644 --- a/kernel/locking/locktorture.c +++ b/kernel/locking/locktorture.c @@ -611,7 +611,7 @@ static void torture_ww_mutex_init(void) ww_mutex_init(&torture_ww_mutex_2, &torture_ww_class); ww_acquire_ctxs = kmalloc_objs(*ww_acquire_ctxs, - cxt.nrealwriters_stress, GFP_KERNEL); + cxt.nrealwriters_stress); if (!ww_acquire_ctxs) VERBOSE_TOROUT_STRING("ww_acquire_ctx: Out of memory"); } @@ -1129,7 +1129,7 @@ static int call_rcu_chain_init(void) if (call_rcu_chains <= 0) return 0; call_rcu_chain_list = kzalloc_objs(*call_rcu_chain_list, - call_rcu_chains, GFP_KERNEL); + call_rcu_chains); if (!call_rcu_chain_list) return -ENOMEM; for (i = 0; i < call_rcu_chains; i++) { @@ -1322,8 +1322,7 @@ static int __init lock_torture_init(void) if (nreaders_stress) { cxt.lrsa = kmalloc_objs(*cxt.lrsa, - cxt.nrealreaders_stress, - GFP_KERNEL); + cxt.nrealreaders_stress); if (cxt.lrsa == NULL) { VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory"); firsterr = -ENOMEM; @@ -1371,7 +1370,7 @@ static int __init lock_torture_init(void) if (nwriters_stress) { writer_tasks = kzalloc_objs(writer_tasks[0], - cxt.nrealwriters_stress, GFP_KERNEL); + cxt.nrealwriters_stress); if (writer_tasks == NULL) { TOROUT_ERRSTRING("writer_tasks: Out of memory"); firsterr = -ENOMEM; @@ -1385,7 +1384,7 @@ static int __init lock_torture_init(void) if (cxt.cur_ops->readlock) { reader_tasks = kzalloc_objs(reader_tasks[0], - cxt.nrealreaders_stress, GFP_KERNEL); + cxt.nrealreaders_stress); if (reader_tasks == NULL) { TOROUT_ERRSTRING("reader_tasks: Out of memory"); kfree(writer_tasks); diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c index 16adcbecf875..4ac2b134a983 100644 --- a/kernel/rcu/rcuscale.c +++ b/kernel/rcu/rcuscale.c @@ -909,7 +909,7 @@ kfree_scale_init(void) kfree_by_call_rcu); kfree_reader_tasks = kzalloc_objs(kfree_reader_tasks[0], - kfree_nrealthreads, GFP_KERNEL); + kfree_nrealthreads); if (kfree_reader_tasks == NULL) { firsterr = -ENOMEM; goto unwind; @@ -1156,7 +1156,7 @@ rcu_scale_init(void) goto unwind; } writer_freelists = kzalloc_objs(writer_freelists[0], - nrealwriters, GFP_KERNEL); + nrealwriters); } if (!writer_tasks || !writer_durations || !writer_n_durations || !writer_done || (gp_async && !writer_freelists)) { @@ -1178,8 +1178,7 @@ rcu_scale_init(void) init_llist_head(&wflp->ws_lhg); init_llist_head(&wflp->ws_lhp); wflp->ws_mblocks = kzalloc_objs(wflp->ws_mblocks[0], - gp_async_max, - GFP_KERNEL); + gp_async_max); if (!wflp->ws_mblocks) { firsterr = -ENOMEM; goto unwind; diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 9279bb57586b..8a9282a0245c 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -4549,7 +4549,7 @@ rcu_torture_init(void) rcu_torture_write_types(); if (nrealfakewriters > 0) { fakewriter_tasks = kzalloc_objs(fakewriter_tasks[0], - nrealfakewriters, GFP_KERNEL); + nrealfakewriters); if (fakewriter_tasks == NULL) { TOROUT_ERRSTRING("out of memory"); firsterr = -ENOMEM; @@ -4564,7 +4564,7 @@ rcu_torture_init(void) } reader_tasks = kzalloc_objs(reader_tasks[0], nrealreaders); rcu_torture_reader_mbchk = kzalloc_objs(*rcu_torture_reader_mbchk, - nrealreaders, GFP_KERNEL); + nrealreaders); if (!reader_tasks || !rcu_torture_reader_mbchk) { TOROUT_ERRSTRING("out of memory"); firsterr = -ENOMEM; diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index d9ccf18eb035..2b55e6acf3c1 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -260,7 +260,7 @@ static void cblist_init_generic(struct rcu_tasks *rtp) lim = rcu_task_enqueue_lim; rtp->rtpcp_array = kzalloc_objs(struct rcu_tasks_percpu *, - num_possible_cpus(), GFP_KERNEL); + num_possible_cpus()); BUG_ON(!rtp->rtpcp_array); for_each_possible_cpu(cpu) { diff --git a/kernel/sched/ext_idle.c b/kernel/sched/ext_idle.c index cd630772e164..c5a3b0bac7c3 100644 --- a/kernel/sched/ext_idle.c +++ b/kernel/sched/ext_idle.c @@ -665,7 +665,7 @@ void scx_idle_init_masks(void) /* Allocate per-node idle cpumasks */ scx_idle_node_masks = kzalloc_objs(*scx_idle_node_masks, - num_possible_nodes(), GFP_KERNEL); + num_possible_nodes()); BUG_ON(!scx_idle_node_masks); for_each_node(i) { diff --git a/kernel/time/timer_migration.c b/kernel/time/timer_migration.c index a8421f3025cd..c1ed0d5e8de6 100644 --- a/kernel/time/timer_migration.c +++ b/kernel/time/timer_migration.c @@ -2002,7 +2002,7 @@ static int __init tmigr_init(void) tmigr_crossnode_level = cpulvl; tmigr_level_list = kzalloc_objs(struct list_head, - tmigr_hierarchy_levels, GFP_KERNEL); + tmigr_hierarchy_levels); if (!tmigr_level_list) goto err; diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index 7303491e299d..8bb95b2a6fcf 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -999,8 +999,7 @@ static struct synth_event *alloc_synth_event(const char *name, int n_fields, if (n_dynamic_fields) { event->dynamic_fields = kzalloc_objs(*event->dynamic_fields, - n_dynamic_fields, - GFP_KERNEL); + n_dynamic_fields); if (!event->dynamic_fields) { free_synth_event(event); event = ERR_PTR(-ENOMEM); diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 6ecae3e6d10a..37317b81fcda 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c @@ -1338,7 +1338,7 @@ void __init init_ftrace_syscalls(void) if (!IS_ENABLED(CONFIG_HAVE_SPARSE_SYSCALL_NR)) { syscalls_metadata = kzalloc_objs(*syscalls_metadata, - NR_syscalls, GFP_KERNEL); + NR_syscalls); if (!syscalls_metadata) { WARN_ON(1); return; diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c index bb42a4c35dd3..0bed462e9b2a 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c @@ -795,7 +795,7 @@ static int insert_extent(struct uid_gid_map *map, struct uid_gid_extent *extent) /* Allocate memory for 340 mappings. */ forward = kmalloc_objs(struct uid_gid_extent, - UID_GID_MAP_MAX_EXTENTS, GFP_KERNEL); + UID_GID_MAP_MAX_EXTENTS); if (!forward) return -ENOMEM; -- cgit v1.2.3