summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKees Cook <kees@kernel.org>2026-02-20 23:49:23 -0800
committerKees Cook <kees@kernel.org>2026-02-21 01:02:28 -0800
commit69050f8d6d075dc01af7a5f2f550a8067510366f (patch)
treebb265f94d9dfa7876c06a5d9f88673d496a15341 /lib
parentd39a1d7486d98668dd34aaa6732aad7977c45f5a (diff)
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 *". Signed-off-by: Kees Cook <kees@kernel.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/alloc_tag.c5
-rw-r--r--lib/assoc_array.c32
-rw-r--r--lib/bch.c2
-rw-r--r--lib/bucket_locks.c2
-rw-r--r--lib/codetag.c4
-rw-r--r--lib/cpu_rmap.c2
-rw-r--r--lib/crypto/gf128mul.c6
-rw-r--r--lib/crypto/mpi/mpih-mul.c2
-rw-r--r--lib/crypto/mpi/mpiutil.c6
-rw-r--r--lib/dhry_1.c4
-rw-r--r--lib/dim/net_dim.c2
-rw-r--r--lib/dynamic_debug.c2
-rw-r--r--lib/error-inject.c2
-rw-r--r--lib/group_cpus.c14
-rw-r--r--lib/idr.c6
-rw-r--r--lib/interval_tree_test.c3
-rw-r--r--lib/iov_iter.c4
-rw-r--r--lib/kobject.c4
-rw-r--r--lib/kobject_uevent.c6
-rw-r--r--lib/kunit/attributes.c2
-rw-r--r--lib/kunit/device.c2
-rw-r--r--lib/kunit/executor.c7
-rw-r--r--lib/kunit/executor_test.c2
-rw-r--r--lib/kunit/kunit-example-test.c2
-rw-r--r--lib/kunit/kunit-test.c3
-rw-r--r--lib/kunit/resource.c2
-rw-r--r--lib/kunit/static_stub.c2
-rw-r--r--lib/kunit/string-stream.c4
-rw-r--r--lib/logic_iomem.c2
-rw-r--r--lib/lru_cache.c6
-rw-r--r--lib/lwq.c2
-rw-r--r--lib/objagg.c17
-rw-r--r--lib/once.c2
-rw-r--r--lib/parman.c2
-rw-r--r--lib/percpu-refcount.c2
-rw-r--r--lib/pldmfw/pldmfw.c8
-rw-r--r--lib/rbtree_test.c2
-rw-r--r--lib/reed_solomon/reed_solomon.c2
-rw-r--r--lib/reed_solomon/test_rslib.c4
-rw-r--r--lib/ref_tracker.c5
-rw-r--r--lib/scatterlist.c6
-rw-r--r--lib/sg_split.c7
-rw-r--r--lib/stackdepot.c2
-rw-r--r--lib/string_helpers.c2
-rw-r--r--lib/test_bpf.c50
-rw-r--r--lib/test_debug_virtual.c2
-rw-r--r--lib/test_firmware.c4
-rw-r--r--lib/test_hmm.c4
-rw-r--r--lib/test_kho.c2
-rw-r--r--lib/test_memcat_p.c8
-rw-r--r--lib/test_objagg.c4
-rw-r--r--lib/test_parman.c2
-rw-r--r--lib/test_rhashtable.c2
-rw-r--r--lib/test_vmalloc.c4
-rw-r--r--lib/tests/kunit_iov_iter.c6
-rw-r--r--lib/tests/list-test.c8
-rw-r--r--lib/tests/test_ratelimit.c3
-rw-r--r--lib/xz/xz_dec_bcj.c2
-rw-r--r--lib/xz/xz_dec_lzma2.c4
-rw-r--r--lib/xz/xz_dec_stream.c2
-rw-r--r--lib/zlib_inflate/infutil.c2
61 files changed, 153 insertions, 161 deletions
diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c
index 00ae4673a271..58991ab09d84 100644
--- a/lib/alloc_tag.c
+++ b/lib/alloc_tag.c
@@ -669,8 +669,9 @@ static int __init alloc_mod_tags_mem(void)
return -ENOMEM;
}
- vm_module_tags->pages = kmalloc_array(get_vm_area_size(vm_module_tags) >> PAGE_SHIFT,
- sizeof(struct page *), GFP_KERNEL | __GFP_ZERO);
+ vm_module_tags->pages = kmalloc_objs(struct page *,
+ get_vm_area_size(vm_module_tags) >> PAGE_SHIFT,
+ GFP_KERNEL | __GFP_ZERO);
if (!vm_module_tags->pages) {
free_vm_area(vm_module_tags);
return -ENOMEM;
diff --git a/lib/assoc_array.c b/lib/assoc_array.c
index 388e656ac974..6cd376ad5030 100644
--- a/lib/assoc_array.c
+++ b/lib/assoc_array.c
@@ -454,7 +454,7 @@ static bool assoc_array_insert_in_empty_tree(struct assoc_array_edit *edit)
pr_devel("-->%s()\n", __func__);
- new_n0 = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n0 = kzalloc_obj(struct assoc_array_node, GFP_KERNEL);
if (!new_n0)
return false;
@@ -536,11 +536,11 @@ static bool assoc_array_insert_into_terminal_node(struct assoc_array_edit *edit,
* those now. We may also need a new shortcut, but we deal with that
* when we need it.
*/
- new_n0 = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n0 = kzalloc_obj(struct assoc_array_node, GFP_KERNEL);
if (!new_n0)
return false;
edit->new_meta[0] = assoc_array_node_to_ptr(new_n0);
- new_n1 = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n1 = kzalloc_obj(struct assoc_array_node, GFP_KERNEL);
if (!new_n1)
return false;
edit->new_meta[1] = assoc_array_node_to_ptr(new_n1);
@@ -741,7 +741,7 @@ all_leaves_cluster_together:
keylen = round_up(diff, ASSOC_ARRAY_KEY_CHUNK_SIZE);
keylen >>= ASSOC_ARRAY_KEY_CHUNK_SHIFT;
- new_s0 = kzalloc(struct_size(new_s0, index_key, keylen), GFP_KERNEL);
+ new_s0 = kzalloc_flex(*new_s0, index_key, keylen, GFP_KERNEL);
if (!new_s0)
return false;
edit->new_meta[2] = assoc_array_shortcut_to_ptr(new_s0);
@@ -832,7 +832,7 @@ static bool assoc_array_insert_mid_shortcut(struct assoc_array_edit *edit,
edit->excised_meta[0] = assoc_array_shortcut_to_ptr(shortcut);
/* Create a new node now since we're going to need it anyway */
- new_n0 = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n0 = kzalloc_obj(struct assoc_array_node, GFP_KERNEL);
if (!new_n0)
return false;
edit->new_meta[0] = assoc_array_node_to_ptr(new_n0);
@@ -848,8 +848,7 @@ static bool assoc_array_insert_mid_shortcut(struct assoc_array_edit *edit,
keylen = round_up(diff, ASSOC_ARRAY_KEY_CHUNK_SIZE);
keylen >>= ASSOC_ARRAY_KEY_CHUNK_SHIFT;
- new_s0 = kzalloc(struct_size(new_s0, index_key, keylen),
- GFP_KERNEL);
+ new_s0 = kzalloc_flex(*new_s0, index_key, keylen, GFP_KERNEL);
if (!new_s0)
return false;
edit->new_meta[1] = assoc_array_shortcut_to_ptr(new_s0);
@@ -898,8 +897,7 @@ static bool assoc_array_insert_mid_shortcut(struct assoc_array_edit *edit,
keylen = round_up(shortcut->skip_to_level, ASSOC_ARRAY_KEY_CHUNK_SIZE);
keylen >>= ASSOC_ARRAY_KEY_CHUNK_SHIFT;
- new_s1 = kzalloc(struct_size(new_s1, index_key, keylen),
- GFP_KERNEL);
+ new_s1 = kzalloc_flex(*new_s1, index_key, keylen, GFP_KERNEL);
if (!new_s1)
return false;
edit->new_meta[2] = assoc_array_shortcut_to_ptr(new_s1);
@@ -977,7 +975,7 @@ struct assoc_array_edit *assoc_array_insert(struct assoc_array *array,
*/
BUG_ON(assoc_array_ptr_is_meta(object));
- edit = kzalloc(sizeof(struct assoc_array_edit), GFP_KERNEL);
+ edit = kzalloc_obj(struct assoc_array_edit, GFP_KERNEL);
if (!edit)
return ERR_PTR(-ENOMEM);
edit->array = array;
@@ -1089,7 +1087,7 @@ struct assoc_array_edit *assoc_array_delete(struct assoc_array *array,
pr_devel("-->%s()\n", __func__);
- edit = kzalloc(sizeof(struct assoc_array_edit), GFP_KERNEL);
+ edit = kzalloc_obj(struct assoc_array_edit, GFP_KERNEL);
if (!edit)
return ERR_PTR(-ENOMEM);
edit->array = array;
@@ -1206,7 +1204,8 @@ found_leaf:
node = parent;
/* Create a new node to collapse into */
- new_n0 = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n0 = kzalloc_obj(struct assoc_array_node,
+ GFP_KERNEL);
if (!new_n0)
goto enomem;
edit->new_meta[0] = assoc_array_node_to_ptr(new_n0);
@@ -1281,7 +1280,7 @@ struct assoc_array_edit *assoc_array_clear(struct assoc_array *array,
if (!array->root)
return NULL;
- edit = kzalloc(sizeof(struct assoc_array_edit), GFP_KERNEL);
+ edit = kzalloc_obj(struct assoc_array_edit, GFP_KERNEL);
if (!edit)
return ERR_PTR(-ENOMEM);
edit->array = array;
@@ -1469,7 +1468,7 @@ int assoc_array_gc(struct assoc_array *array,
if (!array->root)
return 0;
- edit = kzalloc(sizeof(struct assoc_array_edit), GFP_KERNEL);
+ edit = kzalloc_obj(struct assoc_array_edit, GFP_KERNEL);
if (!edit)
return -ENOMEM;
edit->array = array;
@@ -1490,8 +1489,7 @@ descend:
shortcut = assoc_array_ptr_to_shortcut(cursor);
keylen = round_up(shortcut->skip_to_level, ASSOC_ARRAY_KEY_CHUNK_SIZE);
keylen >>= ASSOC_ARRAY_KEY_CHUNK_SHIFT;
- new_s = kmalloc(struct_size(new_s, index_key, keylen),
- GFP_KERNEL);
+ new_s = kmalloc_flex(*new_s, index_key, keylen, GFP_KERNEL);
if (!new_s)
goto enomem;
pr_devel("dup shortcut %p -> %p\n", shortcut, new_s);
@@ -1505,7 +1503,7 @@ descend:
/* Duplicate the node at this position */
node = assoc_array_ptr_to_node(cursor);
- new_n = kzalloc(sizeof(struct assoc_array_node), GFP_KERNEL);
+ new_n = kzalloc_obj(struct assoc_array_node, GFP_KERNEL);
if (!new_n)
goto enomem;
pr_devel("dup node %p -> %p\n", node, new_n);
diff --git a/lib/bch.c b/lib/bch.c
index 1c0cb07cdfeb..82a363dc73c4 100644
--- a/lib/bch.c
+++ b/lib/bch.c
@@ -1320,7 +1320,7 @@ struct bch_control *bch_init(int m, int t, unsigned int prim_poly,
if (prim_poly == 0)
prim_poly = prim_poly_tab[m-min_m];
- bch = kzalloc(sizeof(*bch), GFP_KERNEL);
+ bch = kzalloc_obj(*bch, GFP_KERNEL);
if (bch == NULL)
goto fail;
diff --git a/lib/bucket_locks.c b/lib/bucket_locks.c
index 64b92e1dbace..d29516ca0554 100644
--- a/lib/bucket_locks.c
+++ b/lib/bucket_locks.c
@@ -31,7 +31,7 @@ int __alloc_bucket_spinlocks(spinlock_t **locks, unsigned int *locks_mask,
}
if (sizeof(spinlock_t) != 0) {
- tlocks = kvmalloc_array(size, sizeof(spinlock_t), gfp);
+ tlocks = kvmalloc_objs(spinlock_t, size, gfp);
if (!tlocks)
return -ENOMEM;
for (i = 0; i < size; i++) {
diff --git a/lib/codetag.c b/lib/codetag.c
index 545911cebd25..465952125bcb 100644
--- a/lib/codetag.c
+++ b/lib/codetag.c
@@ -193,7 +193,7 @@ static int codetag_module_init(struct codetag_type *cttype, struct module *mod)
BUG_ON(range.start > range.stop);
- cmod = kmalloc(sizeof(*cmod), GFP_KERNEL);
+ cmod = kmalloc_obj(*cmod, GFP_KERNEL);
if (unlikely(!cmod))
return -ENOMEM;
@@ -383,7 +383,7 @@ codetag_register_type(const struct codetag_type_desc *desc)
BUG_ON(desc->tag_size <= 0);
- cttype = kzalloc(sizeof(*cttype), GFP_KERNEL);
+ cttype = kzalloc_obj(*cttype, GFP_KERNEL);
if (unlikely(!cttype))
return ERR_PTR(-ENOMEM);
diff --git a/lib/cpu_rmap.c b/lib/cpu_rmap.c
index f03d9be3f06b..dfc6219532b9 100644
--- a/lib/cpu_rmap.c
+++ b/lib/cpu_rmap.c
@@ -309,7 +309,7 @@ EXPORT_SYMBOL(irq_cpu_rmap_remove);
*/
int irq_cpu_rmap_add(struct cpu_rmap *rmap, int irq)
{
- struct irq_glue *glue = kzalloc(sizeof(*glue), GFP_KERNEL);
+ struct irq_glue *glue = kzalloc_obj(*glue, GFP_KERNEL);
int rc;
if (!glue)
diff --git a/lib/crypto/gf128mul.c b/lib/crypto/gf128mul.c
index 2a34590fe3f1..42c5fdc2d4ca 100644
--- a/lib/crypto/gf128mul.c
+++ b/lib/crypto/gf128mul.c
@@ -245,12 +245,12 @@ struct gf128mul_64k *gf128mul_init_64k_bbe(const be128 *g)
struct gf128mul_64k *t;
int i, j, k;
- t = kzalloc(sizeof(*t), GFP_KERNEL);
+ t = kzalloc_obj(*t, GFP_KERNEL);
if (!t)
goto out;
for (i = 0; i < 16; i++) {
- t->t[i] = kzalloc(sizeof(*t->t[i]), GFP_KERNEL);
+ t->t[i] = kzalloc_obj(*t->t[i], GFP_KERNEL);
if (!t->t[i]) {
gf128mul_free_64k(t);
t = NULL;
@@ -326,7 +326,7 @@ struct gf128mul_4k *gf128mul_init_4k_lle(const be128 *g)
struct gf128mul_4k *t;
int j, k;
- t = kzalloc(sizeof(*t), GFP_KERNEL);
+ t = kzalloc_obj(*t, GFP_KERNEL);
if (!t)
goto out;
diff --git a/lib/crypto/mpi/mpih-mul.c b/lib/crypto/mpi/mpih-mul.c
index a93647564054..9cd0843e9d36 100644
--- a/lib/crypto/mpi/mpih-mul.c
+++ b/lib/crypto/mpi/mpih-mul.c
@@ -372,7 +372,7 @@ mpihelp_mul_karatsuba_case(mpi_ptr_t prodp,
return -ENOMEM;
} else {
if (!ctx->next) {
- ctx->next = kzalloc(sizeof *ctx, GFP_KERNEL);
+ ctx->next = kzalloc_obj(*ctx, GFP_KERNEL);
if (!ctx->next)
return -ENOMEM;
}
diff --git a/lib/crypto/mpi/mpiutil.c b/lib/crypto/mpi/mpiutil.c
index 7f2db830f404..4999f756f50e 100644
--- a/lib/crypto/mpi/mpiutil.c
+++ b/lib/crypto/mpi/mpiutil.c
@@ -33,7 +33,7 @@ MPI mpi_alloc(unsigned nlimbs)
{
MPI a;
- a = kmalloc(sizeof *a, GFP_KERNEL);
+ a = kmalloc_obj(*a, GFP_KERNEL);
if (!a)
return a;
@@ -93,14 +93,14 @@ int mpi_resize(MPI a, unsigned nlimbs)
return 0; /* no need to do it */
if (a->d) {
- p = kcalloc(nlimbs, sizeof(mpi_limb_t), GFP_KERNEL);
+ p = kzalloc_objs(mpi_limb_t, nlimbs, GFP_KERNEL);
if (!p)
return -ENOMEM;
memcpy(p, a->d, a->alloced * sizeof(mpi_limb_t));
kfree_sensitive(a->d);
a->d = p;
} else {
- a->d = kcalloc(nlimbs, sizeof(mpi_limb_t), GFP_KERNEL);
+ a->d = kzalloc_objs(mpi_limb_t, nlimbs, GFP_KERNEL);
if (!a->d)
return -ENOMEM;
}
diff --git a/lib/dhry_1.c b/lib/dhry_1.c
index ca6c87232c58..134cc1c746c2 100644
--- a/lib/dhry_1.c
+++ b/lib/dhry_1.c
@@ -139,11 +139,11 @@ int dhry(int n)
/* Initializations */
- Next_Ptr_Glob = (Rec_Pointer)kzalloc(sizeof(Rec_Type), GFP_ATOMIC);
+ Next_Ptr_Glob = (Rec_Pointer) kzalloc_obj(Rec_Type, GFP_ATOMIC);
if (!Next_Ptr_Glob)
return -ENOMEM;
- Ptr_Glob = (Rec_Pointer)kzalloc(sizeof(Rec_Type), GFP_ATOMIC);
+ Ptr_Glob = (Rec_Pointer) kzalloc_obj(Rec_Type, GFP_ATOMIC);
if (!Ptr_Glob) {
kfree(Next_Ptr_Glob);
return -ENOMEM;
diff --git a/lib/dim/net_dim.c b/lib/dim/net_dim.c
index d6aa09a979b3..d66940b0c165 100644
--- a/lib/dim/net_dim.c
+++ b/lib/dim/net_dim.c
@@ -105,7 +105,7 @@ int net_dim_init_irq_moder(struct net_device *dev, u8 profile_flags,
struct dim_irq_moder *moder;
int len;
- dev->irq_moder = kzalloc(sizeof(*dev->irq_moder), GFP_KERNEL);
+ dev->irq_moder = kzalloc_obj(*dev->irq_moder, GFP_KERNEL);
if (!dev->irq_moder)
return -ENOMEM;
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 7d7892e57a01..a5b5e936e2ab 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -1241,7 +1241,7 @@ static int ddebug_add_module(struct _ddebug_info *di, const char *modname)
return 0;
}
- dt = kzalloc(sizeof(*dt), GFP_KERNEL);
+ dt = kzalloc_obj(*dt, GFP_KERNEL);
if (dt == NULL) {
pr_err("error adding module: %s\n", modname);
return -ENOMEM;
diff --git a/lib/error-inject.c b/lib/error-inject.c
index 887acd9a6ea6..06c913ec2c1f 100644
--- a/lib/error-inject.c
+++ b/lib/error-inject.c
@@ -80,7 +80,7 @@ static void populate_error_injection_list(struct error_injection_entry *start,
continue;
}
- ent = kmalloc(sizeof(*ent), GFP_KERNEL);
+ ent = kmalloc_obj(*ent, GFP_KERNEL);
if (!ent)
break;
ent->start_addr = entry;
diff --git a/lib/group_cpus.c b/lib/group_cpus.c
index d496c5001961..5d1758a05407 100644
--- a/lib/group_cpus.c
+++ b/lib/group_cpus.c
@@ -47,7 +47,7 @@ static cpumask_var_t *alloc_node_to_cpumask(void)
cpumask_var_t *masks;
int node;
- masks = kcalloc(nr_node_ids, sizeof(cpumask_var_t), GFP_KERNEL);
+ masks = kzalloc_objs(cpumask_var_t, nr_node_ids, GFP_KERNEL);
if (!masks)
return NULL;
@@ -320,10 +320,10 @@ static int alloc_cluster_groups(unsigned int ncpus,
goto no_cluster;
/* Allocate memory based on cluster number. */
- clusters = kcalloc(ncluster, sizeof(*clusters), GFP_KERNEL);
+ clusters = kzalloc_objs(*clusters, ncluster, GFP_KERNEL);
if (!clusters)
goto no_cluster;
- cluster_groups = kcalloc(ncluster, sizeof(struct node_groups), GFP_KERNEL);
+ cluster_groups = kzalloc_objs(struct node_groups, ncluster, GFP_KERNEL);
if (!cluster_groups)
goto fail_cluster_groups;
@@ -432,9 +432,7 @@ static int __group_cpus_evenly(unsigned int startgrp, unsigned int numgrps,
return numgrps;
}
- node_groups = kcalloc(nr_node_ids,
- sizeof(struct node_groups),
- GFP_KERNEL);
+ node_groups = kzalloc_objs(struct node_groups, nr_node_ids, GFP_KERNEL);
if (!node_groups)
return -ENOMEM;
@@ -508,7 +506,7 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps, unsigned int *nummasks)
if (!node_to_cpumask)
goto fail_npresmsk;
- masks = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL);
+ masks = kzalloc_objs(*masks, numgrps, GFP_KERNEL);
if (!masks)
goto fail_node_to_cpumask;
@@ -574,7 +572,7 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps, unsigned int *nummasks)
if (numgrps == 0)
return NULL;
- masks = kcalloc(numgrps, sizeof(*masks), GFP_KERNEL);
+ masks = kzalloc_objs(*masks, numgrps, GFP_KERNEL);
if (!masks)
return NULL;
diff --git a/lib/idr.c b/lib/idr.c
index 457430cff8c5..69bee5369670 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -417,7 +417,7 @@ next:
}
bitmap = alloc;
if (!bitmap)
- bitmap = kzalloc(sizeof(*bitmap), GFP_NOWAIT);
+ bitmap = kzalloc_obj(*bitmap, GFP_NOWAIT);
if (!bitmap)
goto alloc;
bitmap->bitmap[0] = tmp;
@@ -444,7 +444,7 @@ next:
} else {
bitmap = alloc;
if (!bitmap)
- bitmap = kzalloc(sizeof(*bitmap), GFP_NOWAIT);
+ bitmap = kzalloc_obj(*bitmap, GFP_NOWAIT);
if (!bitmap)
goto alloc;
__set_bit(bit, bitmap->bitmap);
@@ -465,7 +465,7 @@ out:
return xas.xa_index * IDA_BITMAP_BITS + bit;
alloc:
xas_unlock_irqrestore(&xas, flags);
- alloc = kzalloc(sizeof(*bitmap), gfp);
+ alloc = kzalloc_obj(*bitmap, gfp);
if (!alloc)
return -ENOMEM;
xas_set(&xas, min / IDA_BITMAP_BITS);
diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c
index 5fd62656f42e..d1ab3d40a645 100644
--- a/lib/interval_tree_test.c
+++ b/lib/interval_tree_test.c
@@ -311,8 +311,7 @@ static inline int span_iteration_check(void) {return 0; }
static int interval_tree_test_init(void)
{
- nodes = kmalloc_array(nnodes, sizeof(struct interval_tree_node),
- GFP_KERNEL);
+ nodes = kmalloc_objs(struct interval_tree_node, nnodes, GFP_KERNEL);
if (!nodes)
return -ENOMEM;
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 545250507f08..a9768fae1f44 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -903,7 +903,7 @@ static int want_pages_array(struct page ***res, size_t size,
count = maxpages;
WARN_ON(!count); // caller should've prevented that
if (!*res) {
- *res = kvmalloc_array(count, sizeof(struct page *), GFP_KERNEL);
+ *res = kvmalloc_objs(struct page *, count, GFP_KERNEL);
if (!*res)
return 0;
}
@@ -1318,7 +1318,7 @@ struct iovec *iovec_from_user(const struct iovec __user *uvec,
if (nr_segs > UIO_MAXIOV)
return ERR_PTR(-EINVAL);
if (nr_segs > fast_segs) {
- iov = kmalloc_array(nr_segs, sizeof(struct iovec), GFP_KERNEL);
+ iov = kmalloc_objs(struct iovec, nr_segs, GFP_KERNEL);
if (!iov)
return ERR_PTR(-ENOMEM);
}
diff --git a/lib/kobject.c b/lib/kobject.c
index abe5f5b856ce..b178d248617b 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -765,7 +765,7 @@ static struct kobject *kobject_create(void)
{
struct kobject *kobj;
- kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
+ kobj = kzalloc_obj(*kobj, GFP_KERNEL);
if (!kobj)
return NULL;
@@ -962,7 +962,7 @@ static struct kset *kset_create(const char *name,
struct kset *kset;
int retval;
- kset = kzalloc(sizeof(*kset), GFP_KERNEL);
+ kset = kzalloc_obj(*kset, GFP_KERNEL);
if (!kset)
return NULL;
retval = kobject_set_name(&kset->kobj, "%s", name);
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
index 78e16b95d210..29a28a3b957f 100644
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -124,7 +124,7 @@ static int kobject_action_args(const char *buf, size_t count,
if (!count)
return -EINVAL;
- env = kzalloc(sizeof(*env), GFP_KERNEL);
+ env = kzalloc_obj(*env, GFP_KERNEL);
if (!env)
return -ENOMEM;
@@ -537,7 +537,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
}
/* environment buffer */
- env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
+ env = kzalloc_obj(struct kobj_uevent_env, GFP_KERNEL);
if (!env)
return -ENOMEM;
@@ -776,7 +776,7 @@ static int uevent_net_init(struct net *net)
.flags = NL_CFG_F_NONROOT_RECV
};
- ue_sk = kzalloc(sizeof(*ue_sk), GFP_KERNEL);
+ ue_sk = kzalloc_obj(*ue_sk, GFP_KERNEL);
if (!ue_sk)
return -ENOMEM;
diff --git a/lib/kunit/attributes.c b/lib/kunit/attributes.c
index 2cf04cc09372..6b7803a16e22 100644
--- a/lib/kunit/attributes.c
+++ b/lib/kunit/attributes.c
@@ -410,7 +410,7 @@ struct kunit_suite *kunit_filter_attr_tests(const struct kunit_suite *const suit
kunit_suite_for_each_test_case(suite, test_case) { n++; }
- filtered = kcalloc(n + 1, sizeof(*filtered), GFP_KERNEL);
+ filtered = kzalloc_objs(*filtered, n + 1, GFP_KERNEL);
if (!filtered) {
kfree(copy);
return ERR_PTR(-ENOMEM);
diff --git a/lib/kunit/device.c b/lib/kunit/device.c
index f201aaacd4cf..7c18d4ae2de3 100644
--- a/lib/kunit/device.c
+++ b/lib/kunit/device.c
@@ -111,7 +111,7 @@ static struct kunit_device *kunit_device_register_internal(struct kunit *test,
struct kunit_device *kunit_dev;
int err = -ENOMEM;
- kunit_dev = kzalloc(sizeof(*kunit_dev), GFP_KERNEL);
+ kunit_dev = kzalloc_obj(*kunit_dev, GFP_KERNEL);
if (!kunit_dev)
return ERR_PTR(err);
diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c
index 02ff380ab793..27740d975082 100644
--- a/lib/kunit/executor.c
+++ b/lib/kunit/executor.c
@@ -131,7 +131,7 @@ kunit_filter_glob_tests(const struct kunit_suite *const suite, const char *test_
if (!copy)
return ERR_PTR(-ENOMEM);
- filtered = kcalloc(n + 1, sizeof(*filtered), GFP_KERNEL);
+ filtered = kzalloc_objs(*filtered, n + 1, GFP_KERNEL);
if (!filtered) {
kfree(copy);
return ERR_PTR(-ENOMEM);
@@ -179,7 +179,7 @@ kunit_filter_suites(const struct kunit_suite_set *suite_set,
const size_t max = suite_set->end - suite_set->start;
- copy = kcalloc(max, sizeof(*copy), GFP_KERNEL);
+ copy = kzalloc_objs(*copy, max, GFP_KERNEL);
if (!copy) { /* won't be able to run anything, return an empty set */
return filtered;
}
@@ -194,7 +194,8 @@ kunit_filter_suites(const struct kunit_suite_set *suite_set,
/* Parse attribute filters */
if (filters) {
filter_count = kunit_get_filter_count(filters);
- parsed_filters = kcalloc(filter_count, sizeof(*parsed_filters), GFP_KERNEL);
+ parsed_filters = kzalloc_objs(*parsed_filters, filter_count,
+ GFP_KERNEL);
if (!parsed_filters) {
*err = -ENOMEM;
goto free_parsed_glob;
diff --git a/lib/kunit/executor_test.c b/lib/kunit/executor_test.c
index f0090c2729cd..f28093153516 100644
--- a/lib/kunit/executor_test.c
+++ b/lib/kunit/executor_test.c
@@ -272,7 +272,7 @@ static void free_suite_set_at_end(struct kunit *test, const void *to_free)
if (!((struct kunit_suite_set *)to_free)->start)
return;
- free = kzalloc(sizeof(struct kunit_suite_set), GFP_KERNEL);
+ free = kzalloc_obj(struct kunit_suite_set, GFP_KERNEL);
*free = *(struct kunit_suite_set *)to_free;
kunit_add_action(test, free_suite_set, (void *)free);
diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c
index 9452b163956f..34ba0bd74504 100644
--- a/lib/kunit/kunit-example-test.c
+++ b/lib/kunit/kunit-example-test.c
@@ -283,7 +283,7 @@ static void example_slow_test(struct kunit *test)
*/
static int example_resource_init(struct kunit_resource *res, void *context)
{
- int *info = kmalloc(sizeof(*info), GFP_KERNEL);
+ int *info = kmalloc_obj(*info, GFP_KERNEL);
if (!info)
return -ENOMEM;
diff --git a/lib/kunit/kunit-test.c b/lib/kunit/kunit-test.c
index 63130a48e237..393b90bd2ec2 100644
--- a/lib/kunit/kunit-test.c
+++ b/lib/kunit/kunit-test.c
@@ -538,8 +538,7 @@ static void kunit_resource_test_action_ordering(struct kunit *test)
static int kunit_resource_test_init(struct kunit *test)
{
- struct kunit_test_resource_context *ctx =
- kzalloc(sizeof(*ctx), GFP_KERNEL);
+ struct kunit_test_resource_context *ctx = kzalloc_obj(*ctx, GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
diff --git a/lib/kunit/resource.c b/lib/kunit/resource.c
index f0209252b179..08a16622a2c9 100644
--- a/lib/kunit/resource.c
+++ b/lib/kunit/resource.c
@@ -98,7 +98,7 @@ int kunit_add_action(struct kunit *test, void (*action)(void *), void *ctx)
KUNIT_ASSERT_NOT_NULL_MSG(test, action, "Tried to action a NULL function!");
- action_ctx = kzalloc(sizeof(*action_ctx), GFP_KERNEL);
+ action_ctx = kzalloc_obj(*action_ctx, GFP_KERNEL);
if (!action_ctx)
return -ENOMEM;
diff --git a/lib/kunit/static_stub.c b/lib/kunit/static_stub.c
index 484fd85251b4..29a91129d7a3 100644
--- a/lib/kunit/static_stub.c
+++ b/lib/kunit/static_stub.c
@@ -111,7 +111,7 @@ void __kunit_activate_static_stub(struct kunit *test,
/* We got an extra reference from find_resource(), so put it. */
kunit_put_resource(res);
} else {
- ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
+ ctx = kmalloc_obj(*ctx, GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
ctx->real_fn_addr = real_fn_addr;
ctx->replacement_addr = replacement_addr;
diff --git a/lib/kunit/string-stream.c b/lib/kunit/string-stream.c
index 54f4fdcbfac8..0d8f1b30559b 100644
--- a/lib/kunit/string-stream.c
+++ b/lib/kunit/string-stream.c
@@ -18,7 +18,7 @@ static struct string_stream_fragment *alloc_string_stream_fragment(int len, gfp_
{
struct string_stream_fragment *frag;
- frag = kzalloc(sizeof(*frag), gfp);
+ frag = kzalloc_obj(*frag, gfp);
if (!frag)
return ERR_PTR(-ENOMEM);
@@ -158,7 +158,7 @@ struct string_stream *alloc_string_stream(gfp_t gfp)
{
struct string_stream *stream;
- stream = kzalloc(sizeof(*stream), gfp);
+ stream = kzalloc_obj(*stream, gfp);
if (!stream)
return ERR_PTR(-ENOMEM);
diff --git a/lib/logic_iomem.c b/lib/logic_iomem.c
index b247d412ddef..d0ba023f79fb 100644
--- a/lib/logic_iomem.c
+++ b/lib/logic_iomem.c
@@ -48,7 +48,7 @@ int logic_iomem_add_region(struct resource *resource,
if (WARN_ON((resource->flags & IORESOURCE_TYPE_BITS) != IORESOURCE_MEM))
return -EINVAL;
- rreg = kzalloc(sizeof(*rreg), GFP_KERNEL);
+ rreg = kzalloc_obj(*rreg, GFP_KERNEL);
if (!rreg)
return -ENOMEM;
diff --git a/lib/lru_cache.c b/lib/lru_cache.c
index 9e0d469c7658..b1ee3b2540c9 100644
--- a/lib/lru_cache.c
+++ b/lib/lru_cache.c
@@ -94,14 +94,14 @@ struct lru_cache *lc_create(const char *name, struct kmem_cache *cache,
if (e_count > LC_MAX_ACTIVE)
return NULL;
- slot = kcalloc(e_count, sizeof(struct hlist_head), GFP_KERNEL);
+ slot = kzalloc_objs(struct hlist_head, e_count, GFP_KERNEL);
if (!slot)
goto out_fail;
- element = kcalloc(e_count, sizeof(struct lc_element *), GFP_KERNEL);
+ element = kzalloc_objs(struct lc_element *, e_count, GFP_KERNEL);
if (!element)
goto out_fail;
- lc = kzalloc(sizeof(*lc), GFP_KERNEL);
+ lc = kzalloc_obj(*lc, GFP_KERNEL);
if (!lc)
goto out_fail;
diff --git a/lib/lwq.c b/lib/lwq.c
index 57d080a4d53d..3a8fc05d9420 100644
--- a/lib/lwq.c
+++ b/lib/lwq.c
@@ -110,7 +110,7 @@ static int lwq_test(void)
for (i = 0; i < ARRAY_SIZE(threads); i++)
threads[i] = kthread_run(lwq_exercise, &q, "lwq-test-%d", i);
for (i = 0; i < 100; i++) {
- t = kmalloc(sizeof(*t), GFP_KERNEL);
+ t = kmalloc_obj(*t, GFP_KERNEL);
if (!t)
break;
t->i = i;
diff --git a/lib/objagg.c b/lib/objagg.c
index 363e43e849ac..c508b78850c0 100644
--- a/lib/objagg.c
+++ b/lib/objagg.c
@@ -525,7 +525,7 @@ struct objagg *objagg_create(const struct objagg_ops *ops,
!ops->delta_destroy))
return ERR_PTR(-EINVAL);
- objagg = kzalloc(sizeof(*objagg), GFP_KERNEL);
+ objagg = kzalloc_obj(*objagg, GFP_KERNEL);
if (!objagg)
return ERR_PTR(-ENOMEM);
objagg->ops = ops;
@@ -610,8 +610,8 @@ const struct objagg_stats *objagg_stats_get(struct objagg *objagg)
struct objagg_obj *objagg_obj;
int i;
- objagg_stats = kzalloc(struct_size(objagg_stats, stats_info,
- objagg->obj_count), GFP_KERNEL);
+ objagg_stats = kzalloc_flex(*objagg_stats, stats_info,
+ objagg->obj_count, GFP_KERNEL);
if (!objagg_stats)
return ERR_PTR(-ENOMEM);
@@ -786,11 +786,11 @@ static struct objagg_tmp_graph *objagg_tmp_graph_create(struct objagg *objagg)
struct objagg_obj *objagg_obj;
int i, j;
- graph = kzalloc(sizeof(*graph), GFP_KERNEL);
+ graph = kzalloc_obj(*graph, GFP_KERNEL);
if (!graph)
return NULL;
- graph->nodes = kcalloc(nodes_count, sizeof(*graph->nodes), GFP_KERNEL);
+ graph->nodes = kzalloc_objs(*graph->nodes, nodes_count, GFP_KERNEL);
if (!graph->nodes)
goto err_nodes_alloc;
graph->nodes_count = nodes_count;
@@ -930,7 +930,7 @@ struct objagg_hints *objagg_hints_get(struct objagg *objagg,
struct objagg_hints *objagg_hints;
int err;
- objagg_hints = kzalloc(sizeof(*objagg_hints), GFP_KERNEL);
+ objagg_hints = kzalloc_obj(*objagg_hints, GFP_KERNEL);
if (!objagg_hints)
return ERR_PTR(-ENOMEM);
@@ -1010,9 +1010,8 @@ objagg_hints_stats_get(struct objagg_hints *objagg_hints)
struct objagg_hints_node *hnode;
int i;
- objagg_stats = kzalloc(struct_size(objagg_stats, stats_info,
- objagg_hints->node_count),
- GFP_KERNEL);
+ objagg_stats = kzalloc_flex(*objagg_stats, stats_info,
+ objagg_hints->node_count, GFP_KERNEL);
if (!objagg_stats)
return ERR_PTR(-ENOMEM);
diff --git a/lib/once.c b/lib/once.c
index 8557eb489f34..d801bfa945e6 100644
--- a/lib/once.c
+++ b/lib/once.c
@@ -26,7 +26,7 @@ static void once_disable_jump(struct static_key_true *key, struct module *mod)
{
struct once_work *w;
- w = kmalloc(sizeof(*w), GFP_ATOMIC);
+ w = kmalloc_obj(*w, GFP_ATOMIC);
if (!w)
return;
diff --git a/lib/parman.c b/lib/parman.c
index 3f8f8d422e62..e93b82b73522 100644
--- a/lib/parman.c
+++ b/lib/parman.c
@@ -268,7 +268,7 @@ struct parman *parman_create(const struct parman_ops *ops, void *priv)
{
struct parman *parman;
- parman = kzalloc(sizeof(*parman), GFP_KERNEL);
+ parman = kzalloc_obj(*parman, GFP_KERNEL);
if (!parman)
return NULL;
INIT_LIST_HEAD(&parman->prio_list);
diff --git a/lib/percpu-refcount.c b/lib/percpu-refcount.c
index 668f6aa6a75d..97772e42b9b2 100644
--- a/lib/percpu-refcount.c
+++ b/lib/percpu-refcount.c
@@ -73,7 +73,7 @@ int percpu_ref_init(struct percpu_ref *ref, percpu_ref_func_t *release,
if (!ref->percpu_count_ptr)
return -ENOMEM;
- data = kzalloc(sizeof(*ref->data), gfp);
+ data = kzalloc_obj(*ref->data, gfp);
if (!data) {
free_percpu((void __percpu *)ref->percpu_count_ptr);
ref->percpu_count_ptr = 0;
diff --git a/lib/pldmfw/pldmfw.c b/lib/pldmfw/pldmfw.c
index b45ceb725780..c1222c11f6a8 100644
--- a/lib/pldmfw/pldmfw.c
+++ b/lib/pldmfw/pldmfw.c
@@ -287,7 +287,7 @@ pldm_parse_desc_tlvs(struct pldmfw_priv *data, struct pldmfw_record *record, u8
if (err)
return err;
- desc = kzalloc(sizeof(*desc), GFP_KERNEL);
+ desc = kzalloc_obj(*desc, GFP_KERNEL);
if (!desc)
return -ENOMEM;
@@ -328,7 +328,7 @@ pldm_parse_one_record(struct pldmfw_priv *data,
int i;
/* Make a copy and insert it into the record list */
- record = kzalloc(sizeof(*record), GFP_KERNEL);
+ record = kzalloc_obj(*record, GFP_KERNEL);
if (!record)
return -ENOMEM;
@@ -465,7 +465,7 @@ static int pldm_parse_components(struct pldmfw_priv *data)
if (err)
return err;
- component = kzalloc(sizeof(*component), GFP_KERNEL);
+ component = kzalloc_obj(*component, GFP_KERNEL);
if (!component)
return -ENOMEM;
@@ -848,7 +848,7 @@ int pldmfw_flash_image(struct pldmfw *context, const struct firmware *fw)
struct pldmfw_priv *data;
int err;
- data = kzalloc(sizeof(*data), GFP_KERNEL);
+ data = kzalloc_obj(*data, GFP_KERNEL);
if (!data)
return -ENOMEM;
diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c
index 690cede46ac2..862318e99c9a 100644
--- a/lib/rbtree_test.c
+++ b/lib/rbtree_test.c
@@ -399,7 +399,7 @@ static int augmented_check(void)
static int __init rbtree_test_init(void)
{
- nodes = kmalloc_array(nnodes, sizeof(*nodes), GFP_KERNEL);
+ nodes = kmalloc_objs(*nodes, nnodes, GFP_KERNEL);
if (!nodes)
return -ENOMEM;
diff --git a/lib/reed_solomon/reed_solomon.c b/lib/reed_solomon/reed_solomon.c
index a9e2dcb6f2a7..864484c01827 100644
--- a/lib/reed_solomon/reed_solomon.c
+++ b/lib/reed_solomon/reed_solomon.c
@@ -73,7 +73,7 @@ static struct rs_codec *codec_init(int symsize, int gfpoly, int (*gffunc)(int),
int i, j, sr, root, iprim;
struct rs_codec *rs;
- rs = kzalloc(sizeof(*rs), gfp);
+ rs = kzalloc_obj(*rs, gfp);
if (!rs)
return NULL;
diff --git a/lib/reed_solomon/test_rslib.c b/lib/reed_solomon/test_rslib.c
index 75cb1adac884..3c17b04a0a0a 100644
--- a/lib/reed_solomon/test_rslib.c
+++ b/lib/reed_solomon/test_rslib.c
@@ -111,7 +111,7 @@ static struct wspace *alloc_ws(struct rs_codec *rs)
struct wspace *ws;
int nn = rs->nn;
- ws = kzalloc(sizeof(*ws), GFP_KERNEL);
+ ws = kzalloc_obj(*ws, GFP_KERNEL);
if (!ws)
return NULL;
@@ -124,7 +124,7 @@ static struct wspace *alloc_ws(struct rs_codec *rs)
ws->s = ws->r + nn;
ws->corr = ws->s + nroots;
- ws->errlocs = kmalloc_array(nn + nroots, sizeof(int), GFP_KERNEL);
+ ws->errlocs = kmalloc_objs(int, nn + nroots, GFP_KERNEL);
if (!ws->errlocs)
goto err;
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index 258fb0e7abdf..30c999d57b10 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -74,8 +74,7 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit)
struct ref_tracker_dir_stats *stats;
struct ref_tracker *tracker;
- stats = kmalloc(struct_size(stats, stacks, limit),
- GFP_NOWAIT);
+ stats = kmalloc_flex(*stats, stacks, limit, GFP_NOWAIT);
if (!stats)
return ERR_PTR(-ENOMEM);
stats->total = 0;
@@ -268,7 +267,7 @@ int ref_tracker_alloc(struct ref_tracker_dir *dir,
}
if (gfp & __GFP_DIRECT_RECLAIM)
gfp_mask |= __GFP_NOFAIL;
- *trackerp = tracker = kzalloc(sizeof(*tracker), gfp_mask);
+ *trackerp = tracker = kzalloc_obj(*tracker, gfp_mask);
if (unlikely(!tracker)) {
pr_err_once("memory allocation failure, unreliable refcount tracker.\n");
refcount_inc(&dir->untracked);
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
index 21bc9c1f7c06..d773720d11bf 100644
--- a/lib/scatterlist.c
+++ b/lib/scatterlist.c
@@ -168,8 +168,7 @@ static struct scatterlist *sg_kmalloc(unsigned int nents, gfp_t gfp_mask)
kmemleak_alloc(ptr, PAGE_SIZE, 1, gfp_mask);
return ptr;
} else
- return kmalloc_array(nents, sizeof(struct scatterlist),
- gfp_mask);
+ return kmalloc_objs(struct scatterlist, nents, gfp_mask);
}
static void sg_kfree(struct scatterlist *sg, unsigned int nents)
@@ -632,8 +631,7 @@ struct scatterlist *sgl_alloc_order(unsigned long long length,
return NULL;
nalloc++;
}
- sgl = kmalloc_array(nalloc, sizeof(struct scatterlist),
- gfp & ~GFP_DMA);
+ sgl = kmalloc_objs(struct scatterlist, nalloc, gfp & ~GFP_DMA);
if (!sgl)
return NULL;
diff --git a/lib/sg_split.c b/lib/sg_split.c
index 0f89aab5c671..24e8f5e48e63 100644
--- a/lib/sg_split.c
+++ b/lib/sg_split.c
@@ -152,7 +152,7 @@ int sg_split(struct scatterlist *in, const int in_mapped_nents,
int i, ret;
struct sg_splitter *splitters;
- splitters = kcalloc(nb_splits, sizeof(*splitters), gfp_mask);
+ splitters = kzalloc_objs(*splitters, nb_splits, gfp_mask);
if (!splitters)
return -ENOMEM;
@@ -163,9 +163,8 @@ int sg_split(struct scatterlist *in, const int in_mapped_nents,
ret = -ENOMEM;
for (i = 0; i < nb_splits; i++) {
- splitters[i].out_sg = kmalloc_array(splitters[i].nents,
- sizeof(struct scatterlist),
- gfp_mask);
+ splitters[i].out_sg = kmalloc_objs(struct scatterlist,
+ splitters[i].nents, gfp_mask);
if (!splitters[i].out_sg)
goto err;
}
diff --git a/lib/stackdepot.c b/lib/stackdepot.c
index 166f50ad8391..b58f01c2ca7e 100644
--- a/lib/stackdepot.c
+++ b/lib/stackdepot.c
@@ -260,7 +260,7 @@ int stack_depot_init(void)
entries = 1UL << STACK_BUCKET_NUMBER_ORDER_MAX;
pr_info("allocating hash table of %lu entries via kvcalloc\n", entries);
- stack_table = kvcalloc(entries, sizeof(struct list_head), GFP_KERNEL);
+ stack_table = kvzalloc_objs(struct list_head, entries, GFP_KERNEL);
if (!stack_table) {
pr_err("hash table allocation failed, disabling\n");
stack_depot_disabled = true;
diff --git a/lib/string_helpers.c b/lib/string_helpers.c
index 8cb6f66c9c2b..72a15e7132b9 100644
--- a/lib/string_helpers.c
+++ b/lib/string_helpers.c
@@ -147,7 +147,7 @@ int parse_int_array(const char *buf, size_t count, int **array)
if (!nints)
return -ENOENT;
- ints = kcalloc(nints + 1, sizeof(*ints), GFP_KERNEL);
+ ints = kzalloc_objs(*ints, nints + 1, GFP_KERNEL);
if (!ints)
return -ENOMEM;
diff --git a/lib/test_bpf.c b/lib/test_bpf.c
index af0041df2b72..e4cb339f322e 100644
--- a/lib/test_bpf.c
+++ b/lib/test_bpf.c
@@ -94,7 +94,7 @@ static int bpf_fill_maxinsns1(struct bpf_test *self)
__u32 k = ~0;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -113,7 +113,7 @@ static int bpf_fill_maxinsns2(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -133,7 +133,7 @@ static int bpf_fill_maxinsns3(struct bpf_test *self)
struct rnd_state rnd;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -159,7 +159,7 @@ static int bpf_fill_maxinsns4(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -178,7 +178,7 @@ static int bpf_fill_maxinsns5(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -201,7 +201,7 @@ static int bpf_fill_maxinsns6(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -223,7 +223,7 @@ static int bpf_fill_maxinsns7(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -249,7 +249,7 @@ static int bpf_fill_maxinsns8(struct bpf_test *self)
struct sock_filter *insn;
int i, jmp_off = len - 3;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -272,7 +272,7 @@ static int bpf_fill_maxinsns9(struct bpf_test *self)
struct bpf_insn *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -298,7 +298,7 @@ static int bpf_fill_maxinsns10(struct bpf_test *self)
struct bpf_insn *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -324,7 +324,7 @@ static int __bpf_fill_ja(struct bpf_test *self, unsigned int len,
unsigned int rlen;
int i, j;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -358,7 +358,7 @@ static int bpf_fill_maxinsns12(struct bpf_test *self)
struct sock_filter *insn;
int i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -381,7 +381,7 @@ static int bpf_fill_maxinsns13(struct bpf_test *self)
struct sock_filter *insn;
int i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -410,7 +410,7 @@ static int bpf_fill_ld_abs_get_processor_id(struct bpf_test *self)
struct sock_filter *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -434,7 +434,7 @@ static int __bpf_fill_stxdw(struct bpf_test *self, int size)
struct bpf_insn *insn;
int i;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -484,7 +484,7 @@ static int __bpf_fill_max_jmp(struct bpf_test *self, int jmp, int imm, bool alu3
int len = S16_MAX + 5;
int i;
- insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
+ insns = kmalloc_objs(*insns, len, GFP_KERNEL);
if (!insns)
return -ENOMEM;
@@ -626,7 +626,7 @@ static int __bpf_fill_alu_shift(struct bpf_test *self, u8 op,
int imm, k;
int i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -759,7 +759,7 @@ static int __bpf_fill_alu_shift_same_reg(struct bpf_test *self, u8 op,
int i = 0;
u64 val;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -1244,7 +1244,7 @@ static int __bpf_fill_alu_imm_regs(struct bpf_test *self, u8 op, bool alu32)
u32 imm;
int rd;
- insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
+ insns = kmalloc_objs(*insns, len, GFP_KERNEL);
if (!insns)
return -ENOMEM;
@@ -1426,7 +1426,7 @@ static int __bpf_fill_alu_reg_pairs(struct bpf_test *self, u8 op, bool alu32)
int rd, rs;
int i = 0;
- insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
+ insns = kmalloc_objs(*insns, len, GFP_KERNEL);
if (!insns)
return -ENOMEM;
@@ -1917,7 +1917,7 @@ static int __bpf_fill_atomic_reg_pairs(struct bpf_test *self, u8 width, u8 op)
u64 mem, upd, res;
int rd, rs, i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -2163,7 +2163,7 @@ static int bpf_fill_ld_imm64_magn(struct bpf_test *self)
int bit, adj, sign;
int i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -2217,7 +2217,7 @@ static int __bpf_fill_ld_imm64_bytes(struct bpf_test *self,
u32 rand = 1;
int i = 0;
- insn = kmalloc_array(len, sizeof(*insn), GFP_KERNEL);
+ insn = kmalloc_objs(*insn, len, GFP_KERNEL);
if (!insn)
return -ENOMEM;
@@ -2724,7 +2724,7 @@ static int __bpf_fill_staggered_jumps(struct bpf_test *self,
struct bpf_insn *insns;
int off, ind;
- insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
+ insns = kmalloc_objs(*insns, len, GFP_KERNEL);
if (!insns)
return -ENOMEM;
@@ -15461,7 +15461,7 @@ static __init int prepare_tail_call_tests(struct bpf_array **pprogs)
int which, err;
/* Allocate the table of programs to be used for tail calls */
- progs = kzalloc(struct_size(progs, ptrs, ntests + 1), GFP_KERNEL);
+ progs = kzalloc_flex(*progs, ptrs, ntests + 1, GFP_KERNEL);
if (!progs)
goto out_nomem;
diff --git a/lib/test_debug_virtual.c b/lib/test_debug_virtual.c
index b7cc0aaee173..288d5510406c 100644
--- a/lib/test_debug_virtual.c
+++ b/lib/test_debug_virtual.c
@@ -29,7 +29,7 @@ static int __init test_debug_virtual_init(void)
pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va);
- foo = kzalloc(sizeof(*foo), GFP_KERNEL);
+ foo = kzalloc_obj(*foo, GFP_KERNEL);
if (!foo)
return -ENOMEM;
diff --git a/lib/test_firmware.c b/lib/test_firmware.c
index be4f93124901..1a933a874148 100644
--- a/lib/test_firmware.c
+++ b/lib/test_firmware.c
@@ -1309,7 +1309,7 @@ static ssize_t upload_register_store(struct device *dev,
goto free_name;
}
- tst = kzalloc(sizeof(*tst), GFP_KERNEL);
+ tst = kzalloc_obj(*tst, GFP_KERNEL);
if (!tst) {
ret = -ENOMEM;
goto free_name;
@@ -1526,7 +1526,7 @@ static int __init test_firmware_init(void)
{
int rc;
- test_fw_config = kzalloc(sizeof(struct test_config), GFP_KERNEL);
+ test_fw_config = kzalloc_obj(struct test_config, GFP_KERNEL);
if (!test_fw_config)
return -ENOMEM;
diff --git a/lib/test_hmm.c b/lib/test_hmm.c
index 455a6862ae50..0f9eb1c16ef0 100644
--- a/lib/test_hmm.c
+++ b/lib/test_hmm.c
@@ -166,7 +166,7 @@ static int dmirror_fops_open(struct inode *inode, struct file *filp)
int ret;
/* Mirror this process address space */
- dmirror = kzalloc(sizeof(*dmirror), GFP_KERNEL);
+ dmirror = kzalloc_obj(*dmirror, GFP_KERNEL);
if (dmirror == NULL)
return -ENOMEM;
@@ -504,7 +504,7 @@ static int dmirror_allocate_chunk(struct dmirror_device *mdevice,
void *ptr;
int ret = -ENOMEM;
- devmem = kzalloc(sizeof(*devmem), GFP_KERNEL);
+ devmem = kzalloc_obj(*devmem, GFP_KERNEL);
if (!devmem)
return ret;
diff --git a/lib/test_kho.c b/lib/test_kho.c
index a20fafaf9846..601f2323ef7e 100644
--- a/lib/test_kho.c
+++ b/lib/test_kho.c
@@ -211,7 +211,7 @@ static int kho_test_save(void)
max_mem = PAGE_ALIGN(max_mem);
max_nr = max_mem >> PAGE_SHIFT;
- folios = kvmalloc_array(max_nr, sizeof(*state->folios), GFP_KERNEL);
+ folios = kvmalloc_objs(*state->folios, max_nr, GFP_KERNEL);
if (!folios)
return -ENOMEM;
state->folios = folios;
diff --git a/lib/test_memcat_p.c b/lib/test_memcat_p.c
index 7e0797a6bebf..0f0a15fea6e2 100644
--- a/lib/test_memcat_p.c
+++ b/lib/test_memcat_p.c
@@ -24,20 +24,20 @@ static int __init test_memcat_p_init(void)
struct test_struct **in0, **in1, **out, **p;
int err = -ENOMEM, i, r, total = 0;
- in0 = kcalloc(INPUT_MAX, sizeof(*in0), GFP_KERNEL);
+ in0 = kzalloc_objs(*in0, INPUT_MAX, GFP_KERNEL);
if (!in0)
return err;
- in1 = kcalloc(INPUT_MAX, sizeof(*in1), GFP_KERNEL);
+ in1 = kzalloc_objs(*in1, INPUT_MAX, GFP_KERNEL);
if (!in1)
goto err_free_in0;
for (i = 0, r = 1; i < INPUT_MAX - 1; i++) {
- in0[i] = kmalloc(sizeof(**in0), GFP_KERNEL);
+ in0[i] = kmalloc_obj(**in0, GFP_KERNEL);
if (!in0[i])
goto err_free_elements;
- in1[i] = kmalloc(sizeof(**in1), GFP_KERNEL);
+ in1[i] = kmalloc_obj(**in1, GFP_KERNEL);
if (!in1[i]) {
kfree(in0[i]);
goto err_free_elements;
diff --git a/lib/test_objagg.c b/lib/test_objagg.c
index ce5c4c36a084..a391f0b998c9 100644
--- a/lib/test_objagg.c
+++ b/lib/test_objagg.c
@@ -107,7 +107,7 @@ static void *delta_create(void *priv, void *parent_obj, void *obj)
if (!delta_check(priv, parent_obj, obj))
return ERR_PTR(-EINVAL);
- delta = kzalloc(sizeof(*delta), GFP_KERNEL);
+ delta = kzalloc_obj(*delta, GFP_KERNEL);
if (!delta)
return ERR_PTR(-ENOMEM);
delta->key_id_diff = diff;
@@ -130,7 +130,7 @@ static void *root_create(void *priv, void *obj, unsigned int id)
struct tokey *key = obj;
struct root *root;
- root = kzalloc(sizeof(*root), GFP_KERNEL);
+ root = kzalloc_obj(*root, GFP_KERNEL);
if (!root)
return ERR_PTR(-ENOMEM);
memcpy(&root->key, key, sizeof(root->key));
diff --git a/lib/test_parman.c b/lib/test_parman.c
index f9b97426a337..ae5a0a2f63c3 100644
--- a/lib/test_parman.c
+++ b/lib/test_parman.c
@@ -219,7 +219,7 @@ static struct test_parman *test_parman_create(const struct parman_ops *ops)
struct test_parman *test_parman;
int err;
- test_parman = kzalloc(sizeof(*test_parman), GFP_KERNEL);
+ test_parman = kzalloc_obj(*test_parman, GFP_KERNEL);
if (!test_parman)
return ERR_PTR(-ENOMEM);
err = test_parman_resize(test_parman, TEST_PARMAN_BASE_COUNT);
diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c
index c63db03ebb9d..12de6388cd9b 100644
--- a/lib/test_rhashtable.c
+++ b/lib/test_rhashtable.c
@@ -524,7 +524,7 @@ static int __init test_insert_dup(struct test_obj_rhl *rhl_test_objects,
const char *key;
int err = 0;
- rhlt = kmalloc(sizeof(*rhlt), GFP_KERNEL);
+ rhlt = kmalloc_obj(*rhlt, GFP_KERNEL);
if (WARN_ON(!rhlt))
return -EINVAL;
diff --git a/lib/test_vmalloc.c b/lib/test_vmalloc.c
index 270b6f7ca807..5ed369a92c75 100644
--- a/lib/test_vmalloc.c
+++ b/lib/test_vmalloc.c
@@ -396,7 +396,7 @@ vm_map_ram_test(void)
int i;
map_nr_pages = nr_pages > 0 ? nr_pages:1;
- pages = kcalloc(map_nr_pages, sizeof(struct page *), GFP_KERNEL);
+ pages = kzalloc_objs(struct page *, map_nr_pages, GFP_KERNEL);
if (!pages)
return -1;
@@ -542,7 +542,7 @@ init_test_configuration(void)
nr_threads = clamp(nr_threads, 1, (int) USHRT_MAX);
/* Allocate the space for test instances. */
- tdriver = kvcalloc(nr_threads, sizeof(*tdriver), GFP_KERNEL);
+ tdriver = kvzalloc_objs(*tdriver, nr_threads, GFP_KERNEL);
if (tdriver == NULL)
return -1;
diff --git a/lib/tests/kunit_iov_iter.c b/lib/tests/kunit_iov_iter.c
index 48342736d016..500565631cbd 100644
--- a/lib/tests/kunit_iov_iter.c
+++ b/lib/tests/kunit_iov_iter.c
@@ -387,7 +387,7 @@ static void __init iov_kunit_load_folioq(struct kunit *test,
for (i = 0; i < npages; i++) {
if (folioq_full(p)) {
- p->next = kzalloc(sizeof(struct folio_queue), GFP_KERNEL);
+ p->next = kzalloc_obj(struct folio_queue, GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p->next);
folioq_init(p->next, 0);
p->next->prev = p;
@@ -403,7 +403,7 @@ static struct folio_queue *iov_kunit_create_folioq(struct kunit *test)
{
struct folio_queue *folioq;
- folioq = kzalloc(sizeof(struct folio_queue), GFP_KERNEL);
+ folioq = kzalloc_obj(struct folio_queue, GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, folioq);
kunit_add_action_or_reset(test, iov_kunit_destroy_folioq, folioq);
folioq_init(folioq, 0);
@@ -565,7 +565,7 @@ static struct xarray *iov_kunit_create_xarray(struct kunit *test)
{
struct xarray *xarray;
- xarray = kzalloc(sizeof(struct xarray), GFP_KERNEL);
+ xarray = kzalloc_obj(struct xarray, GFP_KERNEL);
xa_init(xarray);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xarray);
kunit_add_action_or_reset(test, iov_kunit_destroy_xarray, xarray);
diff --git a/lib/tests/list-test.c b/lib/tests/list-test.c
index 9135cdc1bb39..6d9227a2b204 100644
--- a/lib/tests/list-test.c
+++ b/lib/tests/list-test.c
@@ -26,10 +26,10 @@ static void list_test_list_init(struct kunit *test)
INIT_LIST_HEAD(&list2);
- list4 = kzalloc(sizeof(*list4), GFP_KERNEL | __GFP_NOFAIL);
+ list4 = kzalloc_obj(*list4, GFP_KERNEL | __GFP_NOFAIL);
INIT_LIST_HEAD(list4);
- list5 = kmalloc(sizeof(*list5), GFP_KERNEL | __GFP_NOFAIL);
+ list5 = kmalloc_obj(*list5, GFP_KERNEL | __GFP_NOFAIL);
memset(list5, 0xFF, sizeof(*list5));
INIT_LIST_HEAD(list5);
@@ -829,10 +829,10 @@ static void hlist_test_init(struct kunit *test)
INIT_HLIST_HEAD(&list2);
- list4 = kzalloc(sizeof(*list4), GFP_KERNEL | __GFP_NOFAIL);
+ list4 = kzalloc_obj(*list4, GFP_KERNEL | __GFP_NOFAIL);
INIT_HLIST_HEAD(list4);
- list5 = kmalloc(sizeof(*list5), GFP_KERNEL | __GFP_NOFAIL);
+ list5 = kmalloc_obj(*list5, GFP_KERNEL | __GFP_NOFAIL);
memset(list5, 0xFF, sizeof(*list5));
INIT_HLIST_HEAD(list5);
diff --git a/lib/tests/test_ratelimit.c b/lib/tests/test_ratelimit.c
index bfaeca49304a..365f1fc1f256 100644
--- a/lib/tests/test_ratelimit.c
+++ b/lib/tests/test_ratelimit.c
@@ -104,7 +104,8 @@ static void test_ratelimit_stress(struct kunit *test)
int i;
const int n_stress_kthread = cpumask_weight(cpu_online_mask);
struct stress_kthread skt = { 0 };
- struct stress_kthread *sktp = kcalloc(n_stress_kthread, sizeof(*sktp), GFP_KERNEL);
+ struct stress_kthread *sktp = kzalloc_objs(*sktp, n_stress_kthread,
+ GFP_KERNEL);
KUNIT_EXPECT_NOT_NULL_MSG(test, sktp, "Memory allocation failure");
for (i = 0; i < n_stress_kthread; i++) {
diff --git a/lib/xz/xz_dec_bcj.c b/lib/xz/xz_dec_bcj.c
index 610d58d947ab..6e0fa5bef841 100644
--- a/lib/xz/xz_dec_bcj.c
+++ b/lib/xz/xz_dec_bcj.c
@@ -591,7 +591,7 @@ enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s, struct xz_dec_lzma2 *lzma2,
struct xz_dec_bcj *xz_dec_bcj_create(bool single_call)
{
- struct xz_dec_bcj *s = kmalloc(sizeof(*s), GFP_KERNEL);
+ struct xz_dec_bcj *s = kmalloc_obj(*s, GFP_KERNEL);
if (s != NULL)
s->single_call = single_call;
diff --git a/lib/xz/xz_dec_lzma2.c b/lib/xz/xz_dec_lzma2.c
index 83bb66b6016d..02fccb7795b5 100644
--- a/lib/xz/xz_dec_lzma2.c
+++ b/lib/xz/xz_dec_lzma2.c
@@ -1138,7 +1138,7 @@ enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s, struct xz_buf *b)
struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode, uint32_t dict_max)
{
- struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL);
+ struct xz_dec_lzma2 *s = kmalloc_obj(*s, GFP_KERNEL);
if (s == NULL)
return NULL;
@@ -1296,7 +1296,7 @@ struct xz_dec_microlzma *xz_dec_microlzma_alloc(enum xz_mode mode,
if (dict_size < 4096 || dict_size > (3U << 30))
return NULL;
- s = kmalloc(sizeof(*s), GFP_KERNEL);
+ s = kmalloc_obj(*s, GFP_KERNEL);
if (s == NULL)
return NULL;
diff --git a/lib/xz/xz_dec_stream.c b/lib/xz/xz_dec_stream.c
index f9d003684d56..0844eb6e990c 100644
--- a/lib/xz/xz_dec_stream.c
+++ b/lib/xz/xz_dec_stream.c
@@ -784,7 +784,7 @@ enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b)
struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max)
{
- struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL);
+ struct xz_dec *s = kmalloc_obj(*s, GFP_KERNEL);
if (s == NULL)
return NULL;
diff --git a/lib/zlib_inflate/infutil.c b/lib/zlib_inflate/infutil.c
index 4824c2cc7a09..d5f9a77e41c6 100644
--- a/lib/zlib_inflate/infutil.c
+++ b/lib/zlib_inflate/infutil.c
@@ -14,7 +14,7 @@ int zlib_inflate_blob(void *gunzip_buf, unsigned int sz,
int rc;
rc = -ENOMEM;
- strm = kmalloc(sizeof(*strm), GFP_KERNEL);
+ strm = kmalloc_obj(*strm, GFP_KERNEL);
if (strm == NULL)
goto gunzip_nomem1;
strm->workspace = kmalloc(zlib_inflate_workspacesize(), GFP_KERNEL);