Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e43aef5 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Linus Torvalds
Browse files

coredump: factor out put_cred() calls



Given that do_coredump() calls put_cred() on exit path, it is a bit ugly
to do put_cred() + "goto fail" twice, just add the new "fail_creds" label.

Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Roland McGrath <roland@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d5bf4c4f
Loading
Loading
Loading
Loading
+6 −10
Original line number Diff line number Diff line
@@ -1862,10 +1862,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
		goto fail;

	cred = prepare_creds();
	if (!cred) {
		retval = -ENOMEM;
	if (!cred)
		goto fail;
	}

	down_write(&mm->mmap_sem);
	/*
@@ -1873,8 +1871,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
	 */
	if (mm->core_state || !__get_dumpable(cprm.mm_flags)) {
		up_write(&mm->mmap_sem);
		put_cred(cred);
		goto fail;
		goto fail_creds;
	}

	/*
@@ -1889,10 +1886,8 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
	}

	retval = coredump_wait(exit_code, &core_state);
	if (retval < 0) {
		put_cred(cred);
		goto fail;
	}
	if (retval < 0)
		goto fail_creds;

	old_cred = override_creds(cred);

@@ -2009,9 +2004,10 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
	if (ispipe)
		atomic_dec(&core_dump_count);
fail_unlock:
	coredump_finish(mm);
	revert_creds(old_cred);
fail_creds:
	put_cred(cred);
	coredump_finish(mm);
fail:
	return;
}