Skip to content

Commit 00af4f3

Browse files
marmarekjhovold
authored andcommitted
USB: serial: debug: do not echo input by default
This driver is intended as a "client" end of the console connection. When connected to a host it's supposed to receive debug logs, and possibly allow to interact with whatever debug console is available there. Feeding messages back, depending on a configuration may cause log messages be executed as shell commands (which can be really bad if one is unlucky, imagine a log message like "prevented running `rm -rf /home`"). In case of Xen, it exposes sysrq-like debug interface, and feeding it its own logs will pretty quickly hit 'R' for "instant reboot". Contrary to a classic serial console, the USB one cannot be configured ahead of time, as the device shows up only when target OS is up. And at the time device is opened to execute relevant ioctl, it's already too late, especially when logs start flowing shortly after device is initialized. Avoid the issue by changing default to no echo for this type of devices. Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> [ johan: amend summary; disable also ECHONL ] Cc: stable@vger.kernel.org Signed-off-by: Johan Hovold <johan@kernel.org>
1 parent 8400291 commit 00af4f3

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

drivers/usb/serial/usb_debug.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ static void usb_debug_process_read_urb(struct urb *urb)
7676
usb_serial_generic_process_read_urb(urb);
7777
}
7878

79+
static void usb_debug_init_termios(struct tty_struct *tty)
80+
{
81+
tty->termios.c_lflag &= ~(ECHO | ECHONL);
82+
}
83+
7984
static struct usb_serial_driver debug_device = {
8085
.driver = {
8186
.owner = THIS_MODULE,
@@ -85,6 +90,7 @@ static struct usb_serial_driver debug_device = {
8590
.num_ports = 1,
8691
.bulk_out_size = USB_DEBUG_MAX_PACKET_SIZE,
8792
.break_ctl = usb_debug_break_ctl,
93+
.init_termios = usb_debug_init_termios,
8894
.process_read_urb = usb_debug_process_read_urb,
8995
};
9096

@@ -96,6 +102,7 @@ static struct usb_serial_driver dbc_device = {
96102
.id_table = dbc_id_table,
97103
.num_ports = 1,
98104
.break_ctl = usb_debug_break_ctl,
105+
.init_termios = usb_debug_init_termios,
99106
.process_read_urb = usb_debug_process_read_urb,
100107
};
101108

0 commit comments

Comments
 (0)