diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2026-02-21 11:02:58 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2026-02-21 11:02:58 -0800 |
| commit | 8934827db5403eae57d4537114a9ff88b0a8460f (patch) | |
| tree | 5167aa7e16b786b9135e19d508b234054fa6e8ce /init | |
| parent | c7decec2f2d2ab0366567f9e30c0e1418cece43f (diff) | |
| parent | 7a70c15bd1449f1eb30991772edce37b41e496fb (diff) | |
Merge tag 'kmalloc_obj-treewide-v7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull kmalloc_obj conversion from Kees Cook:
"This does the tree-wide conversion to kmalloc_obj() and friends using
coccinelle, with a subsequent small manual cleanup of whitespace
alignment that coccinelle does not handle.
This uncovered a clang bug in __builtin_counted_by_ref(), so the
conversion is preceded by disabling that for current versions of
clang. The imminent clang 22.1 release has the fix.
I've done allmodconfig build tests for x86_64, arm64, i386, and arm. I
did defconfig builds for alpha, m68k, mips, parisc, powerpc, riscv,
s390, sparc, sh, arc, csky, xtensa, hexagon, and openrisc"
* tag 'kmalloc_obj-treewide-v7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
kmalloc_obj: Clean up after treewide replacements
treewide: Replace kmalloc with kmalloc_obj for non-scalar types
compiler_types: Disable __builtin_counted_by_ref for Clang
Diffstat (limited to 'init')
| -rw-r--r-- | init/Kconfig | 5 | ||||
| -rw-r--r-- | init/initramfs.c | 6 | ||||
| -rw-r--r-- | init/initramfs_test.c | 4 |
3 files changed, 10 insertions, 5 deletions
diff --git a/init/Kconfig b/init/Kconfig index e95d43457851..c25869cf59c1 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -150,6 +150,11 @@ config CC_HAS_COUNTED_BY_PTR # supported since gcc 16.0.0 default y if CC_IS_GCC && GCC_VERSION >= 160000 +config CC_HAS_BROKEN_COUNTED_BY_REF + bool + # https://github.com/llvm/llvm-project/issues/182575 + default y if CC_IS_CLANG && CLANG_VERSION < 220000 + config CC_HAS_MULTIDIMENSIONAL_NONSTRING def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 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, |
