]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
signal/s390: Use force_sigsegv in default_trap_handler
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 20 Oct 2021 17:43:57 +0000 (12:43 -0500)
committerAndrea Righi <andrea.righi@canonical.com>
Tue, 4 Jan 2022 08:48:54 +0000 (09:48 +0100)
commitdcfe5139cc7cb3ba919ea8addc8b365e9d95748f
treeb8c4ec79c1fe5413df564d14cdc60baa803100fb
parent924888151bf801e936d4d0369ee6e0663c3c01fc
signal/s390: Use force_sigsegv in default_trap_handler

BugLink: https://bugs.launchpad.net/bugs/1952579
commit 9bc508cf0791c8e5a37696de1a046d746fcbd9d8 upstream.

Reading the history it is unclear why default_trap_handler calls
do_exit.  It is not even menthioned in the commit where the change
happened.  My best guess is that because it is unknown why the
exception happened it was desired to guarantee the process never
returned to userspace.

Using do_exit(SIGSEGV) has the problem that it will only terminate one
thread of a process, leaving the process in an undefined state.

Use force_sigsegv(SIGSEGV) instead which effectively has the same
behavior except that is uses the ordinary signal mechanism and
terminates all threads of a process and is generally well defined.

Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: linux-s390@vger.kernel.org
Fixes: ca2ab03237ec ("[PATCH] s390: core changes")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Link: https://lkml.kernel.org/r/20211020174406.17889-11-ebiederm@xmission.com
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Thomas Backlund <tmb@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
arch/s390/kernel/traps.c