UPSTREAM: sysrq: Use panic() to force a crash
(Upstream commit 8341f2f222d729688014ce8306727fdb9798d37e.)
sysrq_handle_crash() currently forces a crash by dereferencing a
NULL pointer, which is undefined behavior in C. Just call panic()
instead, which is simpler and doesn't depend on compiler specific
handling of the undefined behavior.
Remove the comment on why the RCU lock needs to be released, it isn't
accurate anymore since the crash now isn't handled by the page fault
handler (for reference: the comment was added by commit 984cf355ae
("sysrq: Fix warning in sysrq generated crash.")). Releasing the lock
is still good practice though.
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Bug: 154769329
Change-Id: I04d57e4d84f59b04454fb77f4f62e9d9d6eee10d
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
This commit is contained in:
committed by
Alistair Delva
parent
cf675d71fe
commit
a487e4d535
@@ -134,17 +134,10 @@ static struct sysrq_key_op sysrq_unraw_op = {
|
|||||||
|
|
||||||
static void sysrq_handle_crash(int key)
|
static void sysrq_handle_crash(int key)
|
||||||
{
|
{
|
||||||
char *killer = NULL;
|
/* release the RCU read lock before crashing */
|
||||||
|
|
||||||
/* we need to release the RCU read lock here,
|
|
||||||
* otherwise we get an annoying
|
|
||||||
* 'BUG: sleeping function called from invalid context'
|
|
||||||
* complaint from the kernel before the panic.
|
|
||||||
*/
|
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
panic_on_oops = 1; /* force panic */
|
|
||||||
wmb();
|
panic("sysrq triggered crash\n");
|
||||||
*killer = 1;
|
|
||||||
}
|
}
|
||||||
static struct sysrq_key_op sysrq_crash_op = {
|
static struct sysrq_key_op sysrq_crash_op = {
|
||||||
.handler = sysrq_handle_crash,
|
.handler = sysrq_handle_crash,
|
||||||
|
|||||||
Reference in New Issue
Block a user