From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC] tty/sysrq: Add alternative SysRq key
Date: Thu, 04 Nov 2021 02:44:02 +0800 [thread overview]
Message-ID: <202111040228.wqQca316-lkp@intel.com> (raw)
In-Reply-To: <20211103155438.11167-1-andrzej.p@collabora.com>
[-- Attachment #1: Type: text/plain, Size: 44923 bytes --]
Hi Andrzej,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on linux/master]
[also build test ERROR on hid/for-next linus/master v5.15 next-20211103]
[cannot apply to tty/tty-testing]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Andrzej-Pietrasiewicz/tty-sysrq-Add-alternative-SysRq-key/20211103-235630
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2f111a6fd5b5297b4e92f53798ca086f7c7d33a4
config: um-x86_64_defconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/ed36496ef4a480d6bc468152578cfb49a500e2dd
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andrzej-Pietrasiewicz/tty-sysrq-Add-alternative-SysRq-key/20211103-235630
git checkout ed36496ef4a480d6bc468152578cfb49a500e2dd
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=um SUBARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/tty/sysrq.c:658:2: error: expected ':', ',', ';', '}' or '__attribute__' before 'bool'
658 | bool active;
| ^~~~
drivers/tty/sysrq.c: In function 'sysrq_parse_reset_sequence':
>> drivers/tty/sysrq.c:682:7: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
682 | state->reset_seq_cnt = 0;
| ^~
>> drivers/tty/sysrq.c:690:23: error: 'struct sysrq_state' has no member named 'reset_keybit'
690 | __set_bit(key, state->reset_keybit);
| ^~
>> drivers/tty/sysrq.c:691:8: error: 'struct sysrq_state' has no member named 'reset_seq_len'
691 | state->reset_seq_len++;
| ^~
drivers/tty/sysrq.c:694:9: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
694 | state->reset_seq_cnt++;
| ^~
>> drivers/tty/sysrq.c:698:7: error: 'struct sysrq_state' has no member named 'reset_canceled'
698 | state->reset_canceled = state->reset_seq_cnt != 0;
| ^~
drivers/tty/sysrq.c:698:31: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
698 | state->reset_canceled = state->reset_seq_cnt != 0;
| ^~
>> drivers/tty/sysrq.c:700:7: error: 'struct sysrq_state' has no member named 'reset_seq_version'
700 | state->reset_seq_version = sysrq_reset_seq_version;
| ^~
In file included from <command-line>:
drivers/tty/sysrq.c: In function 'sysrq_do_reset':
>> include/linux/kernel.h:495:51: error: 'struct sysrq_state' has no member named 'keyreset_timer'
495 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
| ^~
include/linux/compiler_types.h:302:9: note: in definition of macro '__compiletime_assert'
302 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:322:2: note: in expansion of macro '_compiletime_assert'
322 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:495:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
495 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
| ^~~~~~~~~~~~~~~~
include/linux/kernel.h:495:20: note: in expansion of macro '__same_type'
495 | BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
| ^~~~~~~~~~~
include/linux/timer.h:154:2: note: in expansion of macro 'container_of'
154 | container_of(callback_timer, typeof(*var), timer_fieldname)
| ^~~~~~~~~~~~
drivers/tty/sysrq.c:705:30: note: in expansion of macro 'from_timer'
705 | struct sysrq_state *state = from_timer(state, t, keyreset_timer);
| ^~~~~~~~~~
>> include/linux/compiler_types.h:140:35: error: 'struct sysrq_state' has no member named 'keyreset_timer'
140 | #define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
| ^~~~~~~~~~~~~~~~~~
include/linux/stddef.h:17:32: note: in expansion of macro '__compiler_offsetof'
17 | #define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)
| ^~~~~~~~~~~~~~~~~~~
include/linux/kernel.h:498:21: note: in expansion of macro 'offsetof'
498 | ((type *)(__mptr - offsetof(type, member))); })
| ^~~~~~~~
include/linux/timer.h:154:2: note: in expansion of macro 'container_of'
154 | container_of(callback_timer, typeof(*var), timer_fieldname)
| ^~~~~~~~~~~~
drivers/tty/sysrq.c:705:30: note: in expansion of macro 'from_timer'
705 | struct sysrq_state *state = from_timer(state, t, keyreset_timer);
| ^~~~~~~~~~
>> drivers/tty/sysrq.c:707:7: error: 'struct sysrq_state' has no member named 'reset_requested'
707 | state->reset_requested = true;
| ^~
drivers/tty/sysrq.c: In function 'sysrq_handle_reset_request':
drivers/tty/sysrq.c:714:11: error: 'struct sysrq_state' has no member named 'reset_requested'
714 | if (state->reset_requested)
| ^~
>> drivers/tty/sysrq.c:718:19: error: 'struct sysrq_state' has no member named 'keyreset_timer'
718 | mod_timer(&state->keyreset_timer,
| ^~
drivers/tty/sysrq.c:721:24: error: 'struct sysrq_state' has no member named 'keyreset_timer'
721 | sysrq_do_reset(&state->keyreset_timer);
| ^~
drivers/tty/sysrq.c: In function 'sysrq_detect_reset_sequence':
drivers/tty/sysrq.c:727:27: error: 'struct sysrq_state' has no member named 'reset_keybit'
727 | if (!test_bit(code, state->reset_keybit)) {
| ^~
drivers/tty/sysrq.c:734:21: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
734 | if (value && state->reset_seq_cnt) {
| ^~
drivers/tty/sysrq.c:735:9: error: 'struct sysrq_state' has no member named 'reset_canceled'
735 | state->reset_canceled = true;
| ^~
drivers/tty/sysrq.c:736:20: error: 'struct sysrq_state' has no member named 'keyreset_timer'
736 | del_timer(&state->keyreset_timer);
| ^~
drivers/tty/sysrq.c:744:19: error: 'struct sysrq_state' has no member named 'keyreset_timer'
744 | del_timer(&state->keyreset_timer);
| ^~
drivers/tty/sysrq.c:746:14: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
746 | if (--state->reset_seq_cnt == 0)
| ^~
drivers/tty/sysrq.c:747:9: error: 'struct sysrq_state' has no member named 'reset_canceled'
747 | state->reset_canceled = false;
| ^~
drivers/tty/sysrq.c:750:14: error: 'struct sysrq_state' has no member named 'reset_seq_cnt'
750 | if (++state->reset_seq_cnt == state->reset_seq_len &&
| ^~
drivers/tty/sysrq.c:750:38: error: 'struct sysrq_state' has no member named 'reset_seq_len'
750 | if (++state->reset_seq_cnt == state->reset_seq_len &&
| ^~
drivers/tty/sysrq.c:751:13: error: 'struct sysrq_state' has no member named 'reset_canceled'
751 | !state->reset_canceled) {
| ^~
drivers/tty/sysrq.c: In function 'sysrq_reinject_alt_sysrq':
>> drivers/tty/sysrq.c:800:11: error: 'struct sysrq_state' has no member named 'need_reinject'
800 | if (sysrq->need_reinject) {
| ^~
>> drivers/tty/sysrq.c:802:10: error: 'struct sysrq_state' has no member named 'reinjecting'; did you mean 'reinject_work'?
802 | sysrq->reinjecting = true;
| ^~~~~~~~~~~
| reinject_work
>> drivers/tty/sysrq.c:807:43: error: 'struct sysrq_state' has no member named 'sysrq_key'
807 | input_inject_event(handle, EV_KEY, sysrq->sysrq_key, 1);
| ^~
drivers/tty/sysrq.c:810:43: error: 'struct sysrq_state' has no member named 'sysrq_key'
810 | input_inject_event(handle, EV_KEY, sysrq->sysrq_key, 0);
| ^~
drivers/tty/sysrq.c:815:10: error: 'struct sysrq_state' has no member named 'reinjecting'; did you mean 'reinject_work'?
815 | sysrq->reinjecting = false;
| ^~~~~~~~~~~
| reinject_work
drivers/tty/sysrq.c: In function 'sysrq_handle_keypress':
>> drivers/tty/sysrq.c:822:25: error: 'struct sysrq_state' has no member named 'active'
822 | bool was_active = sysrq->active;
| ^~
drivers/tty/sysrq.c:831:13: error: 'struct sysrq_state' has no member named 'active'
831 | if (sysrq->active && code == sysrq->alt_use)
| ^~
drivers/tty/sysrq.c:832:10: error: 'struct sysrq_state' has no member named 'active'
832 | sysrq->active = false;
| ^~
drivers/tty/sysrq.c:838:9: error: 'struct sysrq_state' has no member named 'need_reinject'
838 | sysrq->need_reinject = false;
| ^~
drivers/tty/sysrq.c:853:9: error: 'struct sysrq_state' has no member named 'active'
853 | sysrq->active = true;
| ^~
drivers/tty/sysrq.c:861:9: error: 'struct sysrq_state' has no member named 'need_reinject'
861 | sysrq->need_reinject = true;
| ^~
drivers/tty/sysrq.c:872:12: error: 'struct sysrq_state' has no member named 'active'
872 | if (sysrq->active)
| ^~
drivers/tty/sysrq.c:873:19: error: 'struct sysrq_state' has no member named 'sysrq_key'
873 | clear_bit(sysrq->sysrq_key, sysrq->handle.dev->key);
| ^~
drivers/tty/sysrq.c:879:20: error: 'struct sysrq_state' has no member named 'sysrq_key'
879 | if (code == sysrq->sysrq_key)
| ^~
drivers/tty/sysrq.c:882:12: error: 'struct sysrq_state' has no member named 'active'
882 | if (sysrq->active && value && value != 2) {
| ^~
drivers/tty/sysrq.c:885:9: error: 'struct sysrq_state' has no member named 'need_reinject'
885 | sysrq->need_reinject = false;
| ^~
drivers/tty/sysrq.c:893:18: error: 'struct sysrq_state' has no member named 'active'
893 | suppress = sysrq->active;
| ^~
drivers/tty/sysrq.c:895:12: error: 'struct sysrq_state' has no member named 'active'
895 | if (!sysrq->active) {
| ^~
drivers/tty/sysrq.c:900:12: error: 'struct sysrq_state' has no member named 'reset_seq_version'
900 | if (sysrq->reset_seq_version != sysrq_reset_seq_version)
| ^~
drivers/tty/sysrq.c: In function 'sysrq_filter':
drivers/tty/sysrq.c:940:13: error: 'struct sysrq_state' has no member named 'reinjecting'; did you mean 'reinject_work'?
940 | if (sysrq->reinjecting)
| ^~~~~~~~~~~
| reinject_work
drivers/tty/sysrq.c:954:19: error: 'struct sysrq_state' has no member named 'active'
954 | suppress = sysrq->active;
| ^~
In file included from include/linux/workqueue.h:9,
from include/linux/rhashtable-types.h:15,
from include/linux/ipc.h:7,
from include/uapi/linux/sem.h:5,
from include/linux/sem.h:5,
from include/linux/sched.h:15,
from include/linux/sched/signal.h:7,
from drivers/tty/sysrq.c:18:
drivers/tty/sysrq.c: In function 'sysrq_connect':
drivers/tty/sysrq.c:978:20: error: 'struct sysrq_state' has no member named 'keyreset_timer'
978 | timer_setup(&sysrq->keyreset_timer, sysrq_do_reset, 0);
| ^~
include/linux/timer.h:126:18: note: in definition of macro '__init_timer'
126 | init_timer_key((_timer), (_fn), (_flags), NULL, NULL)
| ^~~~~~
drivers/tty/sysrq.c:978:2: note: in expansion of macro 'timer_setup'
978 | timer_setup(&sysrq->keyreset_timer, sysrq_do_reset, 0);
| ^~~~~~~~~~~
drivers/tty/sysrq.c:981:8: error: 'struct sysrq_state' has no member named 'sysrq_key'
981 | sysrq->sysrq_key = KEY_SYSRQ;
| ^~
drivers/tty/sysrq.c:984:8: error: 'struct sysrq_state' has no member named 'sysrq_key'
984 | sysrq->sysrq_key = alternative_sysrq_key;
| ^~
In file included from include/linux/kernel.h:19,
from include/linux/list.h:9,
from include/linux/rculist.h:10,
from include/linux/sched/signal.h:5,
from drivers/tty/sysrq.c:18:
drivers/tty/sysrq.c:985:70: error: 'struct sysrq_state' has no member named 'sysrq_key'
985 | pr_info("%s: Using alternative sysrq key: [%x]\n", dev->name, sysrq->sysrq_key);
| ^~
include/linux/printk.h:418:19: note: in definition of macro 'printk_index_wrap'
418 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/printk.h:519:2: note: in expansion of macro 'printk'
519 | printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~
drivers/tty/sysrq.c:985:3: note: in expansion of macro 'pr_info'
985 | pr_info("%s: Using alternative sysrq key: [%x]\n", dev->name, sysrq->sysrq_key);
| ^~~~~~~
In file included from include/linux/workqueue.h:9,
from include/linux/rhashtable-types.h:15,
from include/linux/ipc.h:7,
from include/uapi/linux/sem.h:5,
from include/linux/sem.h:5,
from include/linux/sched.h:15,
from include/linux/sched/signal.h:7,
from drivers/tty/sysrq.c:18:
drivers/tty/sysrq.c: In function 'sysrq_disconnect':
drivers/tty/sysrq.c:1016:23: error: 'struct sysrq_state' has no member named 'keyreset_timer'
vim +658 drivers/tty/sysrq.c
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 638
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 639 /* Simple translation table for the SysRq keys */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 640 static const unsigned char sysrq_xlate[KEY_CNT] =
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 641 "\000\0331234567890-=\177\t" /* 0x00 - 0x0f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 642 "qwertyuiop[]\r\000as" /* 0x10 - 0x1f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 643 "dfghjkl;'`\000\\zxcv" /* 0x20 - 0x2f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 644 "bnm,./\000*\000 \000\201\202\203\204\205" /* 0x30 - 0x3f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 645 "\206\207\210\211\212\000\000789-456+1" /* 0x40 - 0x4f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 646 "230\177\000\000\213\214\000\000\000\000\000\000\000\000\000\000" /* 0x50 - 0x5f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 647 "\r\000/"; /* 0x60 - 0x6f */
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 648
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 649 struct sysrq_state {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 650 struct input_handle handle;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 651 struct work_struct reinject_work;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 652 unsigned long key_down[BITS_TO_LONGS(KEY_CNT)];
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 653 unsigned int alt;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 654 unsigned int alt_use;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 655 unsigned int shift;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 656 unsigned int shift_use;
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 657 unsigned short sys
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 @658 bool active;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 659 bool need_reinject;
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 660 bool reinjecting;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 661
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 662 /* reset sequence handling */
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 663 bool reset_canceled;
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 664 bool reset_requested;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 665 unsigned long reset_keybit[BITS_TO_LONGS(KEY_CNT)];
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 666 int reset_seq_len;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 667 int reset_seq_cnt;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 668 int reset_seq_version;
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 669 struct timer_list keyreset_timer;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 670 };
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 671
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 672 #define SYSRQ_KEY_RESET_MAX 20 /* Should be plenty */
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 673 static unsigned short sysrq_reset_seq[SYSRQ_KEY_RESET_MAX];
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 674 static unsigned int sysrq_reset_seq_len;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 675 static unsigned int sysrq_reset_seq_version = 1;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 676
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 677 static void sysrq_parse_reset_sequence(struct sysrq_state *state)
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 678 {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 679 int i;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 680 unsigned short key;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 681
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 @682 state->reset_seq_cnt = 0;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 683
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 684 for (i = 0; i < sysrq_reset_seq_len; i++) {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 685 key = sysrq_reset_seq[i];
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 686
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 687 if (key == KEY_RESERVED || key > KEY_MAX)
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 688 break;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 689
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 @690 __set_bit(key, state->reset_keybit);
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 @691 state->reset_seq_len++;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 692
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 693 if (test_bit(key, state->key_down))
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 694 state->reset_seq_cnt++;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 695 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 696
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 697 /* Disable reset until old keys are not released */
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 @698 state->reset_canceled = state->reset_seq_cnt != 0;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 699
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 @700 state->reset_seq_version = sysrq_reset_seq_version;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 701 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 702
8c318fa93dfcd1 drivers/tty/sysrq.c Kees Cook 2017-10-16 703 static void sysrq_do_reset(struct timer_list *t)
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 704 {
8c318fa93dfcd1 drivers/tty/sysrq.c Kees Cook 2017-10-16 705 struct sysrq_state *state = from_timer(state, t, keyreset_timer);
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 706
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 @707 state->reset_requested = true;
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 708
8fefbc6d4b2660 drivers/tty/sysrq.c Mark Tomlinson 2018-11-27 709 orderly_reboot();
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 710 }
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 711
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 712 static void sysrq_handle_reset_request(struct sysrq_state *state)
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 713 {
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 714 if (state->reset_requested)
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 715 __handle_sysrq(sysrq_xlate[KEY_B], false);
3d289517dfd48f drivers/tty/sysrq.c Mathieu J. Poirier 2013-06-05 716
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 717 if (sysrq_reset_downtime_ms)
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 @718 mod_timer(&state->keyreset_timer,
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 719 jiffies + msecs_to_jiffies(sysrq_reset_downtime_ms));
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 720 else
8c318fa93dfcd1 drivers/tty/sysrq.c Kees Cook 2017-10-16 721 sysrq_do_reset(&state->keyreset_timer);
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 722 }
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 723
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 724 static void sysrq_detect_reset_sequence(struct sysrq_state *state,
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 725 unsigned int code, int value)
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 726 {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 727 if (!test_bit(code, state->reset_keybit)) {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 728 /*
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 729 * Pressing any key _not_ in reset sequence cancels
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 730 * the reset sequence. Also cancelling the timer in
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 731 * case additional keys were pressed after a reset
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 732 * has been requested.
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 733 */
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 734 if (value && state->reset_seq_cnt) {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 735 state->reset_canceled = true;
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 736 del_timer(&state->keyreset_timer);
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 737 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 738 } else if (value == 0) {
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 739 /*
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 740 * Key release - all keys in the reset sequence need
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 741 * to be pressed and held for the reset timeout
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 742 * to hold.
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 743 */
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 744 del_timer(&state->keyreset_timer);
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 745
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 746 if (--state->reset_seq_cnt == 0)
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 747 state->reset_canceled = false;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 748 } else if (value == 1) {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 749 /* key press, not autorepeat */
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 750 if (++state->reset_seq_cnt == state->reset_seq_len &&
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 751 !state->reset_canceled) {
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 752 sysrq_handle_reset_request(state);
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 753 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 754 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 755 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 756
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 757 #ifdef CONFIG_OF
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 758 static void sysrq_of_get_keyreset_config(void)
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 759 {
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 760 u32 key;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 761 struct device_node *np;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 762 struct property *prop;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 763 const __be32 *p;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 764
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 765 np = of_find_node_by_path("/chosen/linux,sysrq-reset-seq");
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 766 if (!np) {
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 767 pr_debug("No sysrq node found");
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 768 return;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 769 }
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 770
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 771 /* Reset in case a __weak definition was present */
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 772 sysrq_reset_seq_len = 0;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 773
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 774 of_property_for_each_u32(np, "keyset", prop, p, key) {
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 775 if (key == KEY_RESERVED || key > KEY_MAX ||
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 776 sysrq_reset_seq_len == SYSRQ_KEY_RESET_MAX)
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 777 break;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 778
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 779 sysrq_reset_seq[sysrq_reset_seq_len++] = (unsigned short)key;
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 780 }
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 781
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 782 /* Get reset timeout if any. */
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 783 of_property_read_u32(np, "timeout-ms", &sysrq_reset_downtime_ms);
279070b96a5a08 drivers/tty/sysrq.c Yangtao Li 2018-11-21 784
279070b96a5a08 drivers/tty/sysrq.c Yangtao Li 2018-11-21 785 of_node_put(np);
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 786 }
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 787 #else
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 788 static void sysrq_of_get_keyreset_config(void)
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 789 {
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 790 }
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 791 #endif
4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 792
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 793 static void sysrq_reinject_alt_sysrq(struct work_struct *work)
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 794 {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 795 struct sysrq_state *sysrq =
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 796 container_of(work, struct sysrq_state, reinject_work);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 797 struct input_handle *handle = &sysrq->handle;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 798 unsigned int alt_code = sysrq->alt_use;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 799
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 @800 if (sysrq->need_reinject) {
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 801 /* we do not want the assignment to be reordered */
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 @802 sysrq->reinjecting = true;
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 803 mb();
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 804
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 805 /* Simulate press and release of Alt + SysRq */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 806 input_inject_event(handle, EV_KEY, alt_code, 1);
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 @807 input_inject_event(handle, EV_KEY, sysrq->sysrq_key, 1);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 808 input_inject_event(handle, EV_SYN, SYN_REPORT, 1);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 809
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 810 input_inject_event(handle, EV_KEY, sysrq->sysrq_key, 0);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 811 input_inject_event(handle, EV_KEY, alt_code, 0);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 812 input_inject_event(handle, EV_SYN, SYN_REPORT, 1);
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 813
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 814 mb();
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 815 sysrq->reinjecting = false;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 816 }
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 817 }
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 818
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 819 static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 820 unsigned int code, int value)
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 821 {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 @822 bool was_active = sysrq->active;
1966cb225c6f90 drivers/char/sysrq.c Dmitry Torokhov 2010-09-29 823 bool suppress;
1966cb225c6f90 drivers/char/sysrq.c Dmitry Torokhov 2010-09-29 824
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 825 switch (code) {
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 826
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 827 case KEY_LEFTALT:
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 828 case KEY_RIGHTALT:
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 829 if (!value) {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 830 /* One of ALTs is being released */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 831 if (sysrq->active && code == sysrq->alt_use)
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 832 sysrq->active = false;
f5dec51172b81d drivers/char/sysrq.c Dmitry Torokhov 2010-06-09 833
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 834 sysrq->alt = KEY_RESERVED;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 835
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 836 } else if (value != 2) {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 837 sysrq->alt = code;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 838 sysrq->need_reinject = false;
f5dec51172b81d drivers/char/sysrq.c Dmitry Torokhov 2010-06-09 839 }
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 840 break;
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 841
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 842 case KEY_LEFTSHIFT:
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 843 case KEY_RIGHTSHIFT:
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 844 if (!value)
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 845 sysrq->shift = KEY_RESERVED;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 846 else if (value != 2)
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 847 sysrq->shift = code;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 848 break;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 849
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 850 key_sysrq:
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 851 case KEY_SYSRQ:
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 852 if (value == 1 && sysrq->alt != KEY_RESERVED) {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 853 sysrq->active = true;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 854 sysrq->alt_use = sysrq->alt;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 855 /* either RESERVED (for released) or actual code */
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 856 sysrq->shift_use = sysrq->shift;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 857 /*
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 858 * If nothing else will be pressed we'll need
7ab7b5adfb9239 drivers/char/sysrq.c Dmitry Torokhov 2011-02-02 859 * to re-inject Alt-SysRq keysroke.
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 860 */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 861 sysrq->need_reinject = true;
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 862 }
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 863
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 864 /*
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 865 * Pretend that sysrq was never pressed at all. This
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 866 * is needed to properly handle KGDB which will try
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 867 * to release all keys after exiting debugger. If we
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 868 * do not clear key bit it KGDB will end up sending
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 869 * release events for Alt and SysRq, potentially
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 870 * triggering print screen function.
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 871 */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 872 if (sysrq->active)
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 873 clear_bit(sysrq->sysrq_key, sysrq->handle.dev->key);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 874
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 875 break;
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 876
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 877 default:
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 878 /* handle non-default sysrq key */
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 879 if (code == sysrq->sysrq_key)
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 880 goto key_sysrq;
ed36496ef4a480 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2021-11-03 881
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 882 if (sysrq->active && value && value != 2) {
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 883 unsigned char c = sysrq_xlate[code];
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 884
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 885 sysrq->need_reinject = false;
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 886 if (sysrq->shift_use != KEY_RESERVED)
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 887 c = toupper(c);
a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 888 __handle_sysrq(c, true);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 889 }
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 890 break;
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 891 }
97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 892
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 893 suppress = sysrq->active;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 894
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 895 if (!sysrq->active) {
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 896
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 897 /*
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 898 * See if reset sequence has changed since the last time.
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 899 */
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 900 if (sysrq->reset_seq_version != sysrq_reset_seq_version)
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 901 sysrq_parse_reset_sequence(sysrq);
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 902
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 903 /*
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 904 * If we are not suppressing key presses keep track of
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 905 * keyboard state so we can release keys that have been
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 906 * pressed before entering SysRq mode.
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 907 */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 908 if (value)
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 909 set_bit(code, sysrq->key_down);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 910 else
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 911 clear_bit(code, sysrq->key_down);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 912
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 913 if (was_active)
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 914 schedule_work(&sysrq->reinject_work);
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 915
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 916 /* Check for reset sequence */
3903078677a8dc drivers/tty/sysrq.c Mathieu J. Poirier 2013-04-01 917 sysrq_detect_reset_sequence(sysrq, code, value);
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 918
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 919 } else if (value == 0 && test_and_clear_bit(code, sysrq->key_down)) {
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 920 /*
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 921 * Pass on release events for keys that was pressed before
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 922 * entering SysRq mode.
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 923 */
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 924 suppress = false;
fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 925 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 926
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 927 return suppress;
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 928 }
154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 929
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 9705 bytes --]
next prev parent reply other threads:[~2021-11-03 18:44 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-03 15:54 [RFC] tty/sysrq: Add alternative SysRq key Andrzej Pietrasiewicz
2021-11-03 16:19 ` Randy Dunlap
2021-11-04 8:44 ` Andrzej Pietrasiewicz
2021-11-04 9:34 ` Andrzej Pietrasiewicz
2021-11-04 9:52 ` Greg Kroah-Hartman
2021-11-03 18:44 ` kernel test robot [this message]
2021-11-04 12:01 ` Pavel Machek
2021-11-04 12:21 ` Andrzej Pietrasiewicz
2021-11-04 13:07 ` Maciej W. Rozycki
2021-11-04 13:13 ` Maciej W. Rozycki
2021-11-04 14:17 ` Andrzej Pietrasiewicz
2021-11-05 13:01 ` Andrzej Pietrasiewicz
2021-11-05 13:27 ` Greg Kroah-Hartman
2021-11-05 14:06 ` Andrzej Pietrasiewicz
2021-11-15 14:48 ` Andrzej Pietrasiewicz
2021-11-15 15:09 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202111040228.wqQca316-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.