History

treewide: Replace kmalloc with kmalloc_obj for non-scalar types

This is the result of running the Coccinelle script from scripts/coccinelle/api/kmalloc_objs.cocci. The script is designed to avoid scalar types (which need careful case-by-case checking), and instead replace kmalloc-family calls that allocate struct or union object instances: Single allocations: kmalloc(sizeof(TYPE), ...) are replaced with: kmalloc_obj(TYPE, ...) Array allocations: kmalloc_array(COUNT, sizeof(TYPE), ...) are replaced with: kmalloc_objs(TYPE, COUNT, ...) Flex array allocations: kmalloc(struct_size(PTR, FAM, COUNT), ...) are replaced with: kmalloc_flex(*PTR, FAM, COUNT, ...) (where TYPE may also be *VAR) The resulting allocations no longer return "void *", instead returning "TYPE *".

Kees Cook committed 8 months ago

Commit 69050f81 parent d39a1d78016 files · +20055 −20913Browse files

Showing the changes to kernel/workqueue.c (1 of 8016 files). Show all

Unified · Split

kernel/workqueue.c+9−9
@@ -4714,7 +4714,7 @@ struct workqueue_attrs *alloc_workqueue_attrs_noprof(void) · 4713 unmodified lines
4714{4714{
4715 struct workqueue_attrs *attrs;4715 struct workqueue_attrs *attrs;
4716 4716
4717 attrs = kzalloc(sizeof(*attrs), GFP_KERNEL);4717 attrs = kzalloc_obj(*attrs, GFP_KERNEL);
4718 if (!attrs)4718 if (!attrs)
4719 goto fail;4719 goto fail;
4720 if (!alloc_cpumask_var(&attrs->cpumask, GFP_KERNEL))4720 if (!alloc_cpumask_var(&attrs->cpumask, GFP_KERNEL))
@@ -5370,7 +5370,7 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, · 649 unmodified lines
5370 attrs->affn_scope >= WQ_AFFN_NR_TYPES))5370 attrs->affn_scope >= WQ_AFFN_NR_TYPES))
5371 return ERR_PTR(-EINVAL);5371 return ERR_PTR(-EINVAL);
5372 5372
5373 ctx = kzalloc(struct_size(ctx, pwq_tbl, nr_cpu_ids), GFP_KERNEL);5373 ctx = kzalloc_flex(*ctx, pwq_tbl, nr_cpu_ids, GFP_KERNEL);
5374 5374
5375 new_attrs = alloc_workqueue_attrs();5375 new_attrs = alloc_workqueue_attrs();
5376 if (!ctx || !new_attrs)5376 if (!ctx || !new_attrs)
@@ -7486,7 +7486,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq) · 2109 unmodified lines
7486 if (WARN_ON(wq->flags & __WQ_ORDERED))7486 if (WARN_ON(wq->flags & __WQ_ORDERED))
7487 return -EINVAL;7487 return -EINVAL;
7488 7488
7489 wq->wq_dev = wq_dev = kzalloc(sizeof(*wq_dev), GFP_KERNEL);7489 wq->wq_dev = wq_dev = kzalloc_obj(*wq_dev, GFP_KERNEL);
7490 if (!wq_dev)7490 if (!wq_dev)
7491 return -ENOMEM;7491 return -ENOMEM;
7492 7492
@@ -7879,9 +7879,9 @@ void __init workqueue_init_early(void) · 386 unmodified lines
7879 wq_power_efficient = true;7879 wq_power_efficient = true;
7880 7880
7881 /* initialize WQ_AFFN_SYSTEM pods */7881 /* initialize WQ_AFFN_SYSTEM pods */
7882 pt->pod_cpus = kcalloc(1, sizeof(pt->pod_cpus[0]), GFP_KERNEL);7882 pt->pod_cpus = kzalloc_objs(pt->pod_cpus[0], 1, GFP_KERNEL);
7883 pt->pod_node = kcalloc(1, sizeof(pt->pod_node[0]), GFP_KERNEL);7883 pt->pod_node = kzalloc_objs(pt->pod_node[0], 1, GFP_KERNEL);
7884 pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL);7884 pt->cpu_pod = kzalloc_objs(pt->cpu_pod[0], nr_cpu_ids, GFP_KERNEL);
7885 BUG_ON(!pt->pod_cpus || !pt->pod_node || !pt->cpu_pod);7885 BUG_ON(!pt->pod_cpus || !pt->pod_node || !pt->cpu_pod);
7886 7886
7887 BUG_ON(!zalloc_cpumask_var_node(&pt->pod_cpus[0], GFP_KERNEL, NUMA_NO_NODE));7887 BUG_ON(!zalloc_cpumask_var_node(&pt->pod_cpus[0], GFP_KERNEL, NUMA_NO_NODE));
@@ -8063,7 +8063,7 @@ static void __init init_pod_type(struct wq_pod_type *pt, · 175 unmodified lines
8063 pt->nr_pods = 0;8063 pt->nr_pods = 0;
8064 8064
8065 /* init @pt->cpu_pod[] according to @cpus_share_pod() */8065 /* init @pt->cpu_pod[] according to @cpus_share_pod() */
8066 pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL);8066 pt->cpu_pod = kzalloc_objs(pt->cpu_pod[0], nr_cpu_ids, GFP_KERNEL);
8067 BUG_ON(!pt->cpu_pod);8067 BUG_ON(!pt->cpu_pod);
8068 8068
8069 for_each_possible_cpu(cur) {8069 for_each_possible_cpu(cur) {
@@ -8080,8 +8080,8 @@ static void __init init_pod_type(struct wq_pod_type *pt, · 10 unmodified lines
8080 }8080 }
8081 8081
8082 /* init the rest to match @pt->cpu_pod[] */8082 /* init the rest to match @pt->cpu_pod[] */
8083 pt->pod_cpus = kcalloc(pt->nr_pods, sizeof(pt->pod_cpus[0]), GFP_KERNEL);8083 pt->pod_cpus = kzalloc_objs(pt->pod_cpus[0], pt->nr_pods, GFP_KERNEL);
8084 pt->pod_node = kcalloc(pt->nr_pods, sizeof(pt->pod_node[0]), GFP_KERNEL);8084 pt->pod_node = kzalloc_objs(pt->pod_node[0], pt->nr_pods, GFP_KERNEL);
8085 BUG_ON(!pt->pod_cpus || !pt->pod_node);8085 BUG_ON(!pt->pod_cpus || !pt->pod_node);
8086 8086
8087 for (pod = 0; pod < pt->nr_pods; pod++)8087 for (pod = 0; pod < pt->nr_pods; pod++)