Description
In the Linux kernel, the following vulnerability has been resolved:
fs/binfmt_elf: Fix memory leak in load_elf_binary()
There is a memory leak reported by kmemleak:
unreferenced object 0xffff88817104ef80 (size 224):
comm "xfs_admin", pid 47165, jiffies 4298708825 (age 1333.476s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60 a8 b3 00 81 88 ff ff a8 10 5a 00 81 88 ff ff `.........Z.....
backtrace:
[] __alloc_file+0x21/0x250
[] alloc_empty_file+0x41/0xf0
[] path_openat+0xea/0x3d30
[] do_filp_open+0x1b9/0x290
[] do_open_execat+0xce/0x5b0
[] open_exec+0x27/0x50
[] load_elf_binary+0x510/0x3ed0
[] bprm_execve+0x599/0x1240
[] do_execveat_common.isra.0+0x4c7/0x680
[] __x64_sys_execve+0x88/0xb0
[] do_syscall_64+0x35/0x80
If "interp_elf_ex" fails to allocate memory in load_elf_binary(),
the program will take the "out_free_ph" error handing path,
resulting in "interpreter" file resource is not released.
Fix it by adding an error handing path "out_free_file", which will
release the file resource when "interp_elf_ex" failed to allocate
memory.