On Mon, Jul 18, 2016 at 04:29:07PM +0200, Martin Kepplinger wrote: > Signed-off-by: Martin Kepplinger <martink@xxxxxxxxx> > --- > drivers/input/tablet/pegasus_notetaker.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/drivers/input/tablet/pegasus_notetaker.c b/drivers/input/tablet/pegasus_notetaker.c > index 27cb352..fdbc5e8 100644 > --- a/drivers/input/tablet/pegasus_notetaker.c > +++ b/drivers/input/tablet/pegasus_notetaker.c > @@ -208,27 +208,30 @@ static int pegasus_open(struct input_dev *dev) > return retval; > > pegasus->irq->dev = pegasus->usbdev; > - if (usb_submit_urb(pegasus->irq, GFP_KERNEL)) > + if (usb_submit_urb(pegasus->irq, GFP_KERNEL)) { > retval = -EIO; > + goto out; > + } > > retval = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE); If this fails I we should kill URB and cancel work. I adjusted and applied. > > - usb_autopm_put_interface(pegasus->intf); > +out: > > - return retval; > + if (retval < 0) { > + usb_autopm_put_interface(pegasus->intf); > + return retval; > + } else { > + return 0; > + } > } > > static void pegasus_close(struct input_dev *dev) > { > struct pegasus *pegasus = input_get_drvdata(dev); > - int autopm_error; > > - autopm_error = usb_autopm_get_interface(pegasus->intf); > usb_kill_urb(pegasus->irq); > cancel_work_sync(&pegasus->init); > - > - if (!autopm_error) > - usb_autopm_put_interface(pegasus->intf); > + usb_autopm_put_interface(pegasus->intf); > } > > static int pegasus_probe(struct usb_interface *intf, > -- > 2.1.4 > -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html