Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/2] usb: gadget: composite: fix incorrect handling of OS desc requests From: Chris Dickens Message-Id: <20180101025943.8156-2-christopher.a.dickens@gmail.com> Date: Sun, 31 Dec 2017 18:59:42 -0800 To: Felipe Balbi , Greg Kroah-Hartman , linux-usb@vger.kernel.org Cc: Chris Dickens List-ID: V2hlbiBoYW5kbGluZyBhbiBPUyBkZXNjcmlwdG9yIHJlcXVlc3QsIG9uZSBvZiB0aGUgZmlyc3Qg b3BlcmF0aW9ucyBpcwp0byB6ZXJvIG91dCB0aGUgcmVxdWVzdCBidWZmZXIgdXNpbmcgdGhlIHdM ZW5ndGggZnJvbSB0aGUgc2V0dXAgcGFja2V0LgpUaGVyZSBpcyBubyBib3VuZHMgY2hlY2tpbmcs IHNvIGEgd0xlbmd0aCA+IDQwOTYgd291bGQgY2xvYmJlciBtZW1vcnkKYWRqYWNlbnQgdG8gdGhl IHJlcXVlc3QgYnVmZmVyLiBGaXggdGhpcyBieSB0YWtpbmcgdGhlIG1pbiBvZiB3TGVuZ3RoCmFu ZCB0aGUgcmVxdWVzdCBidWZmZXIgbGVuZ3RoIHByaW9yIHRvIHRoZSBtZW1zZXQuIFdoaWxlIGF0 IGl0LCBkZWZpbmUKdGhlIGJ1ZmZlciBsZW5ndGggaW4gYSBoZWFkZXIgZmlsZSBzbyB0aGF0IG1h Z2ljIG51bWJlcnMgZG9uJ3QgYXBwZWFyCnRocm91Z2hvdXQgdGhlIGNvZGUuCgpXaGVuIHJldHVy bmluZyBkYXRhIHRvIHRoZSBob3N0LCB0aGUgZGF0YSBsZW5ndGggc2hvdWxkIGJlIHRoZSBtaW4g b2YKdGhlIHdMZW5ndGggYW5kIHRoZSB2YWxpZCBkYXRhIHdlIGhhdmUgdG8gcmV0dXJuLiBDdXJy ZW50bHkgd2UgYXJlCnJldHVybmluZyB3TGVuZ3RoLCB0aHVzIHJlcXVlc3RzIGZvciBhIHdMZW5n dGggZ3JlYXRlciB0aGFuIHRoZSBhbW91bnQKb2YgZGF0YSBpbiB0aGUgT1MgZGVzY3JpcHRvciBi dWZmZXIgd291bGQgcmV0dXJuIGludmFsaWQgKGFsYmVpdCB6ZXJvJ2QpCmRhdGEgZm9sbG93aW5n IHRoZSB2YWxpZCBkZXNjcmlwdG9yIGRhdGEuIEZpeCB0aGlzIGJ5IGNvdW50aW5nIHRoZQpudW1i ZXIgb2YgYnl0ZXMgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGRhdGEgYW5kIHVzaW5nIHRoaXMgd2hl bgpkZXRlcm1pbmluZyB0aGUgbGVuZ3RoIG9mIHRoZSByZXF1ZXN0LgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgRGlja2VucyA8Y2hyaXN0b3BoZXIuYS5kaWNrZW5zQGdtYWlsLmNvbT4KLS0tCiBkcml2 ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMgfCA0MCArKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaCAgfCAgMyArKysK IDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jIGIvZHJpdmVycy91c2IvZ2Fk Z2V0L2NvbXBvc2l0ZS5jCmluZGV4IDc3YzdlY2NhODE2YS4uYjhiNjI5YzYxNWQzIDEwMDY0NAot LS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKKysrIGIvZHJpdmVycy91c2IvZ2Fk Z2V0L2NvbXBvc2l0ZS5jCkBAIC0xNDIyLDcgKzE0MjIsNyBAQCBzdGF0aWMgaW50IGNvdW50X2V4 dF9jb21wYXQoc3RydWN0IHVzYl9jb25maWd1cmF0aW9uICpjKQogCXJldHVybiByZXM7CiB9CiAK LXN0YXRpYyB2b2lkIGZpbGxfZXh0X2NvbXBhdChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMs IHU4ICpidWYpCitzdGF0aWMgaW50IGZpbGxfZXh0X2NvbXBhdChzdHJ1Y3QgdXNiX2NvbmZpZ3Vy YXRpb24gKmMsIHU4ICpidWYpCiB7CiAJaW50IGksIGNvdW50OwogCkBAIC0xNDQ5LDEwICsxNDQ5 LDEyIEBAIHN0YXRpYyB2b2lkIGZpbGxfZXh0X2NvbXBhdChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRp b24gKmMsIHU4ICpidWYpCiAJCQkJYnVmICs9IDIzOwogCQkJfQogCQkJY291bnQgKz0gMjQ7Ci0J CQlpZiAoY291bnQgPj0gNDA5NikKLQkJCQlyZXR1cm47CisJCQlpZiAoY291bnQgKyAyNCA+PSBV U0JfQ09NUF9FUDBfT1NfREVTQ19CVUZTSVopCisJCQkJcmV0dXJuIGNvdW50OwogCQl9CiAJfQor CisJcmV0dXJuIGNvdW50OwogfQogCiBzdGF0aWMgaW50IGNvdW50X2V4dF9wcm9wKHN0cnVjdCB1 c2JfY29uZmlndXJhdGlvbiAqYywgaW50IGludGVyZmFjZSkKQEAgLTE0OTcsMjUgKzE0OTksMjAg QEAgc3RhdGljIGludCBmaWxsX2V4dF9wcm9wKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywg aW50IGludGVyZmFjZSwgdTggKmJ1ZikKIAlzdHJ1Y3QgdXNiX29zX2Rlc2MgKmQ7CiAJc3RydWN0 IHVzYl9vc19kZXNjX2V4dF9wcm9wICpleHRfcHJvcDsKIAlpbnQgaiwgY291bnQsIG4sIHJldDsK LQl1OCAqc3RhcnQgPSBidWY7CiAKIAlmID0gYy0+aW50ZXJmYWNlW2ludGVyZmFjZV07CisJY291 bnQgPSAxMDsgLyogaGVhZGVyIGxlbmd0aCAqLwogCWZvciAoaiA9IDA7IGogPCBmLT5vc19kZXNj X247ICsraikgewogCQlpZiAoaW50ZXJmYWNlICE9IGYtPm9zX2Rlc2NfdGFibGVbal0uaWZfaWQp CiAJCQljb250aW51ZTsKIAkJZCA9IGYtPm9zX2Rlc2NfdGFibGVbal0ub3NfZGVzYzsKIAkJaWYg KGQpCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGV4dF9wcm9wLCAmZC0+ZXh0X3Byb3AsIGVudHJ5 KSB7Ci0JCQkJLyogNGtCIG1pbnVzIGhlYWRlciBsZW5ndGggKi8KLQkJCQluID0gYnVmIC0gc3Rh cnQ7Ci0JCQkJaWYgKG4gPj0gNDA4NikKLQkJCQkJcmV0dXJuIDA7Ci0KLQkJCQljb3VudCA9IGV4 dF9wcm9wLT5kYXRhX2xlbiArCisJCQkJbiA9IGV4dF9wcm9wLT5kYXRhX2xlbiArCiAJCQkJCWV4 dF9wcm9wLT5uYW1lX2xlbiArIDE0OwotCQkJCWlmIChjb3VudCA+IDQwODYgLSBuKQotCQkJCQly ZXR1cm4gLUVJTlZBTDsKLQkJCQl1c2JfZXh0X3Byb3BfcHV0X3NpemUoYnVmLCBjb3VudCk7CisJ CQkJaWYgKGNvdW50ICsgbiA+PSBVU0JfQ09NUF9FUDBfT1NfREVTQ19CVUZTSVopCisJCQkJCXJl dHVybiBjb3VudDsKKwkJCQl1c2JfZXh0X3Byb3BfcHV0X3NpemUoYnVmLCBuKTsKIAkJCQl1c2Jf ZXh0X3Byb3BfcHV0X3R5cGUoYnVmLCBleHRfcHJvcC0+dHlwZSk7CiAJCQkJcmV0ID0gdXNiX2V4 dF9wcm9wX3B1dF9uYW1lKGJ1ZiwgZXh0X3Byb3AtPm5hbWUsCiAJCQkJCQkJICAgIGV4dF9wcm9w LT5uYW1lX2xlbik7CkBAIC0xNTQxLDExICsxNTM4LDEyIEBAIHN0YXRpYyBpbnQgZmlsbF9leHRf cHJvcChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIGludCBpbnRlcmZhY2UsIHU4ICpidWYp CiAJCQkJZGVmYXVsdDoKIAkJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQkJfQotCQkJCWJ1ZiArPSBj b3VudDsKKwkJCQlidWYgKz0gbjsKKwkJCQljb3VudCArPSBuOwogCQkJfQogCX0KIAotCXJldHVy biAwOworCXJldHVybiBjb3VudDsKIH0KIAogLyoKQEAgLTE4MjcsNiArMTgyNSw3IEBAIGNvbXBv c2l0ZV9zZXR1cChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCBjb25zdCBzdHJ1Y3QgdXNiX2N0 cmxyZXF1ZXN0ICpjdHJsKQogCQkJcmVxLT5jb21wbGV0ZSA9IGNvbXBvc2l0ZV9zZXR1cF9jb21w bGV0ZTsKIAkJCWJ1ZiA9IHJlcS0+YnVmOwogCQkJb3NfZGVzY19jZmcgPSBjZGV2LT5vc19kZXNj X2NvbmZpZzsKKwkJCXdfbGVuZ3RoID0gbWluX3QodTE2LCB3X2xlbmd0aCwgVVNCX0NPTVBfRVAw X09TX0RFU0NfQlVGU0laKTsKIAkJCW1lbXNldChidWYsIDAsIHdfbGVuZ3RoKTsKIAkJCWJ1Zls1 XSA9IDB4MDE7CiAJCQlzd2l0Y2ggKGN0cmwtPmJSZXF1ZXN0VHlwZSAmIFVTQl9SRUNJUF9NQVNL KSB7CkBAIC0xODUwLDggKzE4NDksOCBAQCBjb21wb3NpdGVfc2V0dXAoc3RydWN0IHVzYl9nYWRn ZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybCkKIAkJCQkJY291 bnQgKz0gMTY7IC8qIGhlYWRlciAqLwogCQkJCQlwdXRfdW5hbGlnbmVkX2xlMzIoY291bnQsIGJ1 Zik7CiAJCQkJCWJ1ZiArPSAxNjsKLQkJCQkJZmlsbF9leHRfY29tcGF0KG9zX2Rlc2NfY2ZnLCBi dWYpOwotCQkJCQl2YWx1ZSA9IHdfbGVuZ3RoOworCQkJCQl2YWx1ZSA9IGZpbGxfZXh0X2NvbXBh dChvc19kZXNjX2NmZywgYnVmKTsKKwkJCQkJdmFsdWUgPSBtaW5fdCh1MTYsIHdfbGVuZ3RoLCB2 YWx1ZSk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBVU0JfUkVDSVBfSU5URVJGQUNFOgpA QCAtMTg4MCw4ICsxODc5LDcgQEAgY29tcG9zaXRlX3NldHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpn YWRnZXQsIGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpCiAJCQkJCQkJICAgICAg aW50ZXJmYWNlLCBidWYpOwogCQkJCQlpZiAodmFsdWUgPCAwKQogCQkJCQkJcmV0dXJuIHZhbHVl OwotCi0JCQkJCXZhbHVlID0gd19sZW5ndGg7CisJCQkJCXZhbHVlID0gbWluX3QodTE2LCB3X2xl bmd0aCwgdmFsdWUpOwogCQkJCX0KIAkJCQlicmVhazsKIAkJCX0KQEAgLTIxNTYsOCArMjE1NCw4 IEBAIGludCBjb21wb3NpdGVfb3NfZGVzY19yZXFfcHJlcGFyZShzdHJ1Y3QgdXNiX2NvbXBvc2l0 ZV9kZXYgKmNkZXYsCiAJCWdvdG8gZW5kOwogCX0KIAotCS8qIE9TIGZlYXR1cmUgZGVzY3JpcHRv ciBsZW5ndGggPD0gNGtCICovCi0JY2Rldi0+b3NfZGVzY19yZXEtPmJ1ZiA9IGttYWxsb2MoNDA5 NiwgR0ZQX0tFUk5FTCk7CisJY2Rldi0+b3NfZGVzY19yZXEtPmJ1ZiA9IGttYWxsb2MoVVNCX0NP TVBfRVAwX09TX0RFU0NfQlVGU0laLAorCQkJCQkgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjZGV2LT5v c19kZXNjX3JlcS0+YnVmKSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCXVzYl9lcF9mcmVlX3JlcXVl c3QoZXAwLCBjZGV2LT5vc19kZXNjX3JlcSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Vz Yi9jb21wb3NpdGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCmluZGV4IGNlZjBl NDQ2MDFmOC4uNGI2YjkyODNmYTdiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jb21w b3NpdGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaApAQCAtNTQsNiArNTQs OSBAQAogLyogYmlnIGVub3VnaCB0byBob2xkIG91ciBiaWdnZXN0IGRlc2NyaXB0b3IgKi8KICNk ZWZpbmUgVVNCX0NPTVBfRVAwX0JVRlNJWgkxMDI0CiAKKy8qIE9TIGZlYXR1cmUgZGVzY3JpcHRv ciBsZW5ndGggPD0gNGtCICovCisjZGVmaW5lIFVTQl9DT01QX0VQMF9PU19ERVNDX0JVRlNJWgk0 MDk2CisKICNkZWZpbmUgVVNCX01TX1RPX0hTX0lOVEVSVkFMKHgpCShpbG9nMigoeCAqIDEwMDAg LyAxMjUpKSArIDEpCiBzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb247CiAK