Li Zetao
594d2a14f2
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:
[<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
2022-10-25 15:11:21 -07:00
..
2022-07-02 18:52:21 +09:00
2022-05-09 16:21:44 -04:00
2022-08-19 13:03:10 +02:00
2022-10-06 17:13:18 -07:00
2022-07-17 17:31:42 -07:00
2022-08-02 12:34:03 -04:00
2022-05-09 16:21:44 -04:00
2022-10-10 19:45:17 -07:00
2022-09-24 07:00:00 +02:00
2022-10-16 15:27:07 -07:00
2022-10-15 10:05:53 -05:00
2022-08-02 12:34:03 -04:00
2022-08-02 12:34:02 -04:00
2022-10-03 20:33:41 -07:00
2022-09-24 15:00:48 +02:00
2022-10-04 13:38:03 -07:00
2022-10-06 17:31:02 -07:00
2022-06-24 20:40:19 +02:00
2022-05-09 16:21:45 -04:00
2022-10-07 09:19:14 -07:00
2022-10-11 17:42:58 -06:00
2022-08-17 17:25:04 -04:00
2022-10-11 17:42:58 -06:00
2022-10-16 15:27:07 -07:00
2022-10-16 15:27:07 -07:00
2022-10-11 17:42:58 -06:00
2022-08-02 12:34:03 -04:00
2022-08-09 14:13:59 +01:00
2022-10-10 19:45:17 -07:00
2022-10-10 20:13:22 -07:00
2022-09-11 21:55:09 -07:00
2022-09-11 21:55:05 -07:00
2022-09-19 22:46:25 +02:00
2022-05-09 16:21:45 -04:00
2022-10-10 19:45:17 -07:00
2022-10-02 11:42:19 -07:00
2022-10-12 11:00:22 -07:00
2022-10-10 17:53:04 -07:00
2022-09-21 10:38:07 +02:00
2022-08-03 10:35:43 -07:00
2022-09-24 13:52:27 +02:00
2022-10-07 08:19:26 -07:00
2022-09-26 14:02:42 -04:00
2022-09-24 07:00:00 +02:00
2022-07-14 10:10:12 +02:00
2022-10-13 09:58:42 -07:00
2022-10-11 17:42:58 -06:00
2022-10-12 11:16:58 -07:00
2022-10-07 08:28:50 -07:00
2022-10-12 11:00:22 -07:00
2022-10-11 17:42:58 -06:00
2022-10-12 11:00:22 -07:00
2022-05-09 16:21:44 -04:00
2022-10-13 09:56:14 -07:00
2022-10-10 19:45:17 -07:00
2022-10-12 11:00:22 -07:00
2022-09-30 08:16:06 -07:00
2022-05-09 16:21:44 -04:00
2022-09-11 21:55:07 -07:00
2022-09-29 15:37:30 +02:00
2022-10-10 19:45:17 -07:00
2022-10-12 11:00:22 -07:00
2022-05-09 16:21:46 -04:00
2022-10-05 01:55:27 -05:00
2022-08-28 14:02:45 -07:00
2022-04-05 15:39:19 +02:00
2022-05-27 11:22:03 -07:00
2022-09-08 17:10:54 -04:00
2022-10-16 15:27:07 -07:00
2022-10-10 19:45:17 -07:00
2022-09-11 20:26:07 -07:00
2022-05-09 16:21:46 -04:00
2022-10-06 17:36:48 -07:00
2022-10-11 17:42:58 -06:00
2022-08-11 13:11:49 -07:00
2022-09-11 21:55:08 -07:00
2022-08-20 11:34:04 -04:00
2022-08-08 10:39:29 -07:00
2022-09-24 07:00:00 +02:00
2022-10-25 15:11:21 -07:00
2022-04-22 10:57:18 -07:00
2022-10-12 11:00:22 -07:00
2022-10-10 17:53:04 -07:00
2022-08-20 11:34:33 -04:00
2022-09-24 18:14:12 -07:00
2022-10-10 19:45:17 -07:00
2022-09-20 08:24:38 -06:00
2022-09-21 10:30:42 -06:00
2022-09-11 21:55:07 -07:00
2022-10-25 15:05:58 -07:00
2022-06-10 16:10:23 -04:00
2022-09-01 17:36:39 -04:00
2022-08-16 10:59:54 -04:00
2022-06-29 13:07:16 +02:00
2022-09-29 23:02:00 -04:00
2022-05-19 23:25:10 -04:00
2022-10-06 16:49:00 -07:00
2022-10-06 17:31:02 -07:00
2022-04-01 19:35:56 -07:00
2022-09-11 20:26:10 -07:00
2022-10-10 14:21:11 -07:00
2022-06-16 19:58:21 -07:00
2022-10-03 14:21:43 -07:00
2022-08-17 15:08:58 -04:00
2022-09-27 07:11:02 -07:00
2022-09-30 23:46:52 -04:00
2022-07-05 16:18:21 -04:00
2022-08-03 10:35:43 -07:00
2022-10-10 19:45:17 -07:00
2022-08-17 11:27:11 +02:00
2022-08-20 11:34:04 -04:00
2022-10-06 17:13:18 -07:00
2022-08-20 11:34:04 -04:00
2022-10-10 17:53:04 -07:00
2022-06-28 13:58:05 -04:00
2022-09-28 14:28:40 -04:00
2022-08-17 17:25:04 -04:00
2022-08-05 16:32:45 -07:00
2022-05-22 21:03:01 +01:00
2022-08-08 22:37:23 -04:00
2022-09-11 19:47:12 -05:00
2022-09-21 20:33:06 -07:00
2022-04-26 13:36:25 -07:00
2022-10-10 17:53:04 -07:00
2022-09-21 12:01:29 +02:00