Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [2/2] usb: gadget: composite: remove duplicated code in OS desc handling From: Chris Dickens Message-Id: <20180101025943.8156-3-christopher.a.dickens@gmail.com> Date: Sun, 31 Dec 2017 18:59:43 -0800 To: Felipe Balbi , Greg Kroah-Hartman , linux-usb@vger.kernel.org Cc: Chris Dickens List-ID: V2hlbiB0aGUgaG9zdCB3YW50cyB0byBmZXRjaCBPUyBkZXNjcmlwdG9ycywgaXQgc2VuZHMgdHdv IHJlcXVlc3RzLiBUaGUKZmlyc3QgaXMgb25seSBmb3IgdGhlIGhlYWRlciBhbmQgdGhlIHNlY29u ZCBmb3IgdGhlIGZ1bGwgYW1vdW50CnNwZWNpZmllZCBieSB0aGUgaGVhZGVyIGluIHRoZSBmaXJz dCByZXF1ZXN0LiBUaGUgT1MgZGVzY3JpcHRvciBoYW5kbGluZwpjb2RlIGlzIGRpc3Rpbmd1aXNo aW5nIHRoZSBoZWFkZXItb25seSByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgd0xlbmd0aCBvZgp0aGUg c2V0dXAgcGFja2V0LCBidXQgdGhlIHNhbWUgY29kZSBpcyBleGVjdXRlZCBpbiBib3RoIGNhc2Vz IHRvCmNvbnN0cnVjdCB0aGUgYWN0dWFsIGhlYWRlci4gU2ltcGxpZnkgdGhpcyBieSBhbHdheXMg Y29uc3RydWN0aW5nIHRoZQpoZWFkZXIgYW5kIHRoZW4gZmlsbGluZyBvdXQgdGhlIHJlc3Qgb2Yg dGhlIHJlcXVlc3QgaWYgdGhlIHdMZW5ndGggaXMKZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRo ZSBoZWFkZXIuCgpBbHNvIHJlbW92ZSB0aGUgZHVwbGljYXRlIGNvZGUgZm9yIHF1ZXVlaW5nIHRo ZSByZXF1ZXN0IHRvIGVwMCBieSBhZGRpbmcKYSBnb3RvIGxhYmVsLgoKU2lnbmVkLW9mZi1ieTog Q2hyaXMgRGlja2VucyA8Y2hyaXN0b3BoZXIuYS5kaWNrZW5zQGdtYWlsLmNvbT4KLS0tCiBkcml2 ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMgfCA3MiArKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCA1MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMg Yi9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKaW5kZXggYjhiNjI5YzYxNWQzLi4xOTI0 ZTIwZjZlOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYworKysg Yi9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKQEAgLTE0MjcsNiArMTQyNyw3IEBAIHN0 YXRpYyBpbnQgZmlsbF9leHRfY29tcGF0KHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgdTgg KmJ1ZikKIAlpbnQgaSwgY291bnQ7CiAKIAljb3VudCA9IDE2OworCWJ1ZiArPSAxNjsKIAlmb3Ig KGkgPSAwOyBpIDwgYy0+bmV4dF9pbnRlcmZhY2VfaWQ7ICsraSkgewogCQlzdHJ1Y3QgdXNiX2Z1 bmN0aW9uICpmOwogCQlpbnQgajsKQEAgLTE1MDIsNiArMTUwMyw3IEBAIHN0YXRpYyBpbnQgZmls bF9leHRfcHJvcChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIGludCBpbnRlcmZhY2UsIHU4 ICpidWYpCiAKIAlmID0gYy0+aW50ZXJmYWNlW2ludGVyZmFjZV07CiAJY291bnQgPSAxMDsgLyog aGVhZGVyIGxlbmd0aCAqLworCWJ1ZiArPSAxMDsKIAlmb3IgKGogPSAwOyBqIDwgZi0+b3NfZGVz Y19uOyArK2opIHsKIAkJaWYgKGludGVyZmFjZSAhPSBmLT5vc19kZXNjX3RhYmxlW2pdLmlmX2lk KQogCQkJY29udGludWU7CkBAIC0xODMzLDIyICsxODM1LDE0IEBAIGNvbXBvc2l0ZV9zZXR1cChz dHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LCBjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpj dHJsKQogCQkJCWlmICh3X2luZGV4ICE9IDB4NCB8fCAod192YWx1ZSA+PiA4KSkKIAkJCQkJYnJl YWs7CiAJCQkJYnVmWzZdID0gd19pbmRleDsKLQkJCQlpZiAod19sZW5ndGggPT0gMHgxMCkgewot CQkJCQkvKiBOdW1iZXIgb2YgZXh0IGNvbXBhdCBpbnRlcmZhY2VzICovCi0JCQkJCWNvdW50ID0g Y291bnRfZXh0X2NvbXBhdChvc19kZXNjX2NmZyk7Ci0JCQkJCWJ1Zls4XSA9IGNvdW50OwotCQkJ CQljb3VudCAqPSAyNDsgLyogMjQgQi9leHQgY29tcGF0IGRlc2MgKi8KLQkJCQkJY291bnQgKz0g MTY7IC8qIGhlYWRlciAqLwotCQkJCQlwdXRfdW5hbGlnbmVkX2xlMzIoY291bnQsIGJ1Zik7Ci0J CQkJCXZhbHVlID0gd19sZW5ndGg7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJLyogImV4dGVuZGVkIGNv bXBhdGliaWxpdHkgSUQicyAqLwotCQkJCQljb3VudCA9IGNvdW50X2V4dF9jb21wYXQob3NfZGVz Y19jZmcpOwotCQkJCQlidWZbOF0gPSBjb3VudDsKLQkJCQkJY291bnQgKj0gMjQ7IC8qIDI0IEIv ZXh0IGNvbXBhdCBkZXNjICovCi0JCQkJCWNvdW50ICs9IDE2OyAvKiBoZWFkZXIgKi8KLQkJCQkJ cHV0X3VuYWxpZ25lZF9sZTMyKGNvdW50LCBidWYpOwotCQkJCQlidWYgKz0gMTY7CisJCQkJLyog TnVtYmVyIG9mIGV4dCBjb21wYXQgaW50ZXJmYWNlcyAqLworCQkJCWNvdW50ID0gY291bnRfZXh0 X2NvbXBhdChvc19kZXNjX2NmZyk7CisJCQkJYnVmWzhdID0gY291bnQ7CisJCQkJY291bnQgKj0g MjQ7IC8qIDI0IEIvZXh0IGNvbXBhdCBkZXNjICovCisJCQkJY291bnQgKz0gMTY7IC8qIGhlYWRl ciAqLworCQkJCXB1dF91bmFsaWduZWRfbGUzMihjb3VudCwgYnVmKTsKKwkJCQl2YWx1ZSA9IHdf bGVuZ3RoOworCQkJCWlmICh3X2xlbmd0aCA+IDB4MTApIHsKIAkJCQkJdmFsdWUgPSBmaWxsX2V4 dF9jb21wYXQob3NfZGVzY19jZmcsIGJ1Zik7CiAJCQkJCXZhbHVlID0gbWluX3QodTE2LCB3X2xl bmd0aCwgdmFsdWUpOwogCQkJCX0KQEAgLTE4NTgsNDYgKzE4NTIsMjMgQEAgY29tcG9zaXRlX3Nl dHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsIGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVl c3QgKmN0cmwpCiAJCQkJCWJyZWFrOwogCQkJCWludGVyZmFjZSA9IHdfdmFsdWUgJiAweEZGOwog CQkJCWJ1Zls2XSA9IHdfaW5kZXg7Ci0JCQkJaWYgKHdfbGVuZ3RoID09IDB4MEEpIHsKLQkJCQkJ Y291bnQgPSBjb3VudF9leHRfcHJvcChvc19kZXNjX2NmZywKLQkJCQkJCWludGVyZmFjZSk7Ci0J CQkJCXB1dF91bmFsaWduZWRfbGUxNihjb3VudCwgYnVmICsgOCk7Ci0JCQkJCWNvdW50ID0gbGVu X2V4dF9wcm9wKG9zX2Rlc2NfY2ZnLAotCQkJCQkJaW50ZXJmYWNlKTsKLQkJCQkJcHV0X3VuYWxp Z25lZF9sZTMyKGNvdW50LCBidWYpOwotCi0JCQkJCXZhbHVlID0gd19sZW5ndGg7Ci0JCQkJfSBl bHNlIHsKLQkJCQkJY291bnQgPSBjb3VudF9leHRfcHJvcChvc19kZXNjX2NmZywKLQkJCQkJCWlu dGVyZmFjZSk7Ci0JCQkJCXB1dF91bmFsaWduZWRfbGUxNihjb3VudCwgYnVmICsgOCk7Ci0JCQkJ CWNvdW50ID0gbGVuX2V4dF9wcm9wKG9zX2Rlc2NfY2ZnLAotCQkJCQkJaW50ZXJmYWNlKTsKLQkJ CQkJcHV0X3VuYWxpZ25lZF9sZTMyKGNvdW50LCBidWYpOwotCQkJCQlidWYgKz0gMTA7CisJCQkJ Y291bnQgPSBjb3VudF9leHRfcHJvcChvc19kZXNjX2NmZywKKwkJCQkJaW50ZXJmYWNlKTsKKwkJ CQlwdXRfdW5hbGlnbmVkX2xlMTYoY291bnQsIGJ1ZiArIDgpOworCQkJCWNvdW50ID0gbGVuX2V4 dF9wcm9wKG9zX2Rlc2NfY2ZnLAorCQkJCQlpbnRlcmZhY2UpOworCQkJCXB1dF91bmFsaWduZWRf bGUzMihjb3VudCwgYnVmKTsKKwkJCQl2YWx1ZSA9IHdfbGVuZ3RoOworCQkJCWlmICh3X2xlbmd0 aCA+IDB4MEEpIHsKIAkJCQkJdmFsdWUgPSBmaWxsX2V4dF9wcm9wKG9zX2Rlc2NfY2ZnLAogCQkJ CQkJCSAgICAgIGludGVyZmFjZSwgYnVmKTsKLQkJCQkJaWYgKHZhbHVlIDwgMCkKLQkJCQkJCXJl dHVybiB2YWx1ZTsKLQkJCQkJdmFsdWUgPSBtaW5fdCh1MTYsIHdfbGVuZ3RoLCB2YWx1ZSk7CisJ CQkJCWlmICh2YWx1ZSA+PSAwKQorCQkJCQkJdmFsdWUgPSBtaW5fdCh1MTYsIHdfbGVuZ3RoLCB2 YWx1ZSk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJfQogCi0JCQlpZiAodmFsdWUgPj0gMCkgewot CQkJCXJlcS0+bGVuZ3RoID0gdmFsdWU7Ci0JCQkJcmVxLT5jb250ZXh0ID0gY2RldjsKLQkJCQly ZXEtPnplcm8gPSB2YWx1ZSA8IHdfbGVuZ3RoOwotCQkJCXZhbHVlID0gY29tcG9zaXRlX2VwMF9x dWV1ZShjZGV2LCByZXEsCi0JCQkJCQkJICAgIEdGUF9BVE9NSUMpOwotCQkJCWlmICh2YWx1ZSA8 IDApIHsKLQkJCQkJREJHKGNkZXYsICJlcF9xdWV1ZSAtLT4gJWRcbiIsIHZhbHVlKTsKLQkJCQkJ cmVxLT5zdGF0dXMgPSAwOwotCQkJCQljb21wb3NpdGVfc2V0dXBfY29tcGxldGUoZ2FkZ2V0LT5l cDAsCi0JCQkJCQkJCSByZXEpOwotCQkJCX0KLQkJCX0KLQkJCXJldHVybiB2YWx1ZTsKKwkJCWdv dG8gY2hlY2tfdmFsdWU7CiAJCX0KIAogCQlWREJHKGNkZXYsCkBAIC0xOTcxLDYgKzE5NDIsNyBA QCBjb21wb3NpdGVfc2V0dXAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0 IHVzYl9jdHJscmVxdWVzdCAqY3RybCkKIAkJZ290byBkb25lOwogCX0KIAorY2hlY2tfdmFsdWU6 CiAJLyogcmVzcG9uZCB3aXRoIGRhdGEgdHJhbnNmZXIgYmVmb3JlIHN0YXR1cyBwaGFzZT8gKi8K IAlpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSAhPSBVU0JfR0FER0VUX0RFTEFZRURfU1RBVFVTKSB7 CiAJCXJlcS0+bGVuZ3RoID0gdmFsdWU7Cg==