Skip to content

Commit

Permalink
Input: pegasus_notetaker - fix usb_autopm calls to be balanced
Browse files Browse the repository at this point in the history
We should only "put" the interface if submitting URB or setting tablet mode
in pegasus_open() fails, otherwise leave it to pegasus_close().

Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Martin Kepplinger authored and Dmitry Torokhov committed Jul 19, 2016
1 parent 168c139 commit 9d3bef0
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions drivers/input/tablet/pegasus_notetaker.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,34 +209,39 @@ static void pegasus_init(struct work_struct *work)
static int pegasus_open(struct input_dev *dev)
{
struct pegasus *pegasus = input_get_drvdata(dev);
int retval;
int error;

retval = usb_autopm_get_interface(pegasus->intf);
if (retval)
return retval;
error = usb_autopm_get_interface(pegasus->intf);
if (error)
return error;

pegasus->irq->dev = pegasus->usbdev;
if (usb_submit_urb(pegasus->irq, GFP_KERNEL))
retval = -EIO;
if (usb_submit_urb(pegasus->irq, GFP_KERNEL)) {
error = -EIO;
goto err_autopm_put;
}

error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
if (error)
goto err_kill_urb;

retval = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
return 0;

err_kill_urb:
usb_kill_urb(pegasus->irq);
cancel_work_sync(&pegasus->init);
err_autopm_put:
usb_autopm_put_interface(pegasus->intf);

return retval;
return error;
}

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,
Expand Down

0 comments on commit 9d3bef0

Please sign in to comment.