Commit 3d732690 authored by Johan Hovold's avatar Johan Hovold
Browse files

USB: serial: usb_wwan: fix TIOCSSERIAL jiffies conversions



The port close_delay and closing_wait parameters set by TIOCSSERIAL are
specified in jiffies and not milliseconds.

Add the missing conversions so that the TIOCSSERIAL works as expected
also when HZ is not 1000.

Fixes: 02303f73 ("usb-wwan: implement TIOCGSERIAL and TIOCSSERIAL to avoid blocking close(2)")
Cc: stable@vger.kernel.org      # 2.6.38
Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parent d370c90d
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -140,10 +140,10 @@ int usb_wwan_get_serial_info(struct tty_struct *tty,
	ss->line            = port->minor;
	ss->port            = port->port_number;
	ss->baud_base       = tty_get_baud_rate(port->port.tty);
	ss->close_delay	    = port->port.close_delay / 10;
	ss->close_delay	    = jiffies_to_msecs(port->port.close_delay) / 10;
	ss->closing_wait    = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
				 ASYNC_CLOSING_WAIT_NONE :
				 port->port.closing_wait / 10;
				 jiffies_to_msecs(port->port.closing_wait) / 10;
	return 0;
}
EXPORT_SYMBOL(usb_wwan_get_serial_info);
@@ -155,9 +155,10 @@ int usb_wwan_set_serial_info(struct tty_struct *tty,
	unsigned int closing_wait, close_delay;
	int retval = 0;

	close_delay = ss->close_delay * 10;
	close_delay = msecs_to_jiffies(ss->close_delay * 10);
	closing_wait = ss->closing_wait == ASYNC_CLOSING_WAIT_NONE ?
			ASYNC_CLOSING_WAIT_NONE : ss->closing_wait * 10;
			ASYNC_CLOSING_WAIT_NONE :
			msecs_to_jiffies(ss->closing_wait * 10);

	mutex_lock(&port->port.mutex);