summaryrefslogtreecommitdiffstats
path: root/drivers/usb/printer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/printer.c')
-rw-r--r--drivers/usb/printer.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/printer.c b/drivers/usb/printer.c
index 4c100f16c..c1a7ddb67 100644
--- a/drivers/usb/printer.c
+++ b/drivers/usb/printer.c
@@ -160,10 +160,13 @@ static int usblp_open(struct inode *inode, struct file *file)
if (usblp->used)
return -EBUSY;
- if ((retval = usblp_check_status(usblp)))
+ MOD_INC_USE_COUNT;
+
+ if ((retval = usblp_check_status(usblp))) {
+ MOD_DEC_USE_COUNT;
return retval;
+ }
- MOD_INC_USE_COUNT;
usblp->used = 1;
file->private_data = usblp;
@@ -179,17 +182,18 @@ static int usblp_release(struct inode *inode, struct file *file)
{
struct usblp *usblp = file->private_data;
- MOD_DEC_USE_COUNT;
usblp->used = 0;
if (usblp->dev) {
usb_unlink_urb(&usblp->readurb);
usb_unlink_urb(&usblp->writeurb);
+ MOD_DEC_USE_COUNT;
return 0;
}
usblp_table[usblp->minor] = NULL;
kfree(usblp);
+ MOD_DEC_USE_COUNT;
return 0;
}