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: [v6] usb: ohci: Proper handling of ed_rm_list to handle race condition between usb_kill_urb() and finish_unlinks() From: Jeffy Chen Message-Id: <20180208035501.10711-1-jeffy.chen@rock-chips.com> Date: Thu, 8 Feb 2018 11:55:01 +0800 To: linux-kernel@vger.kernel.org Cc: briannorris@chromium.org, stern@rowland.harvard.edu, mka@chromium.org, dianders@chromium.org, AMAN DEEP , stable@vger.kernel.org, Jeffy Chen , Greg Kroah-Hartman , linux-usb@vger.kernel.org List-ID: RnJvbTogQU1BTiBERUVQIDxhbWFuLmRlZXBAc2Ftc3VuZy5jb20+CgpUaGVyZSBpcyBhIHJhY2Ug Y29uZGl0aW9uIGJldHdlZW4gZmluaXNoX3VubGlua3MtPmZpbmlzaF91cmIoKSBmdW5jdGlvbgph bmQgdXNiX2tpbGxfdXJiKCkgaW4gb2hjaSBjb250cm9sbGVyIGNhc2UuIFRoZSBmaW5pc2hfdXJi IGNhbGxzCnNwaW5fdW5sb2NrKCZvaGNpLT5sb2NrKSBiZWZvcmUgdXNiX2hjZF9naXZlYmFja191 cmIoKSBmdW5jdGlvbiBjYWxsLAp0aGVuIGlmIGR1cmluZyB0aGlzIHRpbWUsIHVzYl9raWxsX3Vy YiBpcyBjYWxsZWQgZm9yIGFub3RoZXIgZW5kcG9pbnQsCnRoZW4gbmV3IGVkIHdpbGwgYmUgYWRk ZWQgdG8gZWRfcm1fbGlzdCBhdCBiZWdpbm5pbmcgZm9yIHVubGluaywgYW5kCmVkX3JtX2xpc3Qg d2lsbCBwb2ludCB0byBuZXdseSBhZGRlZC4KCldoZW4gZmluaXNoX3VyYigpIGlzIGNvbXBsZXRl ZCBpbiBmaW5pc2hfdW5saW5rcygpIGFuZCBlZC0+dGRfbGlzdApiZWNvbWVzIGVtcHR5IGFzIGlu IGJlbG93IGNvZGUgKGluIGZpbmlzaF91bmxpbmtzKCkgZnVuY3Rpb24pOgoKICAgICAgICBpZiAo bGlzdF9lbXB0eSgmZWQtPnRkX2xpc3QpKSB7CiAgICAgICAgICAgICAgICAqbGFzdCA9IGVkLT5l ZF9uZXh0OwogICAgICAgICAgICAgICAgZWQtPmVkX25leHQgPSBOVUxMOwogICAgICAgIH0gZWxz ZSBpZiAob2hjaS0+cmhfc3RhdGUgPT0gT0hDSV9SSF9SVU5OSU5HKSB7CiAgICAgICAgICAgICAg ICAqbGFzdCA9IGVkLT5lZF9uZXh0OwogICAgICAgICAgICAgICAgZWQtPmVkX25leHQgPSBOVUxM OwogICAgICAgICAgICAgICAgZWRfc2NoZWR1bGUob2hjaSwgZWQpOwogICAgICAgIH0KClRoZSAq bGFzdCA9IGVkLT5lZF9uZXh0IHdpbGwgbWFrZSBlZF9ybV9saXN0IHRvIHBvaW50IHRvIGVkLT5l ZF9uZXh0CmFuZCBwcmV2aW91c2x5IGFkZGVkIGVkIGJ5IHVzYl9raWxsX3VyYiB3aWxsIGJlIGxl ZnQgdW5yZWZlcmVuY2VkIGJ5CmVkX3JtX2xpc3QuIFRoaXMgY2F1c2VzIHVzYl9raWxsX3VyYigp IGhhbmcgZm9yZXZlciB3YWl0aW5nIGZvcgpmaW5pc2hfdW5saW5rIHRvIHJlbW92ZSBhZGRlZCBl ZCBmcm9tIGVkX3JtX2xpc3QuCgpUaGUgbWFpbiByZWFzb24gZm9yIGhhbmcgaW4gdGhpcyByYWNl IGNvbmR0aW9uIGlzIGFkZGl0aW9uIGFuZCByZW1vdmFsCm9mIGVkIGZyb20gZWRfcm1fbGlzdCBp biB0aGUgYmVnaW5uaW5nIGR1cmluZyB1c2Jfa2lsbF91cmIgYW5kIGxhdGVyCmxhc3QqIGlzIG1v ZGlmaWVkIGluIGZpbmlzaF91bmxpbmtzKCkuCgpBcyBzdWdnZXN0ZWQgYnkgQWxhbiBTdGVybiwg dGhlIHNvbHV0aW9uIGZvciBwcm9wZXIgaGFuZGxpbmcgb2YKb2hjaS0+ZWRfcm1fbGlzdCBpcyB0 byByZW1vdmUgZWQgZnJvbSB0aGUgZWRfcm1fbGlzdCBiZWZvcmUgZmluaXNoaW5nCmFueSBVUkJz LiBUaGVuIGF0IHRoZSBlbmQsIHdlIGNhbiBhZGQgZWQgYmFjayB0byB0aGUgbGlzdCBpZiBuZWNl c3NhcnkuCgpUaGlzIHByb3Blcmx5IGhhbmRsZSB0aGUgdXBkYXRlZCBvaGNpLT5lZF9ybV9saXN0 IGluIHVzYl9raWxsX3VyYigpLgoKRml4ZXM6OTc3ZGNmZGM2MDMxKCJVU0I6T0hDSTpkb24ndCBs b3NlIHRyYWNrIG9mIEVEcyB3aGVuIGEgY29udHJvbGxlciBkaWVzIikKQWNrZWQtYnk6IEFsYW4g U3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CkNDOiA8c3RhYmxlQHZnZXIua2VybmVs Lm9yZz4KU2lnbmVkLW9mZi1ieTogQW1hbiBEZWVwIDxhbWFuLmRlZXBAc2Ftc3VuZy5jb20+ClNp Z25lZC1vZmYtYnk6IEplZmZ5IENoZW4gPGplZmZ5LmNoZW5Acm9jay1jaGlwcy5jb20+Ci0tLQoK Q2hhbmdlcyBpbiB2NjoKVGhpcyBpcyBhIHJlc2VuZCBvZiBBbWFuIERlZXAncyB2NSBwYXRjaCBb MF0sIHdoaWNoIHNvbHZlZCB0aGUgaGFuZyB3ZQpoaXQgWzFdLiAoVGhhbmtzIEFtYW4gOikKClRo ZSB2NSBoYXMgc29tZSBmb3JtYXQgaXNzdWVzLCBzbyBpIHNsaWdodGx5IGFkanVzdCB0aGUgY29t bWl0IG1lc3NhZ2UuCgpbMF0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtdXNi L21zZzEyOTAxMC5odG1sClsxXSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0v aXNzdWVzL2RldGFpbD9pZD04MDM3NDkKCiBkcml2ZXJzL3VzYi9ob3N0L29oY2ktcS5jIHwgMTcg KysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1xLmMgYi9kcml2 ZXJzL3VzYi9ob3N0L29oY2ktcS5jCmluZGV4IGIyZWM4YzM5OTM2My4uNGNjYjg1YTY3YmIzIDEw MDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktcS5jCisrKyBiL2RyaXZlcnMvdXNiL2hv c3Qvb2hjaS1xLmMKQEAgLTEwMTksNiArMTAxOSw4IEBAIHN0YXRpYyB2b2lkIGZpbmlzaF91bmxp bmtzKHN0cnVjdCBvaGNpX2hjZCAqb2hjaSkKIAkJICogaGF2ZSBtb2RpZmllZCB0aGlzIGxpc3Qu ICBub3JtYWxseSBpdCdzIGp1c3QgcHJlcGVuZGluZwogCQkgKiBlbnRyaWVzICh3aGljaCB3ZSdk IGlnbm9yZSksIGJ1dCBwYXJhbm9pYSB3b24ndCBodXJ0LgogCQkgKi8KKwkJKmxhc3QgPSBlZC0+ ZWRfbmV4dDsKKwkJZWQtPmVkX25leHQgPSBOVUxMOwogCQltb2RpZmllZCA9IDA7CiAKIAkJLyog dW5saW5rIHVyYnMgYXMgcmVxdWVzdGVkLCBidXQgcmVzY2FuIHRoZSBsaXN0IGFmdGVyCkBAIC0x MDc3LDIxICsxMDc5LDIyIEBAIHN0YXRpYyB2b2lkIGZpbmlzaF91bmxpbmtzKHN0cnVjdCBvaGNp X2hjZCAqb2hjaSkKIAkJCWdvdG8gcmVzY2FuX3RoaXM7CiAKIAkJLyoKLQkJICogSWYgbm8gVERz IGFyZSBxdWV1ZWQsIHRha2UgRUQgb2ZmIHRoZSBlZF9ybV9saXN0LgorCQkgKiBJZiBubyBURHMg YXJlIHF1ZXVlZCwgRUQgaXMgbm93IGlkbGUuCiAJCSAqIE90aGVyd2lzZSwgaWYgdGhlIEhDIGlz IHJ1bm5pbmcsIHJlc2NoZWR1bGUuCi0JCSAqIElmIG5vdCwgbGVhdmUgaXQgb24gdGhlIGxpc3Qg Zm9yIGZ1cnRoZXIgZGVxdWV1ZXMuCisJCSAqIElmIHRoZSBIQyBpc24ndCBydW5uaW5nLCBhZGQg RUQgYmFjayB0byB0aGUKKwkJICogc3RhcnQgb2YgdGhlIGxpc3QgZm9yIGxhdGVyIHByb2Nlc3Np bmcuCiAJCSAqLwogCQlpZiAobGlzdF9lbXB0eSgmZWQtPnRkX2xpc3QpKSB7Ci0JCQkqbGFzdCA9 IGVkLT5lZF9uZXh0OwotCQkJZWQtPmVkX25leHQgPSBOVUxMOwogCQkJZWQtPnN0YXRlID0gRURf SURMRTsKIAkJCWxpc3RfZGVsKCZlZC0+aW5fdXNlX2xpc3QpOwogCQl9IGVsc2UgaWYgKG9oY2kt PnJoX3N0YXRlID09IE9IQ0lfUkhfUlVOTklORykgewotCQkJKmxhc3QgPSBlZC0+ZWRfbmV4dDsK LQkJCWVkLT5lZF9uZXh0ID0gTlVMTDsKIAkJCWVkX3NjaGVkdWxlKG9oY2ksIGVkKTsKIAkJfSBl bHNlIHsKLQkJCWxhc3QgPSAmZWQtPmVkX25leHQ7CisJCQllZC0+ZWRfbmV4dCA9IG9oY2ktPmVk X3JtX2xpc3Q7CisJCQlvaGNpLT5lZF9ybV9saXN0ID0gZWQ7CisJCQkvKiBEb24ndCBsb29wIG9u IHRoZSBzYW1lIEVEICovCisJCQlpZiAobGFzdCA9PSAmb2hjaS0+ZWRfcm1fbGlzdCkKKwkJCQls YXN0ID0gJmVkLT5lZF9uZXh0OwogCQl9CiAKIAkJaWYgKG1vZGlmaWVkKQo=