diff options
| author | Kees Cook <kees@kernel.org> | 2026-02-20 23:49:23 -0800 |
|---|---|---|
| committer | Kees Cook <kees@kernel.org> | 2026-02-21 01:02:28 -0800 |
| commit | 69050f8d6d075dc01af7a5f2f550a8067510366f (patch) | |
| tree | bb265f94d9dfa7876c06a5d9f88673d496a15341 /init | |
| parent | d39a1d7486d98668dd34aaa6732aad7977c45f5a (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 'init')
| -rw-r--r-- | init/initramfs.c | 6 | ||||
| -rw-r--r-- | init/initramfs_test.c | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/init/initramfs.c b/init/initramfs.c index 6ddbfb17fb8f..3d89e31e0d8a 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -102,7 +102,7 @@ static char __init *find_link(int major, int minor, int ino, continue; return (*p)->name; } - q = kmalloc(sizeof(struct hash), GFP_KERNEL); + q = kmalloc_obj(struct hash, GFP_KERNEL); if (!q) panic_show_mem("can't allocate link hash entry"); q->major = major; @@ -153,7 +153,7 @@ static void __init dir_add(const char *name, size_t nlen, time64_t mtime) { struct dir_entry *de; - de = kmalloc(struct_size(de, name, nlen), GFP_KERNEL); + de = kmalloc_flex(*de, name, nlen, GFP_KERNEL); if (!de) panic_show_mem("can't allocate dir_entry buffer"); INIT_LIST_HEAD(&de->list); @@ -517,7 +517,7 @@ char * __init unpack_to_rootfs(char *buf, unsigned long len) char header[CPIO_HDRLEN]; char symlink[PATH_MAX + N_ALIGN(PATH_MAX) + 1]; char name[N_ALIGN(PATH_MAX)]; - } *bufs = kmalloc(sizeof(*bufs), GFP_KERNEL); + } *bufs = kmalloc_obj(*bufs, GFP_KERNEL); if (!bufs) panic_show_mem("can't allocate buffers"); diff --git a/init/initramfs_test.c b/init/initramfs_test.c index beb6e3cf7808..1e75faec678b 100644 --- a/init/initramfs_test.c +++ b/init/initramfs_test.c @@ -403,7 +403,7 @@ static void __init initramfs_test_fname_pad(struct kunit *test) struct test_fname_pad { char padded_fname[4096 - CPIO_HDRLEN]; char cpio_srcbuf[CPIO_HDRLEN + PATH_MAX + 3 + sizeof(fdata)]; - } *tbufs = kzalloc(sizeof(struct test_fname_pad), GFP_KERNEL); + } *tbufs = kzalloc_obj(struct test_fname_pad, GFP_KERNEL); struct initramfs_test_cpio c[] = { { .magic = "070701", .ino = 1, @@ -457,7 +457,7 @@ static void __init initramfs_test_fname_path_max(struct kunit *test) char fname_oversize[PATH_MAX + 1]; char fname_ok[PATH_MAX]; char cpio_src[(CPIO_HDRLEN + PATH_MAX + 3 + sizeof(fdata)) * 2]; - } *tbufs = kzalloc(sizeof(struct test_fname_path_max), GFP_KERNEL); + } *tbufs = kzalloc_obj(struct test_fname_path_max, GFP_KERNEL); struct initramfs_test_cpio c[] = { { .magic = "070701", .ino = 1, |
