[Toybox] [PATCH] Fix oneit sysfs console autodetection

Daniel Mentz danielmentz at google.com
Fri Apr 14 18:11:10 PDT 2023


It turned out that one of our own shell scripts tried to interpret console=
arguments in /proc/cmdline and tripped over a newline character in the
kernel command line. That also explains the error message we saw.

That being said, I think my patch might still be valid, because the
function show_cons_active in the Linux kernel uses space characters to
separate console names. Please update the commit message accordingly.

On Fri, Apr 14, 2023 at 3:13 PM Daniel Mentz <danielmentz at google.com> wrote:

> oneit appears to have made the assumption that
> /sys/class/tty/console/active provides a list of console names separated
> by newline characters. It turned out, though, that individual names are
> separated by space characters with a newline character at the very end
> of the list.
>
> We previously observed the following error message:
>
> oneit: /dev/ttynull
> ttyS0: No such file or directory
> ---
>  toys/other/oneit.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/toys/other/oneit.c b/toys/other/oneit.c
> index d154f582..13f58078 100644
> --- a/toys/other/oneit.c
> +++ b/toys/other/oneit.c
> @@ -73,12 +73,13 @@ void oneit_main(void)
>    // Autodetect console from sysfs if no -c
>    memcpy(toybuf, "/dev/", 5);
>    if (!TT.c && (TT.c = readfile("/sys/class/tty/console/active", ss,
> 4096))) {
> -    // Remove null terminator, take last entry
> +    // Take last entry, remove newline terminator
>      for (;;) {
> -      if (!(ss = strchr(TT.c, '\n'))) break;
> +      if (!(ss = strchr(TT.c, ' '))) break;
>        if (!ss[1]) *ss = 0;
>        else TT.c = ++ss;
>      }
> +    if (ss = strchr(TT.c, '\n')) ss[1] = 0;
>      // Ensure /dev prefix
>      strstart(&TT.c, "/dev/");
>      memmove(toybuf+5, TT.c, strlen(TT.c));
> --
> 2.40.0.634.g4ca3ef3211-goog
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20230414/ad1c953f/attachment.htm>


More information about the Toybox mailing list