diff options
Diffstat (limited to 'drivers/usb/serial/usb-serial.c')
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 7e89efbf2c28..676c296103a2 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
@@ -164,9 +164,9 @@ void usb_serial_put(struct usb_serial *serial) | |||
164 | * @driver: the driver (USB in our case) | 164 | * @driver: the driver (USB in our case) |
165 | * @tty: the tty being created | 165 | * @tty: the tty being created |
166 | * | 166 | * |
167 | * Create the termios objects for this tty. We use the default | 167 | * Initialise the termios structure for this tty. We use the default |
168 | * USB serial settings but permit them to be overridden by | 168 | * USB serial settings but permit them to be overridden by |
169 | * serial->type->init_termios. | 169 | * serial->type->init_termios on first open. |
170 | * | 170 | * |
171 | * This is the first place a new tty gets used. Hence this is where we | 171 | * This is the first place a new tty gets used. Hence this is where we |
172 | * acquire references to the usb_serial structure and the driver module, | 172 | * acquire references to the usb_serial structure and the driver module, |
@@ -178,6 +178,7 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) | |||
178 | int idx = tty->index; | 178 | int idx = tty->index; |
179 | struct usb_serial *serial; | 179 | struct usb_serial *serial; |
180 | struct usb_serial_port *port; | 180 | struct usb_serial_port *port; |
181 | bool init_termios; | ||
181 | int retval = -ENODEV; | 182 | int retval = -ENODEV; |
182 | 183 | ||
183 | port = usb_serial_port_get_by_minor(idx); | 184 | port = usb_serial_port_get_by_minor(idx); |
@@ -192,14 +193,16 @@ static int serial_install(struct tty_driver *driver, struct tty_struct *tty) | |||
192 | if (retval) | 193 | if (retval) |
193 | goto error_get_interface; | 194 | goto error_get_interface; |
194 | 195 | ||
196 | init_termios = (driver->termios[idx] == NULL); | ||
197 | |||
195 | retval = tty_standard_install(driver, tty); | 198 | retval = tty_standard_install(driver, tty); |
196 | if (retval) | 199 | if (retval) |
197 | goto error_init_termios; | 200 | goto error_init_termios; |
198 | 201 | ||
199 | mutex_unlock(&serial->disc_mutex); | 202 | mutex_unlock(&serial->disc_mutex); |
200 | 203 | ||
201 | /* allow the driver to update the settings */ | 204 | /* allow the driver to update the initial settings */ |
202 | if (serial->type->init_termios) | 205 | if (init_termios && serial->type->init_termios) |
203 | serial->type->init_termios(tty); | 206 | serial->type->init_termios(tty); |
204 | 207 | ||
205 | tty->driver_data = port; | 208 | tty->driver_data = port; |