Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [4/5] USB: cdc-acm: fix unthrottle races From: Johan Hovold Message-Id: <20190425160540.10036-5-johan@kernel.org> Date: Thu, 25 Apr 2019 18:05:39 +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 dGVzdF9hbmRfY2xlYXJfYml0KGksIGZyZWUpKQoJCQkJCQkgIHN1Ym1pdF91cmIoKTsKClNlY29u ZCwgdGhlIFVSQiBtdXN0IGJlIG1hcmtlZCBhcyBmcmVlIGJlZm9yZSBjaGVja2luZyB0aGUgdGhy b3R0bGVkCmZsYWcgdG8gcHJldmVudCB1bnRocm90dGxlKCkgb24gYW5vdGhlciBDUFUgZnJvbSBm YWlsaW5nIHRvIG9ic2VydmUgdGhhdAp0aGUgVVJCIG5lZWRzIHRvIGJlIHN1Ym1pdHRlZCBpZiBj b21wbGV0ZSgpIHNlZXMgdGhhdCB0aGUgdGhyb3R0bGVkIGZsYWcKaXMgc2V0LgoKCUNQVSAxCQkJ CUNQVSAyCgk9PT09PT09PT09PT09PT09CQk9PT09PT09PT09PT09PT09Cgljb21wbGV0ZSgpCQkJ dW50aHJvdHRsZSgpCgkgIHNldF9iaXQoaSwgZnJlZSk7CQkgIHRocm90dGxlZCA9IDA7CgkgIHNt cF9tYl9fYWZ0ZXJfYXRvbWljKCk7CSAgc21wX21iKCk7CgkgIGlmICh0aHJvdHRsZWQpCQkgIGlm ICh0ZXN0X2FuZF9jbGVhcl9iaXQoaSwgZnJlZSkpCgkJICByZXR1cm47CQkJICBzdWJtaXRfdXJi KCk7CgpOb3RlIHRoYXQgdGVzdF9hbmRfY2xlYXJfYml0KCkgb25seSBpbXBsaWVzIGJhcnJpZXJz IHdoZW4gdGhlIHRlc3QgaXMKc3VjY2Vzc2Z1bC4gVG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRo ZSBVUkIgaXMgc3RpbGwgaW4gdXNlIGFuIGV4cGxpY2l0CmJhcnJpZXIgbmVlZHMgdG8gYmUgYWRk ZWQgdG8gdW50aHJvdHRsZSgpIGZvciB0aGUgc2Vjb25kIHJhY2UgY29uZGl0aW9uLgoKQWxzbyBu b3RlIHRoYXQgdGhlIGZpcnN0IHJhY2Ugd2FzIGZpeGVkIGJ5IDM2ZTU5ZTBkNzBkNiAoImNkYy1h Y206IGZpeApyYWNlIGJldHdlZW4gY2FsbGJhY2sgYW5kIHVudGhyb3R0bGUiKSBiYWNrIGluIDIw MTUsIGJ1dCB0aGUgYnVnIHdhcwpyZWludHJvZHVjZWQgYSB5ZWFyIGxhdGVyLgoKRml4ZXM6IDFh YmE1NzlmM2NmNSAoImNkYy1hY206IGhhbmRsZSByZWFkIHBpcGUgZXJyb3JzIikKRml4ZXM6IDA4 OGM2NGY4MTI4NCAoIlVTQjogY2RjLWFjbTogcmUtd3JpdGUgcmVhZCBwcm9jZXNzaW5nIikKU2ln bmVkLW9mZi1ieTogSm9oYW4gSG92b2xkIDxqb2hhbkBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMv dXNiL2NsYXNzL2NkYy1hY20uYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy9j ZGMtYWNtLmMKaW5kZXggZWM2NjZlYjRiN2I0Li5jMDNhYTg1NTA5ODAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNt LmMKQEAgLTQ3MCwxMiArNDcwLDEyIEBAIHN0YXRpYyB2b2lkIGFjbV9yZWFkX2J1bGtfY2FsbGJh Y2soc3RydWN0IHVyYiAqdXJiKQogCXN0cnVjdCBhY20gKmFjbSA9IHJiLT5pbnN0YW5jZTsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGF0dXMgPSB1cmItPnN0YXR1czsKKwlib29sIHN0 b3BwZWQgPSBmYWxzZTsKKwlib29sIHN0YWxsZWQgPSBmYWxzZTsKIAogCWRldl92ZGJnKCZhY20t PmRhdGEtPmRldiwgImdvdCB1cmIgJWQsIGxlbiAlZCwgc3RhdHVzICVkXG4iLAogCQlyYi0+aW5k ZXgsIHVyYi0+YWN0dWFsX2xlbmd0aCwgc3RhdHVzKTsKIAotCXNldF9iaXQocmItPmluZGV4LCAm YWNtLT5yZWFkX3VyYnNfZnJlZSk7Ci0KIAlpZiAoIWFjbS0+ZGV2KSB7CiAJCWRldl9kYmcoJmFj bS0+ZGF0YS0+ZGV2LCAiJXMgLSBkaXNjb25uZWN0ZWRcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJu OwpAQCAtNDg4LDE1ICs0ODgsMTYgQEAgc3RhdGljIHZvaWQgYWNtX3JlYWRfYnVsa19jYWxsYmFj ayhzdHJ1Y3QgdXJiICp1cmIpCiAJCWJyZWFrOwogCWNhc2UgLUVQSVBFOgogCQlzZXRfYml0KEVW RU5UX1JYX1NUQUxMLCAmYWNtLT5mbGFncyk7Ci0JCXNjaGVkdWxlX3dvcmsoJmFjbS0+d29yayk7 Ci0JCXJldHVybjsKKwkJc3RhbGxlZCA9IHRydWU7CisJCWJyZWFrOwogCWNhc2UgLUVOT0VOVDoK IAljYXNlIC1FQ09OTlJFU0VUOgogCWNhc2UgLUVTSFVURE9XTjoKIAkJZGV2X2RiZygmYWNtLT5k YXRhLT5kZXYsCiAJCQkiJXMgLSB1cmIgc2h1dHRpbmcgZG93biB3aXRoIHN0YXR1czogJWRcbiIs CiAJCQlfX2Z1bmNfXywgc3RhdHVzKTsKLQkJcmV0dXJuOworCQlzdG9wcGVkID0gdHJ1ZTsKKwkJ YnJlYWs7CiAJZGVmYXVsdDoKIAkJZGV2X2RiZygmYWNtLT5kYXRhLT5kZXYsCiAJCQkiJXMgLSBu b256ZXJvIHVyYiBzdGF0dXMgcmVjZWl2ZWQ6ICVkXG4iLApAQCAtNTA1LDEwICs1MDYsMjQgQEAg c3RhdGljIHZvaWQgYWNtX3JlYWRfYnVsa19jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiAJfQog CiAJLyoKLQkgKiBVbnRocm90dGxlIG1heSBydW4gb24gYW5vdGhlciBDUFUgd2hpY2ggbmVlZHMg dG8gc2VlIGV2ZW50cwotCSAqIGluIHRoZSBzYW1lIG9yZGVyLiBTdWJtaXNzaW9uIGhhcyBhbiBp bXBsaWN0IGJhcnJpZXIKKwkgKiBNYWtlIHN1cmUgVVJCIHByb2Nlc3NpbmcgaXMgZG9uZSBiZWZv cmUgbWFya2luZyBhcyBmcmVlIHRvIGF2b2lkCisJICogcmFjaW5nIHdpdGggdW50aHJvdHRsZSgp IG9uIGFub3RoZXIgQ1BVLiBNYXRjaGVzIHRoZSBiYXJyaWVycworCSAqIGltcGxpZWQgYnkgdGhl IHRlc3RfYW5kX2NsZWFyX2JpdCgpIGluIGFjbV9zdWJtaXRfcmVhZF91cmIoKS4KIAkgKi8KIAlz bXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKKwlzZXRfYml0KHJiLT5pbmRleCwgJmFjbS0+cmVhZF91 cmJzX2ZyZWUpOworCS8qCisJICogTWFrZSBzdXJlIFVSQiBpcyBtYXJrZWQgYXMgZnJlZSBiZWZv cmUgY2hlY2tpbmcgdGhlIHRocm90dGxlZCBmbGFnCisJICogdG8gYXZvaWQgcmFjaW5nIHdpdGgg dW50aHJvdHRsZSgpIG9uIGFub3RoZXIgQ1BVLiBNYXRjaGVzIHRoZQorCSAqIHNtcF9tYigpIGlu IHVudGhyb3R0bGUoKS4KKwkgKi8KKwlzbXBfbWJfX2FmdGVyX2F0b21pYygpOworCisJaWYgKHN0 b3BwZWQgfHwgc3RhbGxlZCkgeworCQlpZiAoc3RhbGxlZCkKKwkJCXNjaGVkdWxlX3dvcmsoJmFj bS0+d29yayk7CisJCXJldHVybjsKKwl9CiAKIAkvKiB0aHJvdHRsZSBkZXZpY2UgaWYgcmVxdWVz dGVkIGJ5IHR0eSAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZhY20tPnJlYWRfbG9jaywgZmxhZ3Mp OwpAQCAtODQyLDYgKzg1Nyw5IEBAIHN0YXRpYyB2b2lkIGFjbV90dHlfdW50aHJvdHRsZShzdHJ1 Y3QgdHR5X3N0cnVjdCAqdHR5KQogCWFjbS0+dGhyb3R0bGVfcmVxID0gMDsKIAlzcGluX3VubG9j a19pcnEoJmFjbS0+cmVhZF9sb2NrKTsKIAorCS8qIE1hdGNoZXMgdGhlIHNtcF9tYl9fYWZ0ZXJf YXRvbWljKCkgaW4gYWNtX3JlYWRfYnVsa19jYWxsYmFjaygpLiAqLworCXNtcF9tYigpOworCiAJ aWYgKHdhc190aHJvdHRsZWQpCiAJCWFjbV9zdWJtaXRfcmVhZF91cmJzKGFjbSwgR0ZQX0tFUk5F TCk7CiB9Cg==