Skip to content

Commit cfd6c12

Browse files
committed
coredump: add coredump_cleanup()
Link: https://lore.kernel.org/20250612-work-coredump-massage-v1-21-315c0c34ba94@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 7a568fc commit cfd6c12

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

fs/coredump.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,18 @@ static bool coredump_write(struct core_name *cn,
10671067
return true;
10681068
}
10691069

1070+
static void coredump_cleanup(struct core_name *cn, struct coredump_params *cprm)
1071+
{
1072+
if (cprm->file)
1073+
filp_close(cprm->file, NULL);
1074+
if (cn->core_pipe_limit) {
1075+
VFS_WARN_ON_ONCE(cn->core_type != COREDUMP_PIPE);
1076+
atomic_dec(&core_pipe_count);
1077+
}
1078+
kfree(cn->corename);
1079+
coredump_finish(cn->core_dumped);
1080+
}
1081+
10701082
void vfs_coredump(const kernel_siginfo_t *siginfo)
10711083
{
10721084
struct core_state core_state;
@@ -1119,7 +1131,7 @@ void vfs_coredump(const kernel_siginfo_t *siginfo)
11191131

11201132
if (!coredump_parse(&cn, &cprm, &argv, &argc)) {
11211133
coredump_report_failure("format_corename failed, aborting core");
1122-
goto fail_unlock;
1134+
goto close_fail;
11231135
}
11241136

11251137
switch (cn.core_type) {
@@ -1182,15 +1194,7 @@ void vfs_coredump(const kernel_siginfo_t *siginfo)
11821194
}
11831195

11841196
close_fail:
1185-
if (cprm.file)
1186-
filp_close(cprm.file, NULL);
1187-
if (cn.core_pipe_limit) {
1188-
VFS_WARN_ON_ONCE(cn.core_type != COREDUMP_PIPE);
1189-
atomic_dec(&core_pipe_count);
1190-
}
1191-
fail_unlock:
1192-
kfree(cn.corename);
1193-
coredump_finish(cn.core_dumped);
1197+
coredump_cleanup(&cn, &cprm);
11941198
revert_creds(old_cred);
11951199
return;
11961200
}

0 commit comments

Comments
 (0)