Re: [systemd-devel] [PATCH] tty: Set correct tty name in 'active'sysfs attribute

From: Peter Hurley
Date: Wed Feb 05 2014 - 08:53:28 EST


On 02/05/2014 07:53 AM, David Herrmann wrote:
Hi

On Wed, Feb 5, 2014 at 11:11 AM, Hannes Reinecke <hare@xxxxxxx> wrote:
The 'active' sysfs attribute should refer to the currently
active tty devices the console is running on, not the currently
active console.
The console structure doesn't refer to any device in sysfs,
only the tty the console is running on has.
So we need to print out the tty names in 'active', not
the console names.

Cc: Lennart Poettering <lennart@xxxxxxxxxxxxxx>
Cc: Kay Sievers <kay@xxxxxxxx>
Signed-off-by: Werner Fink <werner@xxxxxxx>
Signed-off-by: Hannes Reinecke <hare@xxxxxxx>
---
drivers/tty/tty_io.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index c74a00a..17db8ca 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -3545,9 +3545,19 @@ static ssize_t show_cons_active(struct device *dev,
if (i >= ARRAY_SIZE(cs))
break;
}
- while (i--)
+ while (i--) {
+ const struct tty_driver *driver;
+ const char *name = cs[i]->name;
+ int index = cs[i]->index;
+
+ driver = cs[i]->device(cs[i], &index);
+ if (driver) {
+ index += driver->name_base;
+ name = driver->name;
+ }
count += sprintf(buf + count, "%s%d%c",
- cs[i]->name, cs[i]->index, i ? ' ':'\n');
+ name, index, i ? ' ':'\n');
+ }

Nice catch and indeed, systemd already relies on these names to be
identical to their char-dev name. Fortunately, VTs and most serial
devices register the console with the same name as the TTY, so we're
fine.

What device did this trip over?

Also, this file is not private to systemd. Maybe these changes should
be forked into a different sysfs attribute, "active_devices"?

Regards,
Peter Hurley
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/