2010-01-08 15:06:52

by Atsushi Nemoto

[permalink] [raw]
Subject: compat_ioctl: unknown cmd on serial /dev/console

After the commit fb07a5f8 ("compat_ioctl: remove all VT ioctl
handling"), I got this error message on 64-bit mips kernel with 32-bit
busybox userland:

ioctl32(init:1): Unknown cmd fd(0) cmd(00005600){t:'V';sz:0} arg(7fd76480) on /dev/console

The cmd 5600 is VT_OPENQRY. The busybox's init issues this ioctl to
know vt-console or serial-console. If the console was serial console,
VT ioctls are not handled by the serial driver.

How this error should be fixed? Is this patch OK?

diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 332dd00..731478f 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -1005,6 +1005,8 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND)
COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST)
COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI)
#endif
+/* Big V (for serial console case) */
+COMPATIBLE_IOCTL(VT_OPENQRY)
/* Little p (/dev/rtc, /dev/envctrl, etc.) */
COMPATIBLE_IOCTL(RTC_AIE_ON)
COMPATIBLE_IOCTL(RTC_AIE_OFF)

And by quick search, I found some programs using VT_GETMODE to check
vt-console is available or not. So VT_GETMODE might be an another
candidate, but not sure.

---
Atsushi Nemoto


2010-01-08 16:18:27

by Arnd Bergmann

[permalink] [raw]
Subject: Re: compat_ioctl: unknown cmd on serial /dev/console

On Friday 08 January 2010, Atsushi Nemoto wrote:
> After the commit fb07a5f8 ("compat_ioctl: remove all VT ioctl
> handling"), I got this error message on 64-bit mips kernel with 32-bit
> busybox userland:
>
> ioctl32(init:1): Unknown cmd fd(0) cmd(00005600){t:'V';sz:0} arg(7fd76480) on /dev/console

Just to confirm: The behaviour of the kernel is still correct, it's only
the message you are worried about, right?

Sorry for this, it will be trivial to fix.

> The cmd 5600 is VT_OPENQRY. The busybox's init issues this ioctl to
> know vt-console or serial-console. If the console was serial console,
> VT ioctls are not handled by the serial driver.
>
> How this error should be fixed? Is this patch OK?
>
> diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
> index 332dd00..731478f 100644
> --- a/fs/compat_ioctl.c
> +++ b/fs/compat_ioctl.c
> @@ -1005,6 +1005,8 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND)
> COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST)
> COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI)
> #endif
> +/* Big V (for serial console case) */
> +COMPATIBLE_IOCTL(VT_OPENQRY)
> /* Little p (/dev/rtc, /dev/envctrl, etc.) */
> COMPATIBLE_IOCTL(RTC_AIE_ON)
> COMPATIBLE_IOCTL(RTC_AIE_OFF)

I would probably write this as IGNORE_IOCTL() instead of COMPATIBLE_IOCTL
in order to document the intent, but it's functionally the same.

> And by quick search, I found some programs using VT_GETMODE to check
> vt-console is available or not. So VT_GETMODE might be an another
> candidate, but not sure.

Yes, that sounds reasonable, too.

Arnd

2010-01-10 14:09:45

by Atsushi Nemoto

[permalink] [raw]
Subject: Re: compat_ioctl: unknown cmd on serial /dev/console

On Fri, 8 Jan 2010 17:18:23 +0100, Arnd Bergmann <[email protected]> wrote:
> On Friday 08 January 2010, Atsushi Nemoto wrote:
> > After the commit fb07a5f8 ("compat_ioctl: remove all VT ioctl
> > handling"), I got this error message on 64-bit mips kernel with 32-bit
> > busybox userland:
> >
> > ioctl32(init:1): Unknown cmd fd(0) cmd(00005600){t:'V';sz:0} arg(7fd76480) on /dev/console
>
> Just to confirm: The behaviour of the kernel is still correct, it's only
> the message you are worried about, right?

Yes.

> Sorry for this, it will be trivial to fix.
>
> > The cmd 5600 is VT_OPENQRY. The busybox's init issues this ioctl to
> > know vt-console or serial-console. If the console was serial console,
> > VT ioctls are not handled by the serial driver.
> >
> > How this error should be fixed? Is this patch OK?
> >
> > diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
> > index 332dd00..731478f 100644
> > --- a/fs/compat_ioctl.c
> > +++ b/fs/compat_ioctl.c
> > @@ -1005,6 +1005,8 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND)
> > COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST)
> > COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI)
> > #endif
> > +/* Big V (for serial console case) */
> > +COMPATIBLE_IOCTL(VT_OPENQRY)
> > /* Little p (/dev/rtc, /dev/envctrl, etc.) */
> > COMPATIBLE_IOCTL(RTC_AIE_ON)
> > COMPATIBLE_IOCTL(RTC_AIE_OFF)
>
> I would probably write this as IGNORE_IOCTL() instead of COMPATIBLE_IOCTL
> in order to document the intent, but it's functionally the same.

OK, IGNORE_IOCTL seems better.

> > And by quick search, I found some programs using VT_GETMODE to check
> > vt-console is available or not. So VT_GETMODE might be an another
> > candidate, but not sure.
>
> Yes, that sounds reasonable, too.

OK, then I will make a patch to add IGNORE_IOCTL on them.

---
Atsushi Nemoto