[Devel] [PATCH hci-8.1 v2 2/2] binfmt_elf: return the real error when program headers cannot be loaded
no-reply at sashiko.virtuozzo.com
no-reply at sashiko.virtuozzo.com
Wed Nov 4 21:08:51 MSK 2026
> load_elf_phdrs() returns NULL on any failure, and load_elf_binary()
> turns that into -ENOEXEC for the executable and -ELIBBAD for its
> interpreter. So a failed allocation or read of the program headers
> makes glibc's execvp() run the ELF file with /bin/sh, and reports a
> healthy ld.so as a corrupted shared library.
>
> Return an ERR_PTR instead, as binfmt_elf_fdpic does:
>
> -ENOEXEC bad e_phentsize, e_phnum or e_phoff, or a short read
> -ENOMEM the allocation fails
> read error kernel_read() fails
>
> Malformed files and short reads keep getting -ENOEXEC and -ELIBBAD.
> The table is read with kernel_read() directly, as elf_read() turns a
> short read into -EIO. An e_phoff past LLONG_MAX - size is rejected up
> front, so that rw_verify_area() does not turn it into -EINVAL.
>
> Backport note: mainline review asked for a change of the errno only, and
> this version does just that; a mainline v2 will follow. The v6.17 change
> "binfmt_elf: remove the 4k limitation of program header size" is not in
> this tree, so the header table is still limited to ELF_MIN_ALIGN and the
> allocation in practice fails only under fault injection; the read errors
> and the e_phoff check apply as they are.
>
> Fixes: 6a8d38945cf4 ("binfmt_elf: Hoist ELF program header loading to a function")
> Fixes: a9d9ef133f44 ("binfmt_elf: load interpreter program headers earlier")
> https://virtuozzo.atlassian.net/browse/VSTOR-150144
>
> Feature: fix ms/exec
> Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.vzint.dev/#/patchset/20261104-b4-prep-khorenko-vstor-149847-1-upstream-fixes-v2-0-2974ec52f0fe@virtuozzo.com?part=2
More information about the Devel
mailing list