Li Zetao
265b6fb780
fs/binfmt_elf: Fix memory leak in load_elf_binary()
...
commit 594d2a14f2168c09b13b114c3d457aa939403e52 upstream.
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:
[<ffffffff819171e1>] __alloc_file+0x21/0x250
[<ffffffff81918061>] alloc_empty_file+0x41/0xf0
[<ffffffff81948cda>] path_openat+0xea/0x3d30
[<ffffffff8194ec89>] do_filp_open+0x1b9/0x290
[<ffffffff8192660e>] do_open_execat+0xce/0x5b0
[<ffffffff81926b17>] open_exec+0x27/0x50
[<ffffffff81a69250>] load_elf_binary+0x510/0x3ed0
[<ffffffff81927759>] bprm_execve+0x599/0x1240
[<ffffffff8192a997>] do_execveat_common.isra.0+0x4c7/0x680
[<ffffffff8192b078>] __x64_sys_execve+0x88/0xb0
[<ffffffff83bbf0a5>] 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.
Fixes: 0693ffebcfe5 ("fs/binfmt_elf.c: allocate less for static executable")
Signed-off-by: Li Zetao <lizetao1@huawei.com>
Reviewed-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20221024154421.982230-1-lizetao1@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-03 23:59:12 +09:00
..
2022-08-17 14:24:07 +02:00
2021-06-29 10:53:48 -07:00
2021-06-29 10:53:48 -07:00
2022-09-23 14:15:51 +02:00
2021-10-20 21:09:02 -04:00
2021-08-19 09:02:55 +09:00
2021-06-29 10:53:48 -07:00
2022-10-29 10:12:55 +02:00
2022-07-02 16:41:14 +02:00
2022-10-15 07:59:01 +02:00
2022-10-29 10:12:56 +02:00
2022-03-02 11:48:02 +01:00
2021-11-18 19:16:11 +01:00
2022-09-15 11:30:02 +02:00
2022-02-01 17:27:01 +01:00
2022-10-29 10:12:57 +02:00
2022-07-02 16:41:14 +02:00
2022-09-15 11:30:06 +02:00
2022-07-29 17:25:30 +02:00
2022-06-09 10:23:32 +02:00
2022-10-26 12:35:51 +02:00
2022-10-26 12:35:56 +02:00
2022-10-26 12:35:28 +02:00
2022-06-09 10:22:42 +02:00
2021-10-04 22:13:12 +01:00
2022-08-17 14:24:11 +02:00
2022-07-12 16:34:59 +02:00
2021-07-15 10:13:49 -07:00
2021-07-01 11:06:06 -07:00
2021-08-26 22:28:02 +02:00
2021-07-27 11:00:36 +02:00
2022-06-09 10:23:11 +02:00
2022-06-09 10:22:55 +02:00
2021-11-12 15:05:50 +01:00
2022-10-26 12:34:28 +02:00
2022-06-14 18:36:10 +02:00
2022-06-09 10:22:41 +02:00
2022-06-14 18:36:22 +02:00
2022-10-29 10:12:57 +02:00
2022-08-17 14:22:47 +02:00
2022-04-13 20:59:10 +02:00
2021-12-29 12:28:59 +01:00
2022-11-03 23:59:10 +09:00
2021-10-04 22:02:17 +01:00
2022-10-26 12:35:32 +02:00
2022-10-15 07:59:01 +02:00
2022-06-09 10:22:50 +02:00
2022-10-05 10:39:37 +02:00
2022-10-26 12:34:36 +02:00
2022-10-29 10:12:53 +02:00
2021-06-29 10:53:48 -07:00
2022-01-20 09:13:13 +01:00
2022-08-25 11:40:43 +02:00
2022-10-29 10:12:58 +02:00
2022-04-08 14:23:01 +02:00
2021-09-21 08:36:48 -07:00
2022-10-26 12:34:21 +02:00
2021-06-29 10:53:48 -07:00
2021-09-03 15:33:47 -07:00
2021-12-14 10:57:12 +01:00
2021-08-16 10:50:32 -06:00
2021-08-06 13:05:28 +02:00
2021-06-29 10:53:48 -07:00
2022-09-20 12:39:43 +02:00
2022-04-08 14:24:08 +02:00
2022-05-15 20:18:52 +02:00
2021-08-19 09:02:55 +09:00
2021-09-27 11:26:21 -07:00
2021-09-22 10:56:34 -07:00
2022-10-26 12:34:27 +02:00
2022-08-31 17:16:34 +02:00
2021-12-14 10:57:22 +01:00
2022-08-17 14:22:50 +02:00
2021-08-18 22:08:24 +02:00
2021-09-05 10:15:05 -07:00
2022-04-08 14:24:17 +02:00
2022-11-03 23:59:12 +09:00
2022-06-09 10:22:26 +02:00
2022-04-08 14:22:54 +02:00
2022-04-08 14:24:18 +02:00
2021-09-02 10:07:29 -07:00
2022-09-28 11:11:56 +02:00
2021-09-03 09:58:10 -07:00
2022-10-26 12:35:49 +02:00
2022-08-17 14:22:59 +02:00
2022-08-17 14:24:19 +02:00
2021-09-03 10:08:28 -07:00
2022-10-26 12:34:58 +02:00
2022-04-08 14:23:54 +02:00
2021-08-23 01:25:40 -04:00
2022-01-20 09:13:14 +01:00
2021-09-07 16:07:47 -04:00
2022-10-26 12:34:27 +02:00
2022-10-12 09:53:26 +02:00
2022-10-26 12:34:58 +02:00
2022-10-26 12:35:53 +02:00
2022-10-26 12:35:56 +02:00
2021-08-29 07:55:55 -06:00
2022-05-25 09:57:26 +02:00
2021-09-12 10:10:21 -07:00
2021-07-25 22:33:03 -07:00
2021-10-18 20:22:03 -10:00
2021-06-29 10:53:48 -07:00
2021-09-07 11:21:48 -07:00
2021-09-12 10:10:21 -07:00
2022-08-17 14:22:57 +02:00
2022-08-17 14:24:19 +02:00
2022-08-31 17:16:37 +02:00
2022-10-26 12:34:58 +02:00
2022-06-06 08:43:37 +02:00
2022-07-02 16:41:17 +02:00
2022-07-02 16:41:14 +02:00
2022-08-03 12:03:41 +02:00
2022-07-21 21:24:14 +02:00
2022-01-29 10:58:25 +01:00
2022-07-12 16:35:08 +02:00
2021-12-14 10:57:15 +01:00
2022-10-26 12:34:17 +02:00
2022-04-27 14:38:57 +02:00
2022-02-23 12:03:05 +01:00
2022-04-27 14:38:50 +02:00
2021-08-10 17:57:22 +02:00
2022-10-26 12:34:36 +02:00
2022-10-05 10:39:44 +02:00