|
@@ -1267,16 +1267,17 @@ static void pty_line_name(struct tty_driver *driver, int index, char *p)
|
|
|
* @p: output buffer of at least 7 bytes
|
|
|
*
|
|
|
* Generate a name from a driver reference and write it to the output
|
|
|
- * buffer.
|
|
|
+ * buffer. Return the number of bytes written.
|
|
|
*
|
|
|
* Locking: None
|
|
|
*/
|
|
|
-static void tty_line_name(struct tty_driver *driver, int index, char *p)
|
|
|
+static ssize_t tty_line_name(struct tty_driver *driver, int index, char *p)
|
|
|
{
|
|
|
if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE)
|
|
|
- strcpy(p, driver->name);
|
|
|
+ return sprintf(p, "%s", driver->name);
|
|
|
else
|
|
|
- sprintf(p, "%s%d", driver->name, index + driver->name_base);
|
|
|
+ return sprintf(p, "%s%d", driver->name,
|
|
|
+ index + driver->name_base);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -3545,9 +3546,19 @@ static ssize_t show_cons_active(struct device *dev,
|
|
|
if (i >= ARRAY_SIZE(cs))
|
|
|
break;
|
|
|
}
|
|
|
- while (i--)
|
|
|
- count += sprintf(buf + count, "%s%d%c",
|
|
|
- cs[i]->name, cs[i]->index, i ? ' ':'\n');
|
|
|
+ while (i--) {
|
|
|
+ struct tty_driver *driver;
|
|
|
+ const char *name = cs[i]->name;
|
|
|
+ int index = cs[i]->index;
|
|
|
+
|
|
|
+ driver = cs[i]->device(cs[i], &index);
|
|
|
+ if (driver) {
|
|
|
+ count += tty_line_name(driver, index, buf + count);
|
|
|
+ count += sprintf(buf + count, "%c", i ? ' ':'\n');
|
|
|
+ } else
|
|
|
+ count += sprintf(buf + count, "%s%d%c",
|
|
|
+ name, index, i ? ' ':'\n');
|
|
|
+ }
|
|
|
console_unlock();
|
|
|
|
|
|
return count;
|