Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/5] USB: serial: fix unthrottle races From: Johan Hovold Message-Id: <20190425160540.10036-2-johan@kernel.org> Date: Thu, 25 Apr 2019 18:05:36 +0200 To: Alan Stern , Oliver Neukum , Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org, Johan Hovold List-ID: Rml4IHR3byBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgbGVhZCB0 byBtZW1vcnkKY29ycnVwdGlvbiBvciBsZWF2ZSB0aGUgcG9ydCB0aHJvdHRsZWQgdW50aWwgaXQg aXMgcmVvcGVuZWQgKG9uIHdlYWtseQpvcmRlcmVkIHN5c3RlbXMpLCByZXNwZWN0aXZlbHksIHdo ZW4gcmVhZC1VUkIgY29tcGxldGlvbiByYWNlcyB3aXRoCnVudGhyb3R0bGUoKS4KCkZpcnN0LCB0 aGUgVVJCIG11c3Qgbm90IGJlIG1hcmtlZCBhcyBmcmVlIGJlZm9yZSBwcm9jZXNzaW5nIGlzIGNv bXBsZXRlCnRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBzdWJtaXR0ZWQgYnkgdW50aHJvdHRsZSgp IG9uIGFub3RoZXIgQ1BVLgoKCUNQVSAxCQkJCUNQVSAyCgk9PT09PT09PT09PT09PT09CQk9PT09 PT09PT09PT09PT09Cgljb21wbGV0ZSgpCQkJdW50aHJvdHRsZSgpCgkgIHByb2Nlc3NfdXJiKCk7 CgkgIHNtcF9tYl9fYmVmb3JlX2F0b21pYygpOwoJICBzZXRfYml0KGksIGZyZWUpOwkJICBpZiAo dGVzdF9hbmRfY2xlYXJfYml0KGksIGZyZWUpKQoJICAJCQkJCSAgc3VibWl0X3VyYigpOwoKU2Vj b25kLCB0aGUgVVJCIG11c3QgYmUgbWFya2VkIGFzIGZyZWUgYmVmb3JlIGNoZWNraW5nIHRoZSB0 aHJvdHRsZWQKZmxhZyB0byBwcmV2ZW50IHVudGhyb3R0bGUoKSBvbiBhbm90aGVyIENQVSBmcm9t IGZhaWxpbmcgdG8gb2JzZXJ2ZSB0aGF0CnRoZSBVUkIgbmVlZHMgdG8gYmUgc3VibWl0dGVkIGlm IGNvbXBsZXRlKCkgc2VlcyB0aGF0IHRoZSB0aHJvdHRsZWQgZmxhZwppcyBzZXQuCgoJQ1BVIDEJ CQkJQ1BVIDIKCT09PT09PT09PT09PT09PT0JCT09PT09PT09PT09PT09PT0KCWNvbXBsZXRlKCkJ CQl1bnRocm90dGxlKCkKCSAgc2V0X2JpdChpLCBmcmVlKTsJCSAgdGhyb3R0bGVkID0gMDsKCSAg c21wX21iX19hZnRlcl9hdG9taWMoKTsJICBzbXBfbWIoKTsKCSAgaWYgKHRocm90dGxlZCkJCSAg aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChpLCBmcmVlKSkKCSAgCSAgcmV0dXJuOwkJCSAgc3VibWl0 X3VyYigpOwoKTm90ZSB0aGF0IHRlc3RfYW5kX2NsZWFyX2JpdCgpIG9ubHkgaW1wbGllcyBiYXJy aWVycyB3aGVuIHRoZSB0ZXN0IGlzCnN1Y2Nlc3NmdWwuIFRvIGhhbmRsZSB0aGUgY2FzZSB3aGVy ZSB0aGUgVVJCIGlzIHN0aWxsIGluIHVzZSBhbiBleHBsaWNpdApiYXJyaWVyIG5lZWRzIHRvIGJl IGFkZGVkIHRvIHVudGhyb3R0bGUoKSBmb3IgdGhlIHNlY29uZCByYWNlIGNvbmRpdGlvbi4KCkZp eGVzOiBkODNiNDA1MzgzYzkgKCJVU0I6IHNlcmlhbDogYWRkIHN1cHBvcnQgZm9yIG11bHRpcGxl IHJlYWQgdXJicyIpClNpZ25lZC1vZmYtYnk6IEpvaGFuIEhvdm9sZCA8am9oYW5Aa2VybmVsLm9y Zz4KLS0tCiBkcml2ZXJzL3VzYi9zZXJpYWwvZ2VuZXJpYy5jIHwgMzkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZ2VuZXJpYy5j IGIvZHJpdmVycy91c2Ivc2VyaWFsL2dlbmVyaWMuYwppbmRleCAyMjc0ZDk2MjVmNjMuLjBmZmY0 OTY4ZWExYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2dlbmVyaWMuYworKysgYi9k cml2ZXJzL3VzYi9zZXJpYWwvZ2VuZXJpYy5jCkBAIC0zNzYsNiArMzc2LDcgQEAgdm9pZCB1c2Jf c2VyaWFsX2dlbmVyaWNfcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIAlzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0ID0gdXJiLT5jb250ZXh0OwogCXVuc2lnbmVkIGNoYXIg KmRhdGEgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCWJv b2wgc3RvcHBlZCA9IGZhbHNlOwogCWludCBzdGF0dXMgPSB1cmItPnN0YXR1czsKIAlpbnQgaTsK IApAQCAtMzgzLDMzICszODQsNTEgQEAgdm9pZCB1c2Jfc2VyaWFsX2dlbmVyaWNfcmVhZF9idWxr X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIAkJaWYgKHVyYiA9PSBwb3J0LT5yZWFkX3VyYnNb aV0pCiAJCQlicmVhazsKIAl9Ci0Jc2V0X2JpdChpLCAmcG9ydC0+cmVhZF91cmJzX2ZyZWUpOwog CiAJZGV2X2RiZygmcG9ydC0+ZGV2LCAiJXMgLSB1cmIgJWQsIGxlbiAlZFxuIiwgX19mdW5jX18s IGksCiAJCQkJCQkJdXJiLT5hY3R1YWxfbGVuZ3RoKTsKIAlzd2l0Y2ggKHN0YXR1cykgewogCWNh c2UgMDoKKwkJdXNiX3NlcmlhbF9kZWJ1Z19kYXRhKCZwb3J0LT5kZXYsIF9fZnVuY19fLCB1cmIt PmFjdHVhbF9sZW5ndGgsCisJCQkJCQkJZGF0YSk7CisJCXBvcnQtPnNlcmlhbC0+dHlwZS0+cHJv Y2Vzc19yZWFkX3VyYih1cmIpOwogCQlicmVhazsKIAljYXNlIC1FTk9FTlQ6CiAJY2FzZSAtRUNP Tk5SRVNFVDoKIAljYXNlIC1FU0hVVERPV046CiAJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0g dXJiIHN0b3BwZWQ6ICVkXG4iLAogCQkJCQkJCV9fZnVuY19fLCBzdGF0dXMpOwotCQlyZXR1cm47 CisJCXN0b3BwZWQgPSB0cnVlOworCQlicmVhazsKIAljYXNlIC1FUElQRToKIAkJZGV2X2Vycigm cG9ydC0+ZGV2LCAiJXMgLSB1cmIgc3RvcHBlZDogJWRcbiIsCiAJCQkJCQkJX19mdW5jX18sIHN0 YXR1cyk7Ci0JCXJldHVybjsKKwkJc3RvcHBlZCA9IHRydWU7CisJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCWRldl9kYmcoJnBvcnQtPmRldiwgIiVzIC0gbm9uemVybyB1cmIgc3RhdHVzOiAlZFxuIiwK IAkJCQkJCQlfX2Z1bmNfXywgc3RhdHVzKTsKLQkJZ290byByZXN1Ym1pdDsKKwkJYnJlYWs7CiAJ fQogCi0JdXNiX3NlcmlhbF9kZWJ1Z19kYXRhKCZwb3J0LT5kZXYsIF9fZnVuY19fLCB1cmItPmFj dHVhbF9sZW5ndGgsIGRhdGEpOwotCXBvcnQtPnNlcmlhbC0+dHlwZS0+cHJvY2Vzc19yZWFkX3Vy Yih1cmIpOworCS8qCisJICogTWFrZSBzdXJlIFVSQiBwcm9jZXNzaW5nIGlzIGRvbmUgYmVmb3Jl IG1hcmtpbmcgYXMgZnJlZSB0byBhdm9pZAorCSAqIHJhY2luZyB3aXRoIHVudGhyb3R0bGUoKSBv biBhbm90aGVyIENQVS4gTWF0Y2hlcyB0aGUgYmFycmllcnMKKwkgKiBpbXBsaWVkIGJ5IHRoZSB0 ZXN0X2FuZF9jbGVhcl9iaXQoKSBpbgorCSAqIHVzYl9zZXJpYWxfZ2VuZXJpY19zdWJtaXRfcmVh ZF91cmIoKS4KKwkgKi8KKwlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKKwlzZXRfYml0KGksICZw b3J0LT5yZWFkX3VyYnNfZnJlZSk7CisJLyoKKwkgKiBNYWtlIHN1cmUgVVJCIGlzIG1hcmtlZCBh cyBmcmVlIGJlZm9yZSBjaGVja2luZyB0aGUgdGhyb3R0bGVkIGZsYWcKKwkgKiB0byBhdm9pZCBy YWNpbmcgd2l0aCB1bnRocm90dGxlKCkgb24gYW5vdGhlciBDUFUuIE1hdGNoZXMgdGhlCisJICog c21wX21iKCkgaW4gdW50aHJvdHRsZSgpLgorCSAqLworCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7 CisKKwlpZiAoc3RvcHBlZCkKKwkJcmV0dXJuOwogCi1yZXN1Ym1pdDoKIAkvKiBUaHJvdHRsZSB0 aGUgZGV2aWNlIGlmIHJlcXVlc3RlZCBieSB0dHkgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmcG9y dC0+bG9jaywgZmxhZ3MpOwogCXBvcnQtPnRocm90dGxlZCA9IHBvcnQtPnRocm90dGxlX3JlcTsK QEAgLTQ4NCw2ICs1MDMsMTIgQEAgdm9pZCB1c2Jfc2VyaWFsX2dlbmVyaWNfdW50aHJvdHRsZShz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQogCXBvcnQtPnRocm90dGxlZCA9IHBvcnQtPnRocm90dGxl X3JlcSA9IDA7CiAJc3Bpbl91bmxvY2tfaXJxKCZwb3J0LT5sb2NrKTsKIAorCS8qCisJICogTWF0 Y2hlcyB0aGUgc21wX21iX19hZnRlcl9hdG9taWMoKSBpbgorCSAqIHVzYl9zZXJpYWxfZ2VuZXJp Y19yZWFkX2J1bGtfY2FsbGJhY2soKS4KKwkgKi8KKwlzbXBfbWIoKTsKKwogCWlmICh3YXNfdGhy b3R0bGVkKQogCQl1c2Jfc2VyaWFsX2dlbmVyaWNfc3VibWl0X3JlYWRfdXJicyhwb3J0LCBHRlBf S0VSTkVMKTsKIH0K