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 *".
Showing the changes to kernel/workqueue.c (1 of 8016 files). Show all
Unified · Split
| @@ -4714,7 +4714,7 @@ struct workqueue_attrs *alloc_workqueue_attrs_noprof(void) · 4713 unmodified lines | ||
| 4714 | 4714 | { |
| 4715 | 4715 | struct workqueue_attrs *attrs; |
| 4716 | 4716 | |
| 4717 | − attrs = kzalloc(sizeof(*attrs), GFP_KERNEL); | |
| 4717 | + attrs = kzalloc_obj(*attrs, GFP_KERNEL); | |
| 4718 | 4718 | if (!attrs) |
| 4719 | 4719 | goto fail; |
| 4720 | 4720 | if (!alloc_cpumask_var(&attrs->cpumask, GFP_KERNEL)) |
| @@ -5370,7 +5370,7 @@ apply_wqattrs_prepare(struct workqueue_struct *wq, · 649 unmodified lines | ||
| 5370 | 5370 | attrs->affn_scope >= WQ_AFFN_NR_TYPES)) |
| 5371 | 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 | 5375 | new_attrs = alloc_workqueue_attrs(); |
| 5376 | 5376 | if (!ctx || !new_attrs) |
| @@ -7486,7 +7486,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq) · 2109 unmodified lines | ||
| 7486 | 7486 | if (WARN_ON(wq->flags & __WQ_ORDERED)) |
| 7487 | 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 | 7490 | if (!wq_dev) |
| 7491 | 7491 | return -ENOMEM; |
| 7492 | 7492 | |
| @@ -7879,9 +7879,9 @@ void __init workqueue_init_early(void) · 386 unmodified lines | ||
| 7879 | 7879 | wq_power_efficient = true; |
| 7880 | 7880 | |
| 7881 | 7881 | /* initialize WQ_AFFN_SYSTEM pods */ |
| 7882 | − pt->pod_cpus = kcalloc(1, sizeof(pt->pod_cpus[0]), GFP_KERNEL); | |
| 7883 | − pt->pod_node = kcalloc(1, sizeof(pt->pod_node[0]), GFP_KERNEL); | |
| 7884 | − pt->cpu_pod = kcalloc(nr_cpu_ids, sizeof(pt->cpu_pod[0]), GFP_KERNEL); | |
| 7882 | + pt->pod_cpus = kzalloc_objs(pt->pod_cpus[0], 1, GFP_KERNEL); | |
| 7883 | + pt->pod_node = kzalloc_objs(pt->pod_node[0], 1, GFP_KERNEL); | |
| 7884 | + pt->cpu_pod = kzalloc_objs(pt->cpu_pod[0], nr_cpu_ids, GFP_KERNEL); | |
| 7885 | 7885 | BUG_ON(!pt->pod_cpus || !pt->pod_node || !pt->cpu_pod); |
| 7886 | 7886 | |
| 7887 | 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 | 8063 | pt->nr_pods = 0; |
| 8064 | 8064 | |
| 8065 | 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 | 8067 | BUG_ON(!pt->cpu_pod); |
| 8068 | 8068 | |
| 8069 | 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 | 8082 | /* init the rest to match @pt->cpu_pod[] */ |
| 8083 | − pt->pod_cpus = kcalloc(pt->nr_pods, sizeof(pt->pod_cpus[0]), GFP_KERNEL); | |
| 8084 | − pt->pod_node = kcalloc(pt->nr_pods, sizeof(pt->pod_node[0]), GFP_KERNEL); | |
| 8083 | + pt->pod_cpus = kzalloc_objs(pt->pod_cpus[0], pt->nr_pods, GFP_KERNEL); | |
| 8084 | + pt->pod_node = kzalloc_objs(pt->pod_node[0], pt->nr_pods, GFP_KERNEL); | |
| 8085 | 8085 | BUG_ON(!pt->pod_cpus || !pt->pod_node); |
| 8086 | 8086 | |
| 8087 | 8087 | for (pod = 0; pod < pt->nr_pods; pod++) |