Abort transfers on all pipes before closing them. This fixes the crash
when Bluetooth USB device is pulled out without stopping the stack first. Submitted by: Vladimir Grebenschikov vova at fbsd dot ru MFC after: 1 week
This commit is contained in:
parent
4ec9dc4de2
commit
7469c6e5e4
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183576
@ -812,24 +812,29 @@ ubt_detach(device_t self)
|
||||
|
||||
/* Close pipes */
|
||||
if (sc->sc_intr_pipe != NULL) {
|
||||
usbd_abort_pipe(sc->sc_intr_pipe);
|
||||
usbd_close_pipe(sc->sc_intr_pipe);
|
||||
sc->sc_intr_pipe = NULL;
|
||||
}
|
||||
|
||||
if (sc->sc_bulk_in_pipe != NULL) {
|
||||
usbd_abort_pipe(sc->sc_bulk_in_pipe);
|
||||
usbd_close_pipe(sc->sc_bulk_in_pipe);
|
||||
sc->sc_bulk_in_pipe = NULL;
|
||||
}
|
||||
if (sc->sc_bulk_out_pipe != NULL) {
|
||||
usbd_abort_pipe(sc->sc_bulk_out_pipe);
|
||||
usbd_close_pipe(sc->sc_bulk_out_pipe);
|
||||
sc->sc_bulk_out_pipe = NULL;
|
||||
}
|
||||
|
||||
if (sc->sc_isoc_in_pipe != NULL) {
|
||||
usbd_abort_pipe(sc->sc_isoc_in_pipe);
|
||||
usbd_close_pipe(sc->sc_isoc_in_pipe);
|
||||
sc->sc_isoc_in_pipe = NULL;
|
||||
}
|
||||
if (sc->sc_isoc_out_pipe != NULL) {
|
||||
usbd_abort_pipe(sc->sc_isoc_out_pipe);
|
||||
usbd_close_pipe(sc->sc_isoc_out_pipe);
|
||||
sc->sc_isoc_out_pipe = NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user