From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/3] usb: host: xhci: fix oops when removing hcd From: Jack Pham Message-Id: <20180927013430.GA17520@jackp-linux.qualcomm.com> Date: Wed, 26 Sep 2018 18:34:30 -0700 To: Mathias Nyman Cc: Peter Chen , mathias.nyman@intel.com, linux-usb@vger.kernel.org, linux-imx@nxp.com, jun.li@nxp.com, Joel Stanley , Mayank Rana List-ID: SGkgTWF0aGlhcywKCk9uIFdlZCwgU2VwIDI2LCAyMDE4IGF0IDAyOjUxOjQwUE0gKzAzMDAsIE1h dGhpYXMgTnltYW4gd3JvdGU6Cj4gSGkgSmFjaywgUGV0ZXIKPiAKPiBPbiAyNC4wOS4yMDE4IDE5 OjM3LCBKYWNrIFBoYW0gd3JvdGU6Cj4gPkhpIFBldGVyLAo+ID4KPiA+T24gRnJpLCBTZXAgMjEs IDIwMTggYXQgMDk6NDg6NDNBTSArMDgwMCwgUGV0ZXIgQ2hlbiB3cm90ZToKPiA+PlR5cGUtQy10 by1BIGNhYmxlLCBhbmQgdGhlIFVTQjMgSENEIGhhcyBhbHJlYWR5IGJlZW4gTlVMTCBhdCB0aGF0 IHRpbWUuCj4gPj5UaGUgb29wcyBsb2cgbGlrZSBiZWxvdzoKPiA+Pgo+ID4+WzY4MS43ODIyODhd IHhoY2ktaGNkIHhoY2ktaGNkLjEuYXV0bzogcmVtb3ZlLCBzdGF0ZSAxCj4gPj5bNjgxLjc4NzQ5 MF0gdXNiIHVzYjQ6IFVTQiBkaXNjb25uZWN0LCBkZXZpY2UgbnVtYmVyIDEKPiA+Pls2ODEuNzky ODA4XSB1c2IgNC0xOiBVU0IgZGlzY29ubmVjdCwgZGV2aWNlIG51bWJlciAyCj4gPj5bNjgxLjgx ODA4OV0geGhjaS1oY2QgeGhjaS1oY2QuMS5hdXRvOiBVU0IgYnVzIDQgZGVyZWdpc3RlcmVkCj4g Pj5bNjgxLjgyMzgwM10gVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgTlVMTCBwb2ludGVyIGRlcmVm ZXJlbmNlIGF0IHZpcnR1YWwgYWRkcmVzcyAwMDAwMDBhMAo+ID4+WzY4MS44MjM4MDZdIE1lbSBh Ym9ydCBpbmZvOgo+ID4+WzY4MS44MjM4MDldICAgRXhjZXB0aW9uIGNsYXNzID0gREFCVCAoY3Vy cmVudCBFTCksIElMID0gMzIgYml0cwo+ID4+WzY4MS44MjM4MTFdICAgU0VUID0gMCwgRm5WID0g MAo+ID4+WzY4MS44MjM4MTNdICAgRUEgPSAwLCBTMVBUVyA9IDAKPiA+Pls2ODEuODIzODE0XSBE YXRhIGFib3J0IGluZm86Cj4gPj5bNjgxLjgyMzgxNl0gICBJU1YgPSAwLCBJU1MgPSAweDAwMDAw MDA0Cj4gPj5bNjgxLjgyMzgxOF0gICBDTSA9IDAsIFduUiA9IDAKPiA+Pls2ODEuODIzODIyXSB1 c2VyIHBndGFibGU6IDRrIHBhZ2VzLCA0OC1iaXQgVkFzLCBwZ2QgPSBmZmZmODAwMGFlM2ZkMDAw Cj4gPj5bNjgxLjgyMzgyNF0gWzAwMDAwMDAwMDAwMDAwYTBdICpwZ2Q9MDAwMDAwMDAwMDAwMDAw MAo+ID4+WzY4MS44MjM4MjldIEludGVybmFsIGVycm9yOiBPb3BzOiA5NjAwMDAwNCBbIzFdIFBS RUVNUFQgU01QCj4gPj5bNjgxLjgyMzgzMl0gTW9kdWxlcyBsaW5rZWQgaW46IDgwMjFxIGdhcnAg c3RwIG1ycCBjcmMzMl9jZSBxY2E2MTc0KE8pIGNyY3QxMGRpZl9jZSBnYWxjb3JlKE8pCj4gPj5b NjgxLjgyMzg0OV0gQ1BVOiAwIFBJRDogOTQgQ29tbToga3dvcmtlci8wOjEgVGFpbnRlZDogRyAg ICAgICAgICAgTyAgICA0LjE0LjYyLWlteF80LjE0LnkrZ2NkNjNkZWYgIzEKPiA+Pls2ODEuODIz ODUxXSBIYXJkd2FyZSBuYW1lOiBGcmVlc2NhbGUgaS5NWDhNUSBFVksgKERUKQo+ID4+WzY4MS44 MjM4NjJdIFdvcmtxdWV1ZTogZXZlbnRzX2ZyZWV6YWJsZSBfX2R3YzNfc2V0X21vZGUKPiA+Pls2 ODEuODIzODY1XSB0YXNrOiBmZmZmODAwMGI4YTE4MDAwIHRhc2suc3RhY2s6IGZmZmYwMDAwMGEw MTAwMDAKPiA+Pls2ODEuODIzODcyXSBQQyBpcyBhdCB4aGNpX2lycSsweDVmYy8weDE0YjgKPiA+ Pls2ODEuODIzODc1XSBMUiBpcyBhdCB4aGNpX2lycSsweDNjLzB4MTRiOAo+ID4KPiA+PHNuaXA+ Cj4gPgo+ID4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMgYi9kcml2 ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jCj4gPj5pbmRleCBmMGE5OWFhMGFjNTguLjJkYzUxNzZi NzlkMCAxMDA2NDQKPiA+Pi0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKPiA+Pisr KyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMKPiA+PkBAIC0yNjgwLDcgKzI2ODAsOCBA QCBpcnFyZXR1cm5fdCB4aGNpX2lycShzdHJ1Y3QgdXNiX2hjZCAqaGNkKQo+ID4+ICAJfQo+ID4+ ICAJaWYgKHhoY2ktPnhoY19zdGF0ZSAmIFhIQ0lfU1RBVEVfRFlJTkcgfHwKPiA+Pi0JICAgIHho Y2ktPnhoY19zdGF0ZSAmIFhIQ0lfU1RBVEVfSEFMVEVEKSB7Cj4gPj4rCSAgICB4aGNpLT54aGNf c3RhdGUgJiBYSENJX1NUQVRFX0hBTFRFRCB8fAo+ID4+KwkgICAgeGhjaS0+eGhjX3N0YXRlICYg WEhDSV9TVEFURV9SRU1PVklORykgewo+ID4+ICAJCXhoY2lfZGJnKHhoY2ksICJ4SENJIGR5aW5n LCBpZ25vcmluZyBpbnRlcnJ1cHQuICIKPiA+PiAgCQkJCSJTaG91bGRuJ3QgSVJRcyBiZSBkaXNh YmxlZD9cbiIpOwo+ID4+ICAJCS8qIENsZWFyIHRoZSBldmVudCBoYW5kbGVyIGJ1c3kgZmxhZyAo UlcxQyk7Cj4gPgo+ID5XZSBhbHNvIG5vdGljZWQgdGhlIHNhbWUgY3Jhc2ggYXMgeW91IGZvdW5k LCBhbmQgdHJpZWQgdG8gZml4IGl0IGluIGEKPiA+c2ltaWxhciB3YXksIGJ1dCBub3RpY2VkIHRo YXQgdGhpcyBzdGlsbCBhbGxvd3MgYSBtZW1vcnkgbGVhayB0byBoYXBwZW4uCj4gPgo+ID5JdCBz ZWVtcyBmcm9tIGNvbW1pdCBmZTE5MGVkMGQ2MDJhICgieGhjaTogRG8gbm90IGhhbHQgdGhlIGhv c3QgdW50aWwKPiA+Ym90aCBIQ0QgaGF2ZSBkaXNjb25uZWN0ZWQgdGhlaXIgZGV2aWNlcy4iKSB0 aGlzIHdhcyBhZGRlZCB0bwo+ID54aGNpX3N0b3AoKSwgYW5kIGlzIHRoZSByZWFzb24gd2UgZW5j b3VudGVyIHRoZSBOVUxMIHBvaW50ZXIgaW4KPiA+eGhjaV9pcnEoKSB3aGVuIGl0IHRyaWVzIHRv IGFjY2VzcyB4aGNpLT5zaGFyZWRfaGNkLgo+ID4KPiA+CSsgICAgICAgLyogT25seSBoYWx0IGhv c3QgYW5kIGZyZWUgbWVtb3J5IGFmdGVyIGJvdGggaGNkcyBhcmUgcmVtb3ZlZCAqLwo+ID4JCWlm ICghdXNiX2hjZF9pc19wcmltYXJ5X2hjZChoY2QpKSB7Cj4gPgkrICAgICAgICAgICAgICAgLyog dXNiIGNvcmUgd2lsbCBmcmVlIHRoaXMgaGNkIHNob3J0bHksIHVuc2V0IHBvaW50ZXIgKi8KPiA+ CSsgICAgICAgICAgICAgICB4aGNpLT5zaGFyZWRfaGNkID0gTlVMTDsKPiA+CQkJbXV0ZXhfdW5s b2NrKCZ4aGNpLT5tdXRleCk7Cj4gPgkJCXJldHVybjsKPiA+CQl9Cj4gPgo+ID5XaGlsZSB5b3Vy IGZpeCB3aWxsIHNpbXBseSBhYm9ydCB0aGUgeGhjaV9pcnEoKSBmdW5jdGlvbiBpZiBpdAo+ID5l bmNvdW50ZXJzIFhIQ0lfU1RBVEVfUkVNT1ZJTkcsIGR1cmluZyB4aGNpX3BsYXRfcmVtb3ZlKCk6 Cj4gPgo+ID4Jc3RhdGljIGludCB4aGNpX3BsYXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKmRldikKPiA+CXsKPiA+CQlzdHJ1Y3QgdXNiX2hjZCAgKmhjZCA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKGRldik7Cj4gPgkJc3RydWN0IHhoY2lfaGNkICp4aGNpID0gaGNkX3RvX3hoY2koaGNk KTsKPiA+CQlzdHJ1Y3QgY2xrICpjbGsgPSB4aGNpLT5jbGs7Cj4gPgkJc3RydWN0IGNsayAqcmVn X2NsayA9IHhoY2ktPnJlZ19jbGs7Cj4gPgo+ID4JCXhoY2ktPnhoY19zdGF0ZSB8PSBYSENJX1NU QVRFX1JFTU9WSU5HOwo+ID4KPiA+CQl1c2JfcmVtb3ZlX2hjZCh4aGNpLT5zaGFyZWRfaGNkKTsK PiA+CQleXl5eXl5eXl4gY2FsbHMgeGhjaV9zdG9wKCkgYW5kIHNldHMgc2hhcmVkX2hjZD1OVUxM Cj4gPgkJdXNiX3BoeV9zaHV0ZG93bihoY2QtPnVzYl9waHkpOwo+ID4KPiA+CQl1c2JfcmVtb3Zl X2hjZChoY2QpOwo+ID4JCXVzYl9wdXRfaGNkKHhoY2ktPnNoYXJlZF9oY2QpOwo+ID4JCV5eXl5e Xl5eXl5eIHNoYXJlZF9oY2Q9PU5VTEwsIHNvIHRoaXMgaXMgYSBuby1vcAo+ID4KPiA+U2luY2Ug dXNiX3B1dF9oY2QoKSBkb2Vzbid0IGdldCBjYWxsZWQgZm9yIHNoYXJlZF9oY2QsIHdlIGVuZCB1 cAo+ID53aXRoIG9uZSBhZGRpdGlvbmFsIGtyZWYgY291bnQgYW5kIGhlbmNlIGEgbGVhay4KPiAK PiBOaWNlIGNhdGNoLCAgdGhpcyBzYW1lIGlzc3VlIGV4aXN0cyBpbgo+IAo+IHhoY2lfcGNpX3Jl bW92ZSgpCj4gdGVncmFfeHVzYl9yZW1vdmUoKQo+IHhoY2lfbXRrX3JlbW92ZSgpCj4geGhjaV9o aXN0Yl9yZW1vdmUoKQo+IAo+IAo+ID4KPiA+V29uZGVyaW5nIGlmIHdlIG5lZWQgdG8gYWxzbyBy ZW1vdmUgdGhlIHhoY2ktPnNoYXJlZF9oY2QgPSBOVUxMIGZyb20KPiA+eGhjaV9zdG9wKCksIGlu IGFkZGl0aW9uIHRvIHlvdXIgcGF0Y2hlcy4gVGhvdWdodHM/Cj4gCj4gQXQgc29tZSBwb2ludCB0 aGUgeGhjaS0+c2hhcmVkX2hjZCBuZWVkcyB0byBiZSBzZXQgTlVMTCwgaXQgY2FuIGJlIGRvbmUg aW4KPiBpbiB0aGUgeGhjaV9wbGF0X3JlbW92ZSgpLCB4aGNpX3BjaV9yZW1vdmUoKSBhbmQgdGhl IHNpbWlsYXIgcmVtb3ZlIGZ1bmN0aW9ucwo+IGFmdGVyIGNhbGxpbmcgdXNiX3JlbW92ZV9oY2Qo KS4gd2UgY2FuJ3QgcmVseSBvbiB4aGNpLT5zaGFyZWRfaGNkIGFmdGVyIGl0Cj4gaGFzIGJlZW4g cmVtb3ZlZC4KCkN1cnJlbnRseSBpdCBpcyBhbHJlYWR5IGRvbmUgYXMgZm9sbG93czoKCnVzYl9y ZW1vdmVfaGNkKHhoY2ktPnNoYXJlZF9oY2QpCiAgLT4geGhjaV9zdG9wKCkKICAgICAgICAvKiBP bmx5IGhhbHQgaG9zdCBhbmQgZnJlZSBtZW1vcnkgYWZ0ZXIgYm90aCBoY2RzIGFyZSByZW1vdmVk ICovCiAgICAgICAgaWYgKCF1c2JfaGNkX2lzX3ByaW1hcnlfaGNkKGhjZCkpIHsKICAgICAgICAg ICAgICAgIC8qIHVzYiBjb3JlIHdpbGwgZnJlZSB0aGlzIGhjZCBzaG9ydGx5LCB1bnNldCBwb2lu dGVyICovCiAgICAgICAgICAgICAgICB4aGNpLT5zaGFyZWRfaGNkID0gTlVMTDsKCkkgZ3Vlc3Mg YXQgdGhlIHZlcnkgbGVhc3QgeW91ciBzdWdnZXN0aW9uIHRvIGRvIGl0IGZyb20gdGhlCnhoY2lf e3BsYXQscGNpLG10ayx0ZWdyYX1fcmVtb3ZlKCkgY29udGV4dCBtYWtlcyBpdCBtb3JlIGV4cGxp Y2l0IHJhdGhlcgp0aGFuIGhhdmluZyBpdCBhcyBhIHNpZGUgZWZmZWN0IG9mIHVzYl9yZW1vdmVf aGNkKCkveGhjaV9zdG9wKCkuIFRoZSBuZXQKZWZmZWN0IGlzIG1vcmUgb3IgbGVzcyB0aGUgc2Ft ZSB0aG91Z2ggSU1PLgoKPiBUaGUgeEhDIGNvbnRyb2xsZXIgaXMgc3RvcHBlZCBhbmQgaW50ZXJy dXB0cyBkaXNhYmxlZCBvbmx5IGFmdGVyIHRoZSBwcmltYXJ5Cj4gaGNkIChVU0IyKSBpcyByZW1v dmVkLCB0aGlzIGlzIGJlY2F1c2UgdXNiIGNvcmUgd2lsbCB0cnkgdG8gY2xlYW5seSBmbHVzaCBs YXN0IFVTQjIKPiBVUkJzIGFuZCB0YWtlIGRvd24gdGhlIGxhc3QgZW5kcG9pbnRzIHdoZW4gdGhl IFVTQjIgdXNiX3JlbW92ZV9oY2QoaGNkKSBpcyBjYWxsZWQuCj4gV2UgbmVlZCBhIHJ1bm5pbmcg eEhDIGNvbnRyb2xsZXIgdG8gZG8gdGhpcy4KPiAKPiBUaGlzIG1lYW5zIHdlIGNhbiBnZXQgaW50 ZXJydXB0cyB3ZSBuZWVkIHRvIGhhbmRsZSBldmVuIGlmIHRoZSBzaGFyZWRfaGNkIGlzIHJlbW92 ZWQuCj4gU28gSSB0aGluayB3ZSBzdGlsbCBuZWVkIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIGV2ZW4g aWYgWEhDSV9TVEFURV9SRU1PVklORyBmbGFnIGlzIHNldC4KPiAKPiBJIHRoaW5rIHdlIGFsc28g bmVlZCB0byBtYWtlIHRoZSB4aGNpIGludGVycnVwdCBoYW5kbGVyIGNhcGFibGUgb2YgaGFuZGxp bmcgc2l0dWF0aW9ucwo+IHdoZXJlIHhoY2ktPnNoYXJlZF9oY2QgaXMgc2V0IHRvIE5VTEwKPiAK PiBEb2VzIHRoaXMgc291bmQgcmVhc29uYWJsZT8KCkkgc2VlIHlvdXIgcG9pbnQuIFNvIFBldGVy J3MgcGF0Y2hzZXQgbWlnaHQgaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcwpieSBwcmV2ZW50 aW5nIGZ1cnRoZXIgaW50ZXJydXB0cyB0byBiZSBoYW5kbGVkIHdoZW4gdGhlcmUgaXMgc29tZQpu ZWNlc3NhcnkgY2xlYW51cCB0byBiZSBkb25lPwoKSSByZWFsaXplIG5vdyB0aGF0IFBldGVyIGFu ZCBJIGFyZSBib3RoIGVuY291bnRlcmluZyB0aGUgTlVMTCBwb2ludGVyIG9uCjQuMTQuIEkgYmVs aWV2ZSBpdCdzIHdoZW4geGhjaV9pcnEoKSBjYWxscyB0byBoYW5kbGVfcG9ydF9zdGF0dXMoKToK CiAgICAgICAgLyogRmlndXJlIG91dCB3aGljaCB1c2JfaGNkIHRoaXMgcG9ydCBpcyBhdHRhY2hl ZCB0bzoKICAgICAgICAgKiBpcyBpdCBhIFVTQiAzLjAgcG9ydCBvciBhIFVTQiAyLjAvMS4xIHBv cnQ/CiAgICAgICAgICovCiAgICAgICAgbWFqb3JfcmV2aXNpb24gPSB4aGNpLT5wb3J0X2FycmF5 W3BvcnRfaWQgLSAxXTsKCiAgICAgICAgLyogRmluZCB0aGUgcmlnaHQgcm9vdGh1Yi4gKi8KICAg ICAgICBoY2QgPSB4aGNpX3RvX2hjZCh4aGNpKTsKICAgICAgICBpZiAoKG1ham9yX3JldmlzaW9u ID09IDB4MDMpICE9IChoY2QtPnNwZWVkID49IEhDRF9VU0IzKSkKICAgICAgICAgICAgICAgIGhj ZCA9IHhoY2ktPnNoYXJlZF9oY2Q7Cgp0aGVuIGxhdGVyIHRyaWVzIHRvIGRlcmVmZXJlbmNlIGhj ZCB3aGljaCB3YXMgdGFrZW4gZnJvbSB0aGUgTlVMTApzaGFyZWRfaGNkOgoKICAgICAgICBidXNf c3RhdGUgPSAmeGhjaS0+YnVzX3N0YXRlW2hjZF9pbmRleChoY2QpXTsKICAgICAgICBpZiAoaGNk LT5zcGVlZCA+PSBIQ0RfVVNCMykKICAgICAgICAgICAgICAgIHBvcnRfYXJyYXkgPSB4aGNpLT51 c2IzX3BvcnRzOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHBvcnRfYXJyYXkgPSB4aGNp LT51c2IyX3BvcnRzOwoKU2luY2UgNC4xOCB5b3UgaGFkIHJlY2VudGx5IGFkZGVkIGNvbW1pdCA1 MmM3NzU1YmExOWUgKCJ4aGNpOiB4aGNpLXJpbmc6CnVzZSBwb3J0IHN0cnVjdHVyZXMgZm9yIHBv cnQgZXZlbnQgaGFuZGxlciIpIHdoaWNoIHJlcGxhY2VzIHRoZSBhYm92ZQpieSBkZXJpdmluZyBo Y2QgZnJvbSB0aGUgeGhjaS0+aHdfcG9ydHMgYXJyYXkgaW5zdGVhZCBvZiBhc3NpZ25pbmcgaXQK ZnJvbSBzaGFyZWRfaGNkLiBTbyBJIGd1ZXNzIHRoaXMgaXNzdWUgcHJvYmFibHkgd29uJ3QgYmUg ZW5jb3VudGVyZWQgb24KbWFpbmxpbmUgKHNvcnJ5LCBJIGhhdmUgeWV0IHRvIHRlc3QgdGhpcyku IFNpbmNlIHRoZSBwcm9ibGVtIGlzIHRoZXJlCmZyb20gNC4xMiB0byA0LjE3IGR1ZSB0byBjb21t aXQgZmUxOTBlZDBkNjAyLCBkbyB5b3UgaGF2ZSBhIHN1Z2dlc3Rpb24Kb24gaG93IHRvIGZpeCBp dCBmb3IgLXN0YWJsZT8KClRoYW5rcywKSmFjawo=