projects
/
wrapfs-3.14.y.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
bc601c4
)
usblp: poison URBs upon disconnect
author
Oliver Neukum
<oneukum@suse.com>
Thu, 7 May 2020 08:58:06 +0000
(10:58 +0200)
committer
Sasha Levin
<sashal@kernel.org>
Tue, 30 Jun 2020 00:07:49 +0000
(20:07 -0400)
[ Upstream commit
296a193b06120aa6ae7cf5c0d7b5e5b55968026e
]
syzkaller reported an URB that should have been killed to be active.
We do not understand it, but this should fix the issue if it is real.
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Reported-by: syzbot+be5b5f86a162a6c281e6@syzkaller.appspotmail.com
Link:
https://lore.kernel.org/r/20200507085806.5793-1-oneukum@suse.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/class/usblp.c
patch
|
blob
|
history
diff --git
a/drivers/usb/class/usblp.c
b/drivers/usb/class/usblp.c
index 07c3c3449147fa6b7c1afbb171c27e8fb2128786..c578d64edc153f63c271a93613b9bc2c0774a1c4 100644
(file)
--- a/
drivers/usb/class/usblp.c
+++ b/
drivers/usb/class/usblp.c
@@
-481,7
+481,8
@@
static int usblp_release(struct inode *inode, struct file *file)
usb_autopm_put_interface(usblp->intf);
if (!usblp->present) /* finish cleanup from disconnect */
- usblp_cleanup(usblp);
+ usblp_cleanup(usblp); /* any URBs must be dead */
+
mutex_unlock(&usblp_mutex);
return 0;
}
@@
-1397,9
+1398,11
@@
static void usblp_disconnect(struct usb_interface *intf)
usblp_unlink_urbs(usblp);
mutex_unlock(&usblp->mut);
+ usb_poison_anchored_urbs(&usblp->urbs);
if (!usblp->used)
usblp_cleanup(usblp);
+
mutex_unlock(&usblp_mutex);
}