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

Hannes Reinecke hare at suse.de
Wed Feb 5 02:11:46 PST 2014


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 at poettering.net>
Cc: Kay Sievers <kay at vrfy.org>
Signed-off-by: Werner Fink <werner at suse.de>
Signed-off-by: Hannes Reinecke <hare at suse.de>
---
 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');
+	}
 	console_unlock();
 
 	return count;
-- 
1.7.12.4



More information about the systemd-devel mailing list