diff --git a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c index 296b091cf168..46929a1b6f24 100644 --- a/drivers/usb/usb-skeleton.c +++ b/drivers/usb/usb-skeleton.c @@ -90,14 +90,16 @@ static int skel_open(struct inode *inode, struct file *file) goto exit; } - /* prevent the device from being autosuspended */ - retval = usb_autopm_get_interface(interface); - if (retval) - goto exit; - /* increment our usage count for the device */ kref_get(&dev->kref); + /* prevent the device from being autosuspended */ + retval = usb_autopm_get_interface(interface); + if (retval) { + kref_put(&dev->kref, skel_delete); + goto exit; + } + /* save our object in the file's private structure */ file->private_data = dev;