[SLOF] [PATCH] slof/fs/accept: Allow Unix LF line endings, too

Alexey Kardashevskiy aik at ozlabs.ru
Mon Aug 30 22:58:41 AEST 2021

On 30/08/2021 20:53, Thomas Huth wrote:
> Currently SLOF only accepts CR (0x0d) line endings at the command prompt,
> since this is the default line ending used on serial consoles. However,
> sometimes people try to connect to SLOF directly in a way that uses the
> typical Unix LF line endings (0x0a) which are then completely ignored,
> for example running QEMU like this:
>   qemu-system-ppc64 -nodefaults \
>      -chardev socket,path=/tmp/mysocket,wait=off,id=cs0,server=on \
>      -device spapr-vty,id=serial0,reg=0x30000000,chardev=cs0
> and then connect to that Unix socket via "nc -U /tmp/mysocket".
> For such use cases, allow the 0x0a line ending in SLOF, too.
> Signed-off-by: Thomas Huth <thuth at redhat.com>
> ---
>   I'm not quite sure anymore ... didn't we already run into this problem
>   a couple of times in the past already? Was there a reason that we never
>   allowed 0x0a here, too?

I do not remember anything like this and git blame suggests the code is 
from the initial commit. David poked me today about it and I came up 
with the same patch which does not seem breaking anything but I did not 
test everything (unix socket, tcp socket, telnet on/off), did you? ;)

But the question now is how come qemu's stdin sends 0xd on "enter" to 
SLOF. I kinda understand why "nc" does this (it just does not do 
anything funny) but I am lost with the shell and tty. All I can see is 
that qemu_chr_set_echo_stdio() sets tty.c_iflag to 0 which means we 
should have the same problem with -stdio but we do not - vty_receive() 
receives 0xd on "enter" while "strace cat" in the same terminal gives 
0xa. Ideas?

>   slof/fs/accept.fs | 1 +
>   1 file changed, 1 insertion(+)
> diff --git a/slof/fs/accept.fs b/slof/fs/accept.fs
> index cb6f2fa..26e9216 100644
> --- a/slof/fs/accept.fs
> +++ b/slof/fs/accept.fs
> @@ -392,6 +392,7 @@ TABLE-EXECUTE handle-control
>      1b emit 37 emit
>      BEGIN
>         key dup 0d <>
> +      over 0a <> and
>      WHILE
>         dup 9 <> IF 0 to ?tab-pressed THEN \ reset state machine
>         dup 7f = IF drop 8 THEN \ Handle DEL as if it was BS. ??? bogus


More information about the SLOF mailing list