From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2426021174644024133==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [RFC] tty/sysrq: Add alternative SysRq key Date: Thu, 04 Nov 2021 02:44:02 +0800 Message-ID: <202111040228.wqQca316-lkp@intel.com> In-Reply-To: <20211103155438.11167-1-andrzej.p@collabora.com> List-Id: --===============2426021174644024133== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=3D1 build): # https://github.com/0day-ci/linux/commit/ed36496ef4a480d6bc4681525= 78cfb49a500e2dd git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Andrzej-Pietrasiewicz/tty-sysrq-Ad= d-alternative-SysRq-key/20211103-235630 git checkout ed36496ef4a480d6bc468152578cfb49a500e2dd # save the attached .config to linux build tree mkdir build_dir make W=3D1 O=3Dbuild_dir ARCH=3Dum SUBARCH=3Dx86_64 SHELL=3D/bin/ba= sh If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> drivers/tty/sysrq.c:658:2: error: expected ':', ',', ';', '}' or '__attr= ibute__' 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 nam= ed 'reset_seq_cnt' 682 | state->reset_seq_cnt =3D 0; | ^~ >> drivers/tty/sysrq.c:690:23: error: 'struct sysrq_state' has no member na= med 'reset_keybit' 690 | __set_bit(key, state->reset_keybit); | ^~ >> drivers/tty/sysrq.c:691:8: error: 'struct sysrq_state' has no member nam= ed 'reset_seq_len' 691 | state->reset_seq_len++; | ^~ drivers/tty/sysrq.c:694:9: error: 'struct sysrq_state' has no member nam= ed 'reset_seq_cnt' 694 | state->reset_seq_cnt++; | ^~ >> drivers/tty/sysrq.c:698:7: error: 'struct sysrq_state' has no member nam= ed 'reset_canceled' 698 | state->reset_canceled =3D state->reset_seq_cnt !=3D 0; | ^~ drivers/tty/sysrq.c:698:31: error: 'struct sysrq_state' has no member na= med 'reset_seq_cnt' 698 | state->reset_canceled =3D state->reset_seq_cnt !=3D 0; | ^~ >> drivers/tty/sysrq.c:700:7: error: 'struct sysrq_state' has no member nam= ed 'reset_seq_version' 700 | state->reset_seq_version =3D sysrq_reset_seq_version; | ^~ In file included from : 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 '__co= mpiletime_assert' 302 | if (!(condition)) \ | ^~~~~~~~~ include/linux/compiler_types.h:322:2: note: in expansion of macro '_comp= iletime_assert' 322 | _compiletime_assert(condition, msg, __compiletime_assert_, __CO= UNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletim= e_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 =3D from_timer(state, t, keyreset_tim= er); | ^~~~~~~~~~ >> include/linux/compiler_types.h:140:35: error: 'struct sysrq_state' has n= o 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_of= fsetof' 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 =3D from_timer(state, t, keyreset_tim= er); | ^~~~~~~~~~ >> drivers/tty/sysrq.c:707:7: error: 'struct sysrq_state' has no member nam= ed 'reset_requested' 707 | state->reset_requested =3D true; | ^~ drivers/tty/sysrq.c: In function 'sysrq_handle_reset_request': drivers/tty/sysrq.c:714:11: error: 'struct sysrq_state' has no member na= med 'reset_requested' 714 | if (state->reset_requested) | ^~ >> drivers/tty/sysrq.c:718:19: error: 'struct sysrq_state' has no member na= med 'keyreset_timer' 718 | mod_timer(&state->keyreset_timer, | ^~ drivers/tty/sysrq.c:721:24: error: 'struct sysrq_state' has no member na= med '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 na= med 'reset_keybit' 727 | if (!test_bit(code, state->reset_keybit)) { | ^~ drivers/tty/sysrq.c:734:21: error: 'struct sysrq_state' has no member na= med 'reset_seq_cnt' 734 | if (value && state->reset_seq_cnt) { | ^~ drivers/tty/sysrq.c:735:9: error: 'struct sysrq_state' has no member nam= ed 'reset_canceled' 735 | state->reset_canceled =3D true; | ^~ drivers/tty/sysrq.c:736:20: error: 'struct sysrq_state' has no member na= med 'keyreset_timer' 736 | del_timer(&state->keyreset_timer); | ^~ drivers/tty/sysrq.c:744:19: error: 'struct sysrq_state' has no member na= med 'keyreset_timer' 744 | del_timer(&state->keyreset_timer); | ^~ drivers/tty/sysrq.c:746:14: error: 'struct sysrq_state' has no member na= med 'reset_seq_cnt' 746 | if (--state->reset_seq_cnt =3D=3D 0) | ^~ drivers/tty/sysrq.c:747:9: error: 'struct sysrq_state' has no member nam= ed 'reset_canceled' 747 | state->reset_canceled =3D false; | ^~ drivers/tty/sysrq.c:750:14: error: 'struct sysrq_state' has no member na= med 'reset_seq_cnt' 750 | if (++state->reset_seq_cnt =3D=3D state->reset_seq_len && | ^~ drivers/tty/sysrq.c:750:38: error: 'struct sysrq_state' has no member na= med 'reset_seq_len' 750 | if (++state->reset_seq_cnt =3D=3D state->reset_seq_len && | ^~ drivers/tty/sysrq.c:751:13: error: 'struct sysrq_state' has no member na= med '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 na= med 'need_reinject' 800 | if (sysrq->need_reinject) { | ^~ >> drivers/tty/sysrq.c:802:10: error: 'struct sysrq_state' has no member na= med 'reinjecting'; did you mean 'reinject_work'? 802 | sysrq->reinjecting =3D true; | ^~~~~~~~~~~ | reinject_work >> drivers/tty/sysrq.c:807:43: error: 'struct sysrq_state' has no member na= med '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 na= med '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 na= med 'reinjecting'; did you mean 'reinject_work'? 815 | sysrq->reinjecting =3D 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 na= med 'active' 822 | bool was_active =3D sysrq->active; | ^~ drivers/tty/sysrq.c:831:13: error: 'struct sysrq_state' has no member na= med 'active' 831 | if (sysrq->active && code =3D=3D sysrq->alt_use) | ^~ drivers/tty/sysrq.c:832:10: error: 'struct sysrq_state' has no member na= med 'active' 832 | sysrq->active =3D false; | ^~ drivers/tty/sysrq.c:838:9: error: 'struct sysrq_state' has no member nam= ed 'need_reinject' 838 | sysrq->need_reinject =3D false; | ^~ drivers/tty/sysrq.c:853:9: error: 'struct sysrq_state' has no member nam= ed 'active' 853 | sysrq->active =3D true; | ^~ drivers/tty/sysrq.c:861:9: error: 'struct sysrq_state' has no member nam= ed 'need_reinject' 861 | sysrq->need_reinject =3D true; | ^~ drivers/tty/sysrq.c:872:12: error: 'struct sysrq_state' has no member na= med 'active' 872 | if (sysrq->active) | ^~ drivers/tty/sysrq.c:873:19: error: 'struct sysrq_state' has no member na= med '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 na= med 'sysrq_key' 879 | if (code =3D=3D sysrq->sysrq_key) | ^~ drivers/tty/sysrq.c:882:12: error: 'struct sysrq_state' has no member na= med 'active' 882 | if (sysrq->active && value && value !=3D 2) { | ^~ drivers/tty/sysrq.c:885:9: error: 'struct sysrq_state' has no member nam= ed 'need_reinject' 885 | sysrq->need_reinject =3D false; | ^~ drivers/tty/sysrq.c:893:18: error: 'struct sysrq_state' has no member na= med 'active' 893 | suppress =3D sysrq->active; | ^~ drivers/tty/sysrq.c:895:12: error: 'struct sysrq_state' has no member na= med 'active' 895 | if (!sysrq->active) { | ^~ drivers/tty/sysrq.c:900:12: error: 'struct sysrq_state' has no member na= med 'reset_seq_version' 900 | if (sysrq->reset_seq_version !=3D 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 na= med '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 na= med 'active' 954 | suppress =3D 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 na= med '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 nam= ed 'sysrq_key' 981 | sysrq->sysrq_key =3D KEY_SYSRQ; | ^~ drivers/tty/sysrq.c:984:8: error: 'struct sysrq_state' has no member nam= ed 'sysrq_key' 984 | sysrq->sysrq_key =3D 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 na= med '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_inde= x_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 n= amed '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] =3D 97f5f0cd8cd0a0 drivers/char/sysrq.c Dmitry Torokhov 2010-03-21 641 = "\000\0331234567890-=3D\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 =3D 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 =3D 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 =3D 0; i < sysrq_reset_seq_len; i++) { 154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 685 = key =3D 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 =3D=3D 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 =3D state->reset_seq_cnt !=3D 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 =3D 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 =3D 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 =3D 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 =3D 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 =3D=3D 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 =3D=3D 0) 154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 747 = state->reset_canceled =3D false; 154b7a489a5b1d drivers/tty/sysrq.c Mathieu Poirier 2013-01-06 748 = } else if (value =3D=3D 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 =3D=3D 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 =3D 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 =3D 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 =3D=3D KEY_RESERVED || key > KEY_MAX || 4c076eb0cfd9fa drivers/tty/sysrq.c Mathieu J. Poirier 2013-08-03 776 = sysrq_reset_seq_len =3D=3D 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++] =3D (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 =3D 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 =3D &sysrq->handle; fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 798 = unsigned int alt_code =3D 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 =3D 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 =3D 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 =3D 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 =3D=3D sysrq->alt_use) fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 832 = sysrq->active =3D 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 =3D 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 !=3D 2) { fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 837 = sysrq->alt =3D code; fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 838 = sysrq->need_reinject =3D 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 =3D KEY_RESERVED; a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 846 = else if (value !=3D 2) a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 847 = sysrq->shift =3D 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 =3D=3D 1 && sysrq->alt !=3D KEY_RESERVED) { fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 853 = sysrq->active =3D true; fcb7193096969c drivers/char/sysrq.c Dmitry Torokhov 2010-11-15 854 = sysrq->alt_use =3D 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 =3D 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 =3D 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 =3D=3D 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 !=3D 2) { a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 883 = unsigned char c =3D 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 =3D false; a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 886 = if (sysrq->shift_use !=3D KEY_RESERVED) a27eb0cb4b2104 drivers/tty/sysrq.c Andrzej Pietrasiewicz 2020-08-18 887 = c =3D 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 =3D 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 !=3D 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 =3D=3D 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 =3D 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 --===============2426021174644024133== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 dPzzpC35fzOsDI8ilwAA --===============2426021174644024133==--