binfmt: Use struct_size()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 28 May 2023 16:20:24 +0000 (18:20 +0200)
committerKees Cook <keescook@chromium.org>
Tue, 30 May 2023 22:49:46 +0000 (15:49 -0700)
Use struct_size() instead of hand-writing it. It is less verbose, more
robust and more informative.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/53150beae5dc04dac513dba391a2e4ae8696a7f3.1685290790.git.christophe.jaillet@wanadoo.fr
fs/binfmt_elf_fdpic.c

index d76ad3d..237ce38 100644 (file)
@@ -748,7 +748,6 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
        struct elf32_phdr *phdr;
        unsigned long load_addr, stop;
        unsigned nloads, tmp;
-       size_t size;
        int loop, ret;
 
        /* allocate a load map table */
@@ -760,8 +759,7 @@ static int elf_fdpic_map_file(struct elf_fdpic_params *params,
        if (nloads == 0)
                return -ELIBBAD;
 
-       size = sizeof(*loadmap) + nloads * sizeof(*seg);
-       loadmap = kzalloc(size, GFP_KERNEL);
+       loadmap = kzalloc(struct_size(loadmap, segs, nloads), GFP_KERNEL);
        if (!loadmap)
                return -ENOMEM;