diff options
Diffstat (limited to 'drivers/usb/serial/mct_u232.c')
-rw-r--r-- | drivers/usb/serial/mct_u232.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c index 4446b8d70ac2..885655315de1 100644 --- a/drivers/usb/serial/mct_u232.c +++ b/drivers/usb/serial/mct_u232.c | |||
@@ -376,14 +376,21 @@ static void mct_u232_msr_to_state(struct usb_serial_port *port, | |||
376 | 376 | ||
377 | static int mct_u232_port_probe(struct usb_serial_port *port) | 377 | static int mct_u232_port_probe(struct usb_serial_port *port) |
378 | { | 378 | { |
379 | struct usb_serial *serial = port->serial; | ||
379 | struct mct_u232_private *priv; | 380 | struct mct_u232_private *priv; |
380 | 381 | ||
382 | /* check first to simplify error handling */ | ||
383 | if (!serial->port[1] || !serial->port[1]->interrupt_in_urb) { | ||
384 | dev_err(&port->dev, "expected endpoint missing\n"); | ||
385 | return -ENODEV; | ||
386 | } | ||
387 | |||
381 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); | 388 | priv = kzalloc(sizeof(*priv), GFP_KERNEL); |
382 | if (!priv) | 389 | if (!priv) |
383 | return -ENOMEM; | 390 | return -ENOMEM; |
384 | 391 | ||
385 | /* Use second interrupt-in endpoint for reading. */ | 392 | /* Use second interrupt-in endpoint for reading. */ |
386 | priv->read_urb = port->serial->port[1]->interrupt_in_urb; | 393 | priv->read_urb = serial->port[1]->interrupt_in_urb; |
387 | priv->read_urb->context = port; | 394 | priv->read_urb->context = port; |
388 | 395 | ||
389 | spin_lock_init(&priv->lock); | 396 | spin_lock_init(&priv->lock); |