Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [02/20] usb: host: xhci: check DYING state earlier From: Mathias Nyman Message-Id: <71780ddd-d0f5-e580-af3f-401d33e36506@linux.intel.com> Date: Wed, 2 May 2018 16:02:52 +0300 To: Felipe Balbi Cc: Linux USB , Alan Stern List-ID: T24gMDIuMDUuMjAxOCAxNDo0NiwgRmVsaXBlIEJhbGJpIHdyb3RlOgo+IAo+IEhpLAo+IAo+IE1h dGhpYXMgTnltYW4gPG1hdGhpYXMubnltYW5AbGludXguaW50ZWwuY29tPiB3cml0ZXM6Cj4+IE9u IDE3LjA0LjIwMTggMTA6MDcsIEZlbGlwZSBCYWxiaSB3cm90ZToKPj4+Cj4+PiBIaSwKPj4+Cj4+ PiBNYXRoaWFzIE55bWFuIDxtYXRoaWFzLm55bWFuQGxpbnV4LmludGVsLmNvbT4gd3JpdGVzOgo+ Pj4+IE9uIDE2LjA0LjIwMTggMTU6MjksIEZlbGlwZSBCYWxiaSB3cm90ZToKPj4+Pj4gSW5zdGVh ZCBvZiBhbGxvY2F0aW5nIHVyYiBwcml2IGFuZCwgbWF5YmUsIGJhaWwgb3V0IGR1ZSB0byB4aGNp IGJlaW5nCj4+Pj4+IGluIERZSU5HIHN0YXRlLCB3ZSBjYW4gbW92ZSB0aGUgY2hlY2sgZWFybGll ciBhbmQgYXZvaWQgdGhlIG1lbW9yeQo+Pj4+PiBhbGxvY2F0aW9uIGFsdG9nZXRoZXIuCj4+Pj4K Pj4+PiBUaGlzIGFsc28gbW92ZXMgY2hlY2tpbmcgZm9yIERZSU5HIG91dHNpZGUgdGhlIGxvY2su Cj4+Pj4KPj4+PiBNb3N0IGNhc2VzIHNldCBEWUlORyB3aXRoIGxvY2sgaGVsZCwgc28gaWYgd2Ug Zmlyc3QgZ2V0IHRoZSBsb2NrIGJlZm9yZQo+Pj4+IGNoZWNraW5nIERZSU5HIHdlIGhhdmUgYSBi ZXR0ZXIgY2hhbmNlIG9mIG5vdCBiZWluZyBpbiB0aGUgcHJvY2VzcyBvZiBkeWluZy4KPj4+Cj4+ PiBwcmV0dHkgc3VyZSB0aGF0J3MgYXRvbWljLCB0aG91Z2guCj4+Cj4+IFRoYXQncyBub3Qgd2hh dCBJJ20gYWZ0ZXIsIHlvdXIgZml4IGlzIGNsZWFuaW5nIHVwIGNvZGUgaW4gdGhlIGNhc2Ugd2hl cmUgRFlJTkcgZmxhZyBpcwo+PiBzZXQgYmVmb3JlIHhoY2lfdXJiX2VucXVldWUoKSBpcyBjYWxs ZWQuIEknbSB3b3JyaWVkIGFib3V0IHRoZSBjYXNlIHdoZW4gc2V0dGluZyBEWUlORyBmbGFnIHJh Y2VzCj4+IHdpdGggeGhjaV91cmJfZW5xdWV1ZSgpLiBpLmUuIHhoY2lfdXJiX2VucXVldWUoKSBp cyBzcGlubmluZyBvbiB0aGUgbG9jaywgd2FpdGluZywgd2hpbGUKPj4gc29tZSBvdGhlciBwYXJ0 IG9mIHRoZSBkcml2ZXIgaXMgZGVzcGVyYXRlbHkgdHJ5aW5nIHRvIGFjY2VzcyBodyB3aXRoIGxv Y2sgaGVsZCwgZmFpbGluZywKPj4gZmluYWxseSBzZXR0aW5nIERZSU5HIGZsYWcsIGFuZCB0aGVu IHJlbGVhc2luZyBsb2NrLgo+Pgo+PiBJZiB0aGUgY2hlY2sgaXMgZG9uZSBiZWZvcmUgdGFraW5n IHRoZSBsb2NrIHRoZW4gdGhlIFVSQiBtaWdodCBiZSBxdWV1ZWQgb24gZHlpbmcgZGV2aWNlLAo+ PiBhdCBhIHRpbWUgd2hlbiB4aGNpX2hjX2RpZWQgYWxyZWFkeSBzdGFydGVkIGNhbmNlbGxpbmcg YW5kIGdpdmluZyBiYWNrIGFsbCBxdWV1ZWQgVVJCCj4gCj4gdGhpcyBjYW4gb25seSBoYXBwZW4g aWYgY2hlY2tpbmcgdGhhdCBiaXQgaXNuJ3QgYW4gYXRvbWljIG9wZXJhdGlvbgo+IHdoaWNoLCBB RkFJQ1QsIGl0IGlzLiBJT1csIGl0IHdvdWxkIGJlIHRoZSBzYW1lIGlmIHlvdSB3ZXJlIHRvIGNo YW5nZToKPiAKPiAJaWYgKGEgJiBiKQo+ICAgICAgICAgIAlyZXR1cm4gLTE7Cj4gCj4gdG86Cj4g Cj4gCWlmICh0ZXN0X2JpdChiLCAmYSkpCj4gICAgICAgICAgCXJldHVybiAtMTsKPiAKPiByaWdo dD8gTm93LCBpZiB0aGlzIGlzbid0IGFuIGF0b21pYyBvcGVyYXRpb24sIEknbSBoYXBweSB0byBi ZSBlZHVjYXRlZC4KCkFnYWluLCBpdCdzIG5vdCBhYm91dCBiZWluZyBhdG9taWMuCkFzIGFuIGV4 YW1wbGUgbGV0cyB0YWtlIHRoZSBnZXQgcG9ydCBzdGF0dXMgcmVxdWVzdCByYWNpbmcgd2l0aCBx dWV1ZWluZyBhIFVSQi4KQWZ0ZXIgdGhpcyBwYXRjaCB0aGUgZm9sbG93aW5nIGlzIHBvc3NpYmxl OgoKCkNQVTowCQkJCQlDUFU6MQpnZXQgcG9ydCBzdGF0dXMJCQkJcXVldWUgVVJCCgp4aGNpX2h1 Yl9jb250cm9sKCkJCQl4aGNpX3F1ZXVlX3VyYigpCQpzcGluX2xvY2sobG9jayksIGdvdCBpdAkJ CVhIQ0lfU1RBVEVfRFlJTkc/IG5vLCBjb250aW51ZQp0ZW1wID0gcmVhZGwocG9ydF9hcnJheVt3 SW5kZXhdKQlzcGluX2xvY2sobG9jayksIGFscmVhZHkgdGFrZW4sIHNwaW4gaGVyZQppZiAodGVt cCA9PSB+KHUzMikwKSB7CnhoY2lfaGNfZGllZCh4aGNpKQkJCQkKeGhjX3N0YXRlIHw9IFhIQ0lf U1RBVEVfRFlJTkcKY2xlYW51cF9jb21tYW5kX3F1ZXVlKCkKa2lsbF9lbmRwb2ludF91cmJzKCkK c3Bpbl91bmxvY2sobG9jaykgLy8gYXQgVVJCIGdpdmViYWNrCXNwaW5fbG9jayhsb2NrKSBnb3Qg aXQsIGZpbmFsbHkKCQkJCQlhbGxvY2F0ZSB1cmJfcHJpdiwgcGx1cyBvdGhlciBzdHVmZgoJCQkJ CXhoY2lfcXVldWVfKl90eCgpCQkKCQkJCQljb3VudF90cmJzX25lZWRlZCh1cmIpCgkJCQkJcHJl cGFyZV90cmFuc2ZlcigpCgkJCQkJcXVldWVfdHJiKCkgLy8gZm9yIGVhY2ggdHJiCgpTbyBpdHMg bW9yZSBsaWtlbHkgd2UgZW5kIHVwIHF1ZXVpbmcgVVJCcyBvbiBhIGRlYWQgaG9zdCwgYSBob3N0 IHRoYXQgdGhlIGRyaXZlciBhbHJlYWR5CnN0YXJ0ZWQgdGVhcmluZyBkb3duLCBmcmVlaW5nIFVS QnMuIHhoY2lfaHViX2NvbnRyb2woKSB3YXMganVzdCBvbmUgZXhhbXBsZSwKeW91IGNhbiByZXBs YWNlIGl0IHdpdGggYWxtb3N0IGFueSBmdW5jdGlvbiB0aGF0IGNhbGxzIHhoY2lfaGNfZGllZCgp Cgo+IAo+Pj4+IFNtYWxsIHRoaW5nLCBidXQgc28gaXMgdGhpcyBjbGVhbnVwLCBzbyBub3Qgc3Vy ZSBpdHMgd29ydGggdGhlIGNoYW5nZQo+Pj4KPj4+IExvb2sgYXQgdGhlIHJlc3VsdC4gV2l0aCB0 aGlzIGNoYW5nZSB3ZSBkb24ndCBuZWVkIHRvIHRha2UgYSBsb2NrLAo+Pj4gYWxsb2NhdGUgbWVt b3J5LCBzZWFyY2ggZm9yIGVuZHBvaW50IGluZGV4LCBzZWFyY2ggZm9yIGVuZHBvaW50Cj4+PiBz dGF0ZS4gQWxsIG9mIHRob3NlIGFyZSBuZWVkZWQgZm9yIHByb3BlciBvcGVyYXRpb24gb2YgdGhl IGZ1bmN0aW9uLCBidXQKPj4+IGlmIHRoZSBjb250cm9sbGVyIGhhcyBhbHJlYWR5IGRpZWQsIHRo ZXJlJ3Mgbm8gcG9pbnQgaW4gZ29pbmcgYW55Cj4+PiBmdXJ0aGVyLgo+Pgo+PiBCdXQgd2UgbWln aHQgbWlzcyB0aGUgZmFjdCB0aGF0IGhvc3QgZGllZCwgYW5kIGdvIGV2ZW4gZnVydGhlciwgYWRk aW5nIFVSQiB0byBsaXN0LAo+PiB3cml0aW5nIFRSQnMgdG8gcmluZ2J1ZmZlcnMgZXRjLgo+Pgo+ PiBJbiBjb2RlIHdlIHNhdmUgb25lIGxpbmUsCj4+IGdvdG86IGZyZWVfcHJpdgo+IAo+IFdlJ3Jl IHNhdmluZyBhIGxvdCBtb3JlIHRoYW4gdGhhdCwgYWN0dWFsbHkuIEFsbCBvZiB0aGUgZm9sbG93 aW5nIGVuZHMKPiB1cCBiZWluZyBza2lwcGVkLiBBbGwgb2YgdGhlc2UgYXJlIHVubmVjZXNzYXJ5 IHdvcmsgd2hlbiB4SEMgaGFzIGFscmVhZHkKPiBkaWVkOgoKSW4gbGluZXMgb2YgY29kZSBpbiB0 aGUgZHJpdmVyIGl0J3MganVzdCBvbmUgbGluZS4KCkluIGV4dHJhIGNvZGUgYmVpbmcgcnVuIGl0 J3MgYSBnYW1ibGUuCkJlZm9yZSB0aGUgcGF0Y2ggd2UgcmFuIHRoZSBiZWxvdyBjb2RlLCBhZnRl ciB0aGUgcGF0Y2ggaXQncyBlaXRoZXIgbm90aGluZywgb3IgdGhlIGJlbG93CmNvZGUgcGx1cyBh bGwgdGhlIFVSQi9UUkIgcXVldWluZyBjb2RlLgoKPiAKPiA4PC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IAo+ IHNsb3RfaWQgPSB1cmItPmRldi0+c2xvdF9pZDsKPiBlcF9pbmRleCA9IHhoY2lfZ2V0X2VuZHBv aW50X2luZGV4KCZ1cmItPmVwLT5kZXNjKTsKPiBlcF9zdGF0ZSA9ICZ4aGNpLT5kZXZzW3Nsb3Rf aWRdLT5lcHNbZXBfaW5kZXhdLmVwX3N0YXRlOwo+IAo+IGlmICghSENEX0hXX0FDQ0VTU0lCTEUo aGNkKSkgewo+ICAgICAgICAgIGlmICghaW5faW50ZXJydXB0KCkpCj4gICAgICAgICAgICAgICAg ICB4aGNpX2RiZyh4aGNpLCAidXJiIHN1Ym1pdHRlZCBkdXJpbmcgUENJIHN1c3BlbmRcbiIpOwo+ ICAgICAgICAgIHJldHVybiAtRVNIVVRET1dOOwo+IH0KPiAKPiBpZiAodXNiX2VuZHBvaW50X3hm ZXJfaXNvYygmdXJiLT5lcC0+ZGVzYykpCj4gICAgICAgICAgbnVtX3RkcyA9IHVyYi0+bnVtYmVy X29mX3BhY2tldHM7Cj4gZWxzZSBpZiAodXNiX2VuZHBvaW50X2lzX2J1bGtfb3V0KCZ1cmItPmVw LT5kZXNjKSAmJgo+ICAgICAgdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoID4gMCAmJgo+ICAg ICAgdXJiLT50cmFuc2Zlcl9mbGFncyAmIFVSQl9aRVJPX1BBQ0tFVCAmJgo+ICAgICAgISh1cmIt PnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggJSB1c2JfZW5kcG9pbnRfbWF4cCgmdXJiLT5lcC0+ZGVz YykpKQo+ICAgICAgICAgIG51bV90ZHMgPSAyOwo+IGVsc2UKPiAgICAgICAgICBudW1fdGRzID0g MTsKPiAKPiB1cmJfcHJpdiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB1cmJfcHJpdikgKwo+ICAg ICAgICAgICAgICAgICAgICAgbnVtX3RkcyAqIHNpemVvZihzdHJ1Y3QgeGhjaV90ZCksIG1lbV9m bGFncyk7Cj4gaWYgKCF1cmJfcHJpdikKPiAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAKPiB1 cmJfcHJpdi0+bnVtX3RkcyA9IG51bV90ZHM7Cj4gdXJiX3ByaXYtPm51bV90ZHNfZG9uZSA9IDA7 Cj4gdXJiLT5oY3ByaXYgPSB1cmJfcHJpdjsKPiAKPiB0cmFjZV94aGNpX3VyYl9lbnF1ZXVlKHVy Yik7Cj4gCj4gaWYgKHVzYl9lbmRwb2ludF94ZmVyX2NvbnRyb2woJnVyYi0+ZXAtPmRlc2MpKSB7 Cj4gICAgICAgICAgLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBtYXggcGFja2V0IHNpemUgZm9yIHRo ZSBkZWZhdWx0IGNvbnRyb2wKPiAgICAgICAgICAgKiBlbmRwb2ludCBjaGFuZ2VkIGR1cmluZyBG UyBkZXZpY2UgZW51bWVyYXRpb24KPiAgICAgICAgICAgKi8KPiAgICAgICAgICBpZiAodXJiLT5k ZXYtPnNwZWVkID09IFVTQl9TUEVFRF9GVUxMKSB7Cj4gICAgICAgICAgICAgICAgICByZXQgPSB4 aGNpX2NoZWNrX21heHBhY2tldCh4aGNpLCBzbG90X2lkLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVwX2luZGV4LCB1cmIpOwo+ICAgICAgICAgICAgICAgICAgaWYgKHJldCA8 IDApIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgeGhjaV91cmJfZnJlZV9wcml2KHVyYl9w cml2KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5oY3ByaXYgPSBOVUxMOwo+ICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgICAgICAgICAgICAgfQo+ ICAgICAgICAgIH0KPiB9Cj4gCj4gc3Bpbl9sb2NrX2lycXNhdmUoJnhoY2ktPmxvY2ssIGZsYWdz KTsKPiAKPiA4PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Ci0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMg bGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBv ZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBp bmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK