]> 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)
commitbcff2727db3311e71d7e14c114da7b24ca6c522b
treec48d407e0d789e6022d0003c0312de7d08fe5960
parent2ed87242735eaf6c654bc33230e0e97d9cc25e2d
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