diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index aa2e394745c27f4157403e6d0274c1aa2760de74..72a8c70094aba3cb3e09def04ad844da5a52377b 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -1091,6 +1091,9 @@ int unregister_sysrq_key(int key, struct sysrq_key_op *op_p) EXPORT_SYMBOL(unregister_sysrq_key); #ifdef CONFIG_PROC_FS + +static DEFINE_MUTEX(sysrq_mutex); + /* * writing 'C' to /proc/sysrq-trigger is like sysrq-C */ @@ -1102,7 +1105,10 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, if (get_user(c, buf)) return -EFAULT; + + mutex_lock(&sysrq_mutex); __handle_sysrq(c, false); + mutex_unlock(&sysrq_mutex); } return count;