Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a66639ab authored by Thomas Viehmann's avatar Thomas Viehmann Committed by Greg Kroah-Hartman
Browse files

usb-serial: fix oti6858.c segfault in termios handling



The oti6858 usb serial driver should use kernel_termios_to_user_termios/
user_termios_to_kernel_termios to avoid segfaults because the kernel
uses a structure differing from that of user space with a different
size.

Signed-off-by: default avatarThomas Viehmann <tv@beamnet.de>
CC: stable <stable@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0bd307e1
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -818,19 +818,17 @@ static int oti6858_ioctl(struct usb_serial_port *port, struct file *file,

	switch (cmd) {
		case TCGETS:
			if (copy_to_user(user_arg, port->tty->termios,
						sizeof(struct ktermios))) {
			if (kernel_termios_to_user_termios((struct ktermios __user *)arg,
							   port->tty->termios))
				return -EFAULT;
			}
			return 0;

		case TCSETS:
		case TCSETSW:	/* FIXME: this is not the same! */
		case TCSETSF:	/* FIXME: this is not the same! */
			if (copy_from_user(port->tty->termios, user_arg,
						sizeof(struct ktermios))) {
			if (user_termios_to_kernel_termios(port->tty->termios,
						(struct ktermios __user *)arg))
				return -EFAULT;
			}
			oti6858_set_termios(port, NULL);
			return 0;