Re: [PATCH v6] /proc/sysrq-trigger: accept multiple keys at once

From: Randy Dunlap
Date: Tue Nov 14 2023 - 17:00:52 EST




On 11/14/23 10:04, Jiri Slaby wrote:
> On 14. 11. 23, 16:12, Tomas Mudrunka wrote:
>> Just for convenience.
>> This way we can do:
>> `echo _reisub > /proc/sysrq-trigger`
>> Instead of:
>> `for i in r e i s u b; do echo "$i" > /proc/sysrq-trigger; done;`
>>
>> This can be very useful when trying to execute sysrq combo remotely
>> or from userspace. When sending keys in multiple separate writes,
>> userspace can be killed before whole combo is completed.
>> Therefore putting all keys in single write is more robust approach.
>>
>> Signed-off-by: Tomas Mudrunka <tomas.mudrunka@xxxxxxxxx>
>> ---
>> V5 -> V6: Documentation now has notice about undefined behavior
>> V4 -> V5: Added this list of changes
>> V3 -> V4: Bulk is now bool instead of char (and fixed typo)
>> V2 -> V3: Fixed code styling (and introduced typo)
>> V1 -> V2: Bulk mode only activated by underscore now, added docs
>>
>>   Documentation/admin-guide/sysrq.rst | 11 ++++++++++-
>>   drivers/tty/sysrq.c                 | 17 ++++++++++++++---
>>   2 files changed, 24 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/admin-guide/sysrq.rst b/Documentation/admin-guide/sysrq.rst
>> index 51906e473..e7a82cba7 100644
>> --- a/Documentation/admin-guide/sysrq.rst
>> +++ b/Documentation/admin-guide/sysrq.rst
>> @@ -75,10 +75,19 @@ On other
>>       submit a patch to be included in this section.
>>     On all
>> -    Write a character to /proc/sysrq-trigger.  e.g.::
>> +    Write single character to /proc/sysrq-trigger.
>
> a single
>
>> +    Only first character is interpreted, rest of string is ignored.
>
> the first; the rest of the string
>
>> +    However it is not reccomended to write any extra characters
>
> However, <- comma
> recommended
>
>> +    as the behavior is undefined and might change in the future versions.
>> +    e.g.::
>
> Even the original was lowercase. But it should be "E.g.::", right -- Greg/Jon?
>

or Randy?
Yes, you are correct.
All of your recommendations look good.
Thanks.

>>             echo t > /proc/sysrq-trigger
>>   +    Alternatively write multiple keys combo prepended by underscore.
>
> Alternatively, <- comma
> s/keys/characters/
> an underscore
>
>> +    All characters are interpreted this way. e.g.::
>
> This way, all characters are interpreted. (IMO this has a different meaning, but natives would have to tell us.)
>
>> +
>> +        echo _reisub > /proc/sysrq-trigger
>> +
>>   The :kbd:`<command key>` is case sensitive.
>>     What are the 'command' keys?
>> diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
>> index 6b4a28bcf..ad07bc812 100644
>> --- a/drivers/tty/sysrq.c
>> +++ b/drivers/tty/sysrq.c
>> @@ -1150,16 +1150,27 @@ EXPORT_SYMBOL(unregister_sysrq_key);
>>   #ifdef CONFIG_PROC_FS
>>   /*
>>    * writing 'C' to /proc/sysrq-trigger is like sysrq-C
>> + * If first character in write is underscore, all characters are interpreted.
>
> If the first character written is
>
> thanks,

--
~Randy