]> git.baikalelectronics.ru Git - kernel.git/commit
USB: cdc-wdm: fix race between write and disconnect due to flag abuse
authorOliver Neukum <oneukum@suse.com>
Tue, 27 Aug 2019 10:34:36 +0000 (12:34 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 28 Aug 2019 20:48:38 +0000 (22:48 +0200)
commitbd3ec6969a22f88efa50daa5ae04390007996963
treec48d407e0d789e6022d0003c0312de7d08fe5960
parent00d31e5e6a0adfe4a0d17d8ff770f461f5711419
USB: cdc-wdm: fix race between write and disconnect due to flag abuse

In case of a disconnect an ongoing flush() has to be made fail.
Nevertheless we cannot be sure that any pending URB has already
finished, so although they will never succeed, they still must
not be touched.
The clean solution for this is to check for WDM_IN_USE
and WDM_DISCONNECTED in flush(). There is no point in ever
clearing WDM_IN_USE, as no further writes make sense.

The issue is as old as the driver.

Fixes: 27b23f6445481 ("USB: CDC WDM driver")
Reported-by: syzbot+d232cca6ec42c2edb3fc@syzkaller.appspotmail.com
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20190827103436.21143-1-oneukum@suse.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/cdc-wdm.c