]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
USB: legousbtower: fix potential NULL-deref on disconnect
authorJohan Hovold <johan@kernel.org>
Thu, 19 Sep 2019 08:30:38 +0000 (10:30 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Tue, 12 Nov 2019 18:04:35 +0000 (19:04 +0100)
commit94309318a812adbfefc3a522670f5387574c26cc
tree82216bb6c45e98037cc753e5e016310d521ba01c
parente0ebacae4ce4a32d9d707e70efffade4790f7bcc
USB: legousbtower: fix potential NULL-deref on disconnect

BugLink: https://bugs.launchpad.net/bugs/1850541
commit cd81e6fa8e033e7bcd59415b4a65672b4780030b upstream.

The driver is using its struct usb_device pointer as an inverted
disconnected flag, but was setting it to NULL before making sure all
completion handlers had run. This could lead to a NULL-pointer
dereference in a number of dev_dbg and dev_err statements in the
completion handlers which relies on said pointer.

Fix this by unconditionally stopping all I/O and preventing
resubmissions by poisoning the interrupt URBs at disconnect and using a
dedicated disconnected flag.

This also makes sure that all I/O has completed by the time the
disconnect callback returns.

Fixes: 9d974b2a06e3 ("USB: legousbtower.c: remove err() usage")
Fixes: fef526cae700 ("USB: legousbtower: remove custom debug macro")
Fixes: 4dae99638097 ("USB: legotower: remove custom debug macro and module parameter")
Cc: stable <stable@vger.kernel.org> # 3.5
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20190919083039.30898-4-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/usb/misc/legousbtower.c