usblp: Don't let suspend to kill ->used
Suspend destroys refcounting for open/release. Signed-off-by: Pete Zaitcev <zaitcev@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>hifive-unleashed-5.1
parent
dda034bcb5
commit
97cb95d1c4
|
@ -347,10 +347,8 @@ static int handle_bidir (struct usblp *usblp)
|
||||||
if (usblp->bidir && usblp->used && !usblp->sleeping) {
|
if (usblp->bidir && usblp->used && !usblp->sleeping) {
|
||||||
usblp->readcount = 0;
|
usblp->readcount = 0;
|
||||||
usblp->readurb->dev = usblp->dev;
|
usblp->readurb->dev = usblp->dev;
|
||||||
if (usb_submit_urb(usblp->readurb, GFP_KERNEL) < 0) {
|
if (usb_submit_urb(usblp->readurb, GFP_KERNEL) < 0)
|
||||||
usblp->used = 0;
|
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -412,6 +410,7 @@ static int usblp_open(struct inode *inode, struct file *file)
|
||||||
usblp->readurb->status = 0;
|
usblp->readurb->status = 0;
|
||||||
|
|
||||||
if (handle_bidir(usblp) < 0) {
|
if (handle_bidir(usblp) < 0) {
|
||||||
|
usblp->used = 0;
|
||||||
file->private_data = NULL;
|
file->private_data = NULL;
|
||||||
retval = -EIO;
|
retval = -EIO;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue