From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonas Gorski Subject: [PATCH V2 3/5] mtd: bcm63xxpart: move imagetag parsing to its own parser Date: Thu, 28 Mar 2019 15:19:08 +0100 Message-ID: <20190328141910.5723-4-jonas.gorski@gmail.com> References: <20190328141910.5723-1-jonas.gorski@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190328141910.5723-1-jonas.gorski@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: devicetree@vger.kernel.org, linux-mtd@lists.infradead.org Cc: Mark Rutland , Florian Fainelli , Boris Brezillon , Richard Weinberger , Marek Vasut , Rob Herring , bcm-kernel-feedback-list@broadcom.com, Brian Norris , David Woodhouse List-Id: devicetree@vger.kernel.org TW92ZSB0aGUgYmNtOTYzeHggSW1hZ2UgVGFnIHBhcnNpbmcgaW50byBpdHMgb3duIHBhcnRpdGlv biBwYXJzZXIuIFRoaXMKQWxsb3dzIHJldXNpbmcgdGhlIHBhcnNlciB3aXRoIGRpZmZlcmVudCBm dWxsIGZsYXNoIHBhcnNlcnMuCgpXaGlsZSBtb3ZpbmcgaXQsIHJlbmFtZSBpdCB0byBiY205NjMq IHRvIGJldHRlciByZWZsZWN0IGl0IGlzbid0IGNoaXAsCmJ1dCByZWZlcmVuY2UgaW1wbGVtZW50 YXRpb24gc3BlY2lmaWMuCgpSZXZpZXdlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9y Zz4KU2lnbmVkLW9mZi1ieTogSm9uYXMgR29yc2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgot LS0KIGRyaXZlcnMvbXRkL0tjb25maWcgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVy cy9tdGQvYmNtNjN4eHBhcnQuYyAgICAgICAgICAgICB8IDE1NSArKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvbXRkL3BhcnNlcnMvS2NvbmZpZyAgICAgICAgICAgfCAgMTEgKysKIGRy aXZlcnMvbXRkL3BhcnNlcnMvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9tdGQv cGFyc2Vycy9wYXJzZXJfaW1hZ2V0YWcuYyB8IDIxNCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDIzNSBpbnNlcnRpb25zKCspLCAxNDcgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tdGQvcGFyc2Vycy9wYXJzZXJfaW1h Z2V0YWcuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL0tjb25maWcgYi9kcml2ZXJzL210ZC9L Y29uZmlnCmluZGV4IDc5YThmZjU0Mjg4My4uZTVlMzNjNGZkZTQ1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL210ZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL0tjb25maWcKQEAgLTk0LDYgKzk0LDcg QEAgY29uZmlnIE1URF9CQ002M1hYX1BBUlRTCiAJdHJpc3RhdGUgIkJDTTYzWFggQ0ZFIHBhcnRp dGlvbmluZyBzdXBwb3J0IgogCWRlcGVuZHMgb24gQkNNNjNYWCB8fCBCTUlQU19HRU5FUklDIHx8 IENPTVBJTEVfVEVTVAogCXNlbGVjdCBDUkMzMgorCXNlbGVjdCBNVERfUEFSU0VSX0lNQUdFVEFH CiAJaGVscAogCSAgVGhpcyBwcm92aWRlcyBwYXJ0aXRpb24gcGFyc2luZyBmb3IgQkNNNjN4eCBk ZXZpY2VzIHdpdGggQ0ZFCiAJICBib290bG9hZGVycy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRk L2JjbTYzeHhwYXJ0LmMgYi9kcml2ZXJzL210ZC9iY202M3h4cGFydC5jCmluZGV4IGY2MzliNGM5 NjBmMC4uYjJiZDA0NzY0ZTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9iY202M3h4cGFydC5j CisrKyBiL2RyaXZlcnMvbXRkL2JjbTYzeHhwYXJ0LmMKQEAgLTk0LDUxICs5NCwxOSBAQCBzdGF0 aWMgaW50IGJjbTYzeHhfcmVhZF9udnJhbShzdHJ1Y3QgbXRkX2luZm8gKm1hc3RlciwKIAlyZXR1 cm4gMDsKIH0KIAotc3RhdGljIGludCBiY202M3h4X3JlYWRfaW1hZ2VfdGFnKHN0cnVjdCBtdGRf aW5mbyAqbWFzdGVyLCBjb25zdCBjaGFyICpuYW1lLAotCWxvZmZfdCB0YWdfb2Zmc2V0LCBzdHJ1 Y3QgYmNtX3RhZyAqYnVmKQotewotCWludCByZXQ7Ci0Jc2l6ZV90IHJldGxlbjsKLQl1MzIgY29t cHV0ZWRfY3JjOwotCi0JcmV0ID0gbXRkX3JlYWQobWFzdGVyLCB0YWdfb2Zmc2V0LCBzaXplb2Yo KmJ1ZiksICZyZXRsZW4sICh2b2lkICopYnVmKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot Ci0JaWYgKHJldGxlbiAhPSBzaXplb2YoKmJ1ZikpCi0JCXJldHVybiAtRUlPOwotCi0JY29tcHV0 ZWRfY3JjID0gY3JjMzJfbGUoSU1BR0VUQUdfQ1JDX1NUQVJULCAodTggKilidWYsCi0JCQkJb2Zm c2V0b2Yoc3RydWN0IGJjbV90YWcsIGhlYWRlcl9jcmMpKTsKLQlpZiAoY29tcHV0ZWRfY3JjID09 IGJ1Zi0+aGVhZGVyX2NyYykgewotCQlTVFJfTlVMTF9URVJNSU5BVEUoYnVmLT5ib2FyZF9pZCk7 Ci0JCVNUUl9OVUxMX1RFUk1JTkFURShidWYtPnRhZ192ZXJzaW9uKTsKLQotCQlwcl9pbmZvKCIl czogQ0ZFIGltYWdlIHRhZyBmb3VuZCBhdCAweCVsbHggd2l0aCB2ZXJzaW9uICVzLCBib2FyZCB0 eXBlICVzXG4iLAotCQkJbmFtZSwgdGFnX29mZnNldCwgYnVmLT50YWdfdmVyc2lvbiwgYnVmLT5i b2FyZF9pZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JfQotCi0JcHJfd2FybigiJXM6IENGRSBpbWFnZSB0 YWcgYXQgMHglbGx4IENSQyBpbnZhbGlkIChleHBlY3RlZCAlMDh4LCBhY3R1YWwgJTA4eClcbiIs Ci0JCW5hbWUsIHRhZ19vZmZzZXQsIGJ1Zi0+aGVhZGVyX2NyYywgY29tcHV0ZWRfY3JjKTsKLQly ZXR1cm4gMTsKLX0KK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYmNtNjN4eF9jZmVfcGFydF90 eXBlc1tdID0geworCSJiY205NjN4eC1pbWFnZXRhZyIsCisJTlVMTCwKK307CiAKIHN0YXRpYyBp bnQgYmNtNjN4eF9wYXJzZV9jZmVfbm9yX3BhcnRpdGlvbnMoc3RydWN0IG10ZF9pbmZvICptYXN0 ZXIsCiAJY29uc3Qgc3RydWN0IG10ZF9wYXJ0aXRpb24gKipwcGFydHMsIHN0cnVjdCBiY205NjN4 eF9udnJhbSAqbnZyYW0pCiB7Ci0JLyogQ0ZFLCBOVlJBTSBhbmQgZ2xvYmFsIExpbnV4IGFyZSBh bHdheXMgcHJlc2VudCAqLwotCWludCBucnBhcnRzID0gMywgY3VycGFydCA9IDA7Ci0Jc3RydWN0 IGJjbV90YWcgKmJ1ZiA9IE5VTEw7CiAJc3RydWN0IG10ZF9wYXJ0aXRpb24gKnBhcnRzOwotCWlu dCByZXQ7Ci0JdW5zaWduZWQgaW50IHJvb3Rmc2FkZHIsIGtlcm5lbGFkZHIsIHNwYXJlYWRkcjsK LQl1bnNpZ25lZCBpbnQgcm9vdGZzbGVuLCBrZXJuZWxsZW4sIHNwYXJlbGVuLCB0b3RhbGxlbjsK KwlpbnQgbnJwYXJ0cyA9IDMsIGN1cnBhcnQgPSAwOwogCXVuc2lnbmVkIGludCBjZmVsZW4sIG52 cmFtbGVuOwogCXVuc2lnbmVkIGludCBjZmVfZXJhc2VzaXplOwogCWludCBpOwotCWJvb2wgcm9v dGZzX2ZpcnN0ID0gZmFsc2U7CiAKIAljZmVfZXJhc2VzaXplID0gbWF4X3QodWludDMyX3QsIG1h c3Rlci0+ZXJhc2VzaXplLAogCQkJICAgICAgQkNNOTYzWFhfQ0ZFX0JMT0NLX1NJWkUpOwpAQCAt MTQ3LDgzICsxMTUsOSBAQCBzdGF0aWMgaW50IGJjbTYzeHhfcGFyc2VfY2ZlX25vcl9wYXJ0aXRp b25zKHN0cnVjdCBtdGRfaW5mbyAqbWFzdGVyLAogCW52cmFtbGVuID0gbnZyYW0tPnBzaV9zaXpl ICogU1pfMUs7CiAJbnZyYW1sZW4gPSByb3VuZHVwKG52cmFtbGVuLCBjZmVfZXJhc2VzaXplKTsK IAotCWJ1ZiA9IHZtYWxsb2Moc2l6ZW9mKHN0cnVjdCBiY21fdGFnKSk7Ci0JaWYgKCFidWYpCi0J CXJldHVybiAtRU5PTUVNOwotCi0JLyogR2V0IHRoZSB0YWcgKi8KLQlyZXQgPSBiY202M3h4X3Jl YWRfaW1hZ2VfdGFnKG1hc3RlciwgInJvb3RmcyIsIGNmZWxlbiwgYnVmKTsKLQlpZiAoIXJldCkg ewotCQlTVFJfTlVMTF9URVJNSU5BVEUoYnVmLT5mbGFzaF9pbWFnZV9zdGFydCk7Ci0JCWlmIChr c3RydG91aW50KGJ1Zi0+Zmxhc2hfaW1hZ2Vfc3RhcnQsIDEwLCAmcm9vdGZzYWRkcikgfHwKLQkJ CQlyb290ZnNhZGRyIDwgQkNNOTYzWFhfRVhURU5ERURfU0laRSkgewotCQkJcHJfZXJyKCJpbnZh bGlkIHJvb3RmcyBhZGRyZXNzOiAlKnBoXG4iLAotCQkJCShpbnQpc2l6ZW9mKGJ1Zi0+Zmxhc2hf aW1hZ2Vfc3RhcnQpLAotCQkJCWJ1Zi0+Zmxhc2hfaW1hZ2Vfc3RhcnQpOwotCQkJZ290byBpbnZh bGlkX3RhZzsKLQkJfQotCi0JCVNUUl9OVUxMX1RFUk1JTkFURShidWYtPmtlcm5lbF9hZGRyZXNz KTsKLQkJaWYgKGtzdHJ0b3VpbnQoYnVmLT5rZXJuZWxfYWRkcmVzcywgMTAsICZrZXJuZWxhZGRy KSB8fAotCQkJCWtlcm5lbGFkZHIgPCBCQ005NjNYWF9FWFRFTkRFRF9TSVpFKSB7Ci0JCQlwcl9l cnIoImludmFsaWQga2VybmVsIGFkZHJlc3M6ICUqcGhcbiIsCi0JCQkJKGludClzaXplb2YoYnVm LT5rZXJuZWxfYWRkcmVzcyksCi0JCQkJYnVmLT5rZXJuZWxfYWRkcmVzcyk7Ci0JCQlnb3RvIGlu dmFsaWRfdGFnOwotCQl9Ci0KLQkJU1RSX05VTExfVEVSTUlOQVRFKGJ1Zi0+a2VybmVsX2xlbmd0 aCk7Ci0JCWlmIChrc3RydG91aW50KGJ1Zi0+a2VybmVsX2xlbmd0aCwgMTAsICZrZXJuZWxsZW4p KSB7Ci0JCQlwcl9lcnIoImludmFsaWQga2VybmVsIGxlbmd0aDogJSpwaFxuIiwKLQkJCQkoaW50 KXNpemVvZihidWYtPmtlcm5lbF9sZW5ndGgpLAotCQkJCWJ1Zi0+a2VybmVsX2xlbmd0aCk7Ci0J CQlnb3RvIGludmFsaWRfdGFnOwotCQl9Ci0KLQkJU1RSX05VTExfVEVSTUlOQVRFKGJ1Zi0+dG90 YWxfbGVuZ3RoKTsKLQkJaWYgKGtzdHJ0b3VpbnQoYnVmLT50b3RhbF9sZW5ndGgsIDEwLCAmdG90 YWxsZW4pKSB7Ci0JCQlwcl9lcnIoImludmFsaWQgdG90YWwgbGVuZ3RoOiAlKnBoXG4iLAotCQkJ CShpbnQpc2l6ZW9mKGJ1Zi0+dG90YWxfbGVuZ3RoKSwKLQkJCQlidWYtPnRvdGFsX2xlbmd0aCk7 Ci0JCQlnb3RvIGludmFsaWRfdGFnOwotCQl9Ci0KLQkJa2VybmVsYWRkciA9IGtlcm5lbGFkZHIg LSBCQ005NjNYWF9FWFRFTkRFRF9TSVpFOwotCQlyb290ZnNhZGRyID0gcm9vdGZzYWRkciAtIEJD TTk2M1hYX0VYVEVOREVEX1NJWkU7Ci0JCXNwYXJlYWRkciA9IHJvdW5kdXAodG90YWxsZW4sIG1h c3Rlci0+ZXJhc2VzaXplKSArIGNmZWxlbjsKLQotCQlpZiAocm9vdGZzYWRkciA8IGtlcm5lbGFk ZHIpIHsKLQkJCS8qIGRlZmF1bHQgQnJvYWRjb20gbGF5b3V0ICovCi0JCQlyb290ZnNsZW4gPSBr ZXJuZWxhZGRyIC0gcm9vdGZzYWRkcjsKLQkJCXJvb3Rmc19maXJzdCA9IHRydWU7Ci0JCX0gZWxz ZSB7Ci0JCQkvKiBPcGVuV3J0IGxheW91dCAqLwotCQkJcm9vdGZzYWRkciA9IGtlcm5lbGFkZHIg KyBrZXJuZWxsZW47Ci0JCQlyb290ZnNsZW4gPSBzcGFyZWFkZHIgLSByb290ZnNhZGRyOwotCQl9 Ci0JfSBlbHNlIGlmIChyZXQgPiAwKSB7Ci1pbnZhbGlkX3RhZzoKLQkJa2VybmVsbGVuID0gMDsK LQkJcm9vdGZzbGVuID0gMDsKLQkJcm9vdGZzYWRkciA9IDA7Ci0JCXNwYXJlYWRkciA9IGNmZWxl bjsKLQl9IGVsc2UgewotCQlnb3RvIG91dDsKLQl9Ci0Jc3BhcmVsZW4gPSBtYXN0ZXItPnNpemUg LSBzcGFyZWFkZHIgLSBudnJhbWxlbjsKLQotCS8qIERldGVybWluZSBudW1iZXIgb2YgcGFydGl0 aW9ucyAqLwotCWlmIChyb290ZnNsZW4gPiAwKQotCQlucnBhcnRzKys7Ci0KLQlpZiAoa2VybmVs bGVuID4gMCkKLQkJbnJwYXJ0cysrOwotCiAJcGFydHMgPSBremFsbG9jKHNpemVvZigqcGFydHMp ICogbnJwYXJ0cyArIDEwICogbnJwYXJ0cywgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwYXJ0cykgewot CQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKLQl9CisJaWYgKCFwYXJ0cykKKwkJcmV0dXJu IC1FTk9NRU07CiAKIAkvKiBTdGFydCBidWlsZGluZyBwYXJ0aXRpb24gbGlzdCAqLwogCXBhcnRz W2N1cnBhcnRdLm5hbWUgPSAiQ0ZFIjsKQEAgLTIzMSwzMCArMTI1LDYgQEAgc3RhdGljIGludCBi Y202M3h4X3BhcnNlX2NmZV9ub3JfcGFydGl0aW9ucyhzdHJ1Y3QgbXRkX2luZm8gKm1hc3RlciwK IAlwYXJ0c1tjdXJwYXJ0XS5zaXplID0gY2ZlbGVuOwogCWN1cnBhcnQrKzsKIAotCWlmIChrZXJu ZWxsZW4gPiAwKSB7Ci0JCWludCBrZXJuZWxwYXJ0ID0gY3VycGFydDsKLQotCQlpZiAocm9vdGZz bGVuID4gMCAmJiByb290ZnNfZmlyc3QpCi0JCQlrZXJuZWxwYXJ0Kys7Ci0JCXBhcnRzW2tlcm5l bHBhcnRdLm5hbWUgPSAia2VybmVsIjsKLQkJcGFydHNba2VybmVscGFydF0ub2Zmc2V0ID0ga2Vy bmVsYWRkcjsKLQkJcGFydHNba2VybmVscGFydF0uc2l6ZSA9IGtlcm5lbGxlbjsKLQkJY3VycGFy dCsrOwotCX0KLQotCWlmIChyb290ZnNsZW4gPiAwKSB7Ci0JCWludCByb290ZnNwYXJ0ID0gY3Vy cGFydDsKLQotCQlpZiAoa2VybmVsbGVuID4gMCAmJiByb290ZnNfZmlyc3QpCi0JCQlyb290ZnNw YXJ0LS07Ci0JCXBhcnRzW3Jvb3Rmc3BhcnRdLm5hbWUgPSAicm9vdGZzIjsKLQkJcGFydHNbcm9v dGZzcGFydF0ub2Zmc2V0ID0gcm9vdGZzYWRkcjsKLQkJcGFydHNbcm9vdGZzcGFydF0uc2l6ZSA9 IHJvb3Rmc2xlbjsKLQkJaWYgKHNwYXJlbGVuID4gMCAgJiYgIXJvb3Rmc19maXJzdCkKLQkJCXBh cnRzW3Jvb3Rmc3BhcnRdLnNpemUgKz0gc3BhcmVsZW47Ci0JCWN1cnBhcnQrKzsKLQl9Ci0KIAlw YXJ0c1tjdXJwYXJ0XS5uYW1lID0gIm52cmFtIjsKIAlwYXJ0c1tjdXJwYXJ0XS5vZmZzZXQgPSBt YXN0ZXItPnNpemUgLSBudnJhbWxlbjsKIAlwYXJ0c1tjdXJwYXJ0XS5zaXplID0gbnZyYW1sZW47 CkBAIC0yNjQsMjIgKzEzNCwxMyBAQCBzdGF0aWMgaW50IGJjbTYzeHhfcGFyc2VfY2ZlX25vcl9w YXJ0aXRpb25zKHN0cnVjdCBtdGRfaW5mbyAqbWFzdGVyLAogCXBhcnRzW2N1cnBhcnRdLm5hbWUg PSAibGludXgiOwogCXBhcnRzW2N1cnBhcnRdLm9mZnNldCA9IGNmZWxlbjsKIAlwYXJ0c1tjdXJw YXJ0XS5zaXplID0gbWFzdGVyLT5zaXplIC0gY2ZlbGVuIC0gbnZyYW1sZW47CisJcGFydHNbY3Vy cGFydF0udHlwZXMgPSBiY202M3h4X2NmZV9wYXJ0X3R5cGVzOwogCiAJZm9yIChpID0gMDsgaSA8 IG5ycGFydHM7IGkrKykKIAkJcHJfaW5mbygiUGFydGl0aW9uICVkIGlzICVzIG9mZnNldCAlbGx4 IGFuZCBsZW5ndGggJWxseFxuIiwgaSwKIAkJCXBhcnRzW2ldLm5hbWUsIHBhcnRzW2ldLm9mZnNl dCwJcGFydHNbaV0uc2l6ZSk7CiAKLQlwcl9pbmZvKCJTcGFyZSBwYXJ0aXRpb24gaXMgb2Zmc2V0 ICV4IGFuZCBsZW5ndGggJXhcbiIsCXNwYXJlYWRkciwKLQkJc3BhcmVsZW4pOwotCiAJKnBwYXJ0 cyA9IHBhcnRzOwotCXJldCA9IDA7Ci0KLW91dDoKLQl2ZnJlZShidWYpOwotCi0JaWYgKHJldCkK LQkJcmV0dXJuIHJldDsKIAogCXJldHVybiBucnBhcnRzOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvcGFyc2Vycy9LY29uZmlnIGIvZHJpdmVycy9tdGQvcGFyc2Vycy9LY29uZmlnCmluZGV4 IGZjY2YxOTUwZTkyZC4uYzhiZTNmMTUwN2NhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9wYXJz ZXJzL0tjb25maWcKKysrIGIvZHJpdmVycy9tdGQvcGFyc2Vycy9LY29uZmlnCkBAIC0xLDMgKzEs MTQgQEAKK2NvbmZpZyBNVERfUEFSU0VSX0lNQUdFVEFHCisJdHJpc3RhdGUgIlBhcnNlciBmb3Ig QkNNOTYzWFggSW1hZ2UgVGFnIGZvcm1hdCBwYXJ0aXRpb25zIgorCWRlcGVuZHMgb24gQkNNNjNY WCB8fCBCTUlQU19HRU5FUklDIHx8IENPTVBJTEVfVEVTVAorCXNlbGVjdCBDUkMzMgorCWhlbHAK KwkgIEltYWdlIFRhZyBpcyB0aGUgZmlybXdhcmUgaGVhZGVyIHVzZWQgYnkgYnJvYWRjb20gb24g dGhlaXIgeERTTCBsaW5lCisJICBvZiBkZXZpY2VzLiBJdCBpcyB1c2VkIHRvIGRlc2NyaWJlIHRo ZSBvZmZzZXRzIGFuZCBsZW5ndGhzIG9mIGtlcm5lbAorCSAgYW5kIHJvb3RmcyBwYXJ0aXRpb25z LgorCSAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBwYXJzaW5nIGEgcGFydGl0aW9uIHdp dGggYW4gSW1hZ2UgVGFnCisJICBoZWFkZXIgYW5kIGNyZWF0ZXMgdXAgdG8gdHdvIHBhcnRpdGlv bnMsIGtlcm5lbCBhbmQgcm9vdGZzLgorCiBjb25maWcgTVREX1BBUlNFUl9UUlgKIAl0cmlzdGF0 ZSAiUGFyc2VyIGZvciBUUlggZm9ybWF0IHBhcnRpdGlvbnMiCiAJZGVwZW5kcyBvbiBNVEQgJiYg KEJDTTQ3WFggfHwgQVJDSF9CQ01fNTMwMVggfHwgQ09NUElMRV9URVNUKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tdGQvcGFyc2Vycy9NYWtlZmlsZSBiL2RyaXZlcnMvbXRkL3BhcnNlcnMvTWFrZWZp bGUKaW5kZXggZDg0MThiZjY4MDRhLi4zODYwYzQ0NjRjNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bXRkL3BhcnNlcnMvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9tdGQvcGFyc2Vycy9NYWtlZmlsZQpA QCAtMSwzICsxLDQgQEAKK29iai0kKENPTkZJR19NVERfUEFSU0VSX0lNQUdFVEFHKQkrPSBwYXJz ZXJfaW1hZ2V0YWcubwogb2JqLSQoQ09ORklHX01URF9QQVJTRVJfVFJYKQkJKz0gcGFyc2VyX3Ry eC5vCiBvYmotJChDT05GSUdfTVREX1NIQVJQU0xfUEFSVFMpCQkrPSBzaGFycHNscGFydC5vCiBv YmotJChDT05GSUdfTVREX1JFREJPT1RfUEFSVFMpCQkrPSByZWRib290Lm8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbXRkL3BhcnNlcnMvcGFyc2VyX2ltYWdldGFnLmMgYi9kcml2ZXJzL210ZC9wYXJz ZXJzL3BhcnNlcl9pbWFnZXRhZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNzRiNjZkMDA5YjVjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tdGQvcGFyc2Vy cy9wYXJzZXJfaW1hZ2V0YWcuYwpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAqIEJDTTYzWFggQ0ZF IGltYWdlIHRhZyBwYXJzZXIKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAwNi0yMDA4ICBGbG9yaWFu IEZhaW5lbGxpIDxmbG9yaWFuQG9wZW53cnQub3JnPgorICoJCQkgIE1pa2UgQWxib24gPG1hbGJv bkBvcGVud3J0Lm9yZz4KKyAqIENvcHlyaWdodCDCqSAyMDA5LTIwMTAgIERhbmllbCBEaWNraW5z b24gPG9wZW53cnRAY3Nob3JlLm5lb21haWxib3gubmV0PgorICogQ29weXJpZ2h0IMKpIDIwMTEt MjAxMyAgSm9uYXMgR29yc2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxE X01PRE5BTUUgIjogIiBmbXQKKworI2luY2x1ZGUgPGxpbnV4L2JjbTk2M3h4X3RhZy5oPgorI2lu Y2x1ZGUgPGxpbnV4L2NyYzMyLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgorI2luY2x1ZGUgPGxpbnV4 L210ZC9tdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgorCisvKiBFbnN1 cmUgc3RyaW5ncyByZWFkIGZyb20gZmxhc2ggc3RydWN0cyBhcmUgbnVsbCB0ZXJtaW5hdGVkICov CisjZGVmaW5lIFNUUl9OVUxMX1RFUk1JTkFURSh4KSBcCisJZG8geyBjaGFyICpfc3RyID0gKHgp OyBfc3RyW3NpemVvZih4KSAtIDFdID0gMDsgfSB3aGlsZSAoMCkKKworc3RhdGljIGludCBiY205 NjN4eF9yZWFkX2ltYWdldGFnKHN0cnVjdCBtdGRfaW5mbyAqbWFzdGVyLCBjb25zdCBjaGFyICpu YW1lLAorCWxvZmZfdCB0YWdfb2Zmc2V0LCBzdHJ1Y3QgYmNtX3RhZyAqYnVmKQoreworCWludCBy ZXQ7CisJc2l6ZV90IHJldGxlbjsKKwl1MzIgY29tcHV0ZWRfY3JjOworCisJcmV0ID0gbXRkX3Jl YWQobWFzdGVyLCB0YWdfb2Zmc2V0LCBzaXplb2YoKmJ1ZiksICZyZXRsZW4sICh2b2lkICopYnVm KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKHJldGxlbiAhPSBzaXplb2YoKmJ1 ZikpCisJCXJldHVybiAtRUlPOworCisJY29tcHV0ZWRfY3JjID0gY3JjMzJfbGUoSU1BR0VUQUdf Q1JDX1NUQVJULCAodTggKilidWYsCisJCQkJb2Zmc2V0b2Yoc3RydWN0IGJjbV90YWcsIGhlYWRl cl9jcmMpKTsKKwlpZiAoY29tcHV0ZWRfY3JjID09IGJ1Zi0+aGVhZGVyX2NyYykgeworCQlTVFJf TlVMTF9URVJNSU5BVEUoYnVmLT5ib2FyZF9pZCk7CisJCVNUUl9OVUxMX1RFUk1JTkFURShidWYt PnRhZ192ZXJzaW9uKTsKKworCQlwcl9pbmZvKCIlczogQ0ZFIGltYWdlIHRhZyBmb3VuZCBhdCAw eCVsbHggd2l0aCB2ZXJzaW9uICVzLCBib2FyZCB0eXBlICVzXG4iLAorCQkJbmFtZSwgdGFnX29m ZnNldCwgYnVmLT50YWdfdmVyc2lvbiwgYnVmLT5ib2FyZF9pZCk7CisKKwkJcmV0dXJuIDA7CisJ fQorCisJcHJfd2FybigiJXM6IENGRSBpbWFnZSB0YWcgYXQgMHglbGx4IENSQyBpbnZhbGlkIChl eHBlY3RlZCAlMDh4LCBhY3R1YWwgJTA4eClcbiIsCisJCW5hbWUsIHRhZ19vZmZzZXQsIGJ1Zi0+ aGVhZGVyX2NyYywgY29tcHV0ZWRfY3JjKTsKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGlj IGludCBiY205NjN4eF9wYXJzZV9pbWFnZXRhZ19wYXJ0aXRpb25zKHN0cnVjdCBtdGRfaW5mbyAq bWFzdGVyLAorCQkJCQljb25zdCBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiAqKnBwYXJ0cywKKwkJCQkJ c3RydWN0IG10ZF9wYXJ0X3BhcnNlcl9kYXRhICpkYXRhKQoreworCS8qIENGRSwgTlZSQU0gYW5k IGdsb2JhbCBMaW51eCBhcmUgYWx3YXlzIHByZXNlbnQgKi8KKwlpbnQgbnJwYXJ0cyA9IDAsIGN1 cnBhcnQgPSAwOworCXN0cnVjdCBiY21fdGFnICpidWYgPSBOVUxMOworCXN0cnVjdCBtdGRfcGFy dGl0aW9uICpwYXJ0czsKKwlpbnQgcmV0OworCXVuc2lnbmVkIGludCByb290ZnNhZGRyLCBrZXJu ZWxhZGRyLCBzcGFyZWFkZHIsIG9mZnNldDsKKwl1bnNpZ25lZCBpbnQgcm9vdGZzbGVuLCBrZXJu ZWxsZW4sIHNwYXJlbGVuLCB0b3RhbGxlbjsKKwlpbnQgaTsKKwlib29sIHJvb3Rmc19maXJzdCA9 IGZhbHNlOworCisJYnVmID0gdm1hbGxvYyhzaXplb2Yoc3RydWN0IGJjbV90YWcpKTsKKwlpZiAo IWJ1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiBHZXQgdGhlIHRhZyAqLworCXJldCA9IGJj bTk2M3h4X3JlYWRfaW1hZ2V0YWcobWFzdGVyLCAicm9vdGZzIiwgMCwgYnVmKTsKKwlpZiAoIXJl dCkgeworCQlTVFJfTlVMTF9URVJNSU5BVEUoYnVmLT5mbGFzaF9pbWFnZV9zdGFydCk7CisJCWlm IChrc3RydG91aW50KGJ1Zi0+Zmxhc2hfaW1hZ2Vfc3RhcnQsIDEwLCAmcm9vdGZzYWRkcikgfHwK KwkJCQlyb290ZnNhZGRyIDwgQkNNOTYzWFhfRVhURU5ERURfU0laRSkgeworCQkJcHJfZXJyKCJp bnZhbGlkIHJvb3RmcyBhZGRyZXNzOiAlKnBoXG4iLAorCQkJCShpbnQpc2l6ZW9mKGJ1Zi0+Zmxh c2hfaW1hZ2Vfc3RhcnQpLAorCQkJCWJ1Zi0+Zmxhc2hfaW1hZ2Vfc3RhcnQpOworCQkJZ290byBv dXQ7CisJCX0KKworCQlTVFJfTlVMTF9URVJNSU5BVEUoYnVmLT5rZXJuZWxfYWRkcmVzcyk7CisJ CWlmIChrc3RydG91aW50KGJ1Zi0+a2VybmVsX2FkZHJlc3MsIDEwLCAma2VybmVsYWRkcikgfHwK KwkJCQlrZXJuZWxhZGRyIDwgQkNNOTYzWFhfRVhURU5ERURfU0laRSkgeworCQkJcHJfZXJyKCJp bnZhbGlkIGtlcm5lbCBhZGRyZXNzOiAlKnBoXG4iLAorCQkJCShpbnQpc2l6ZW9mKGJ1Zi0+a2Vy bmVsX2FkZHJlc3MpLAorCQkJCWJ1Zi0+a2VybmVsX2FkZHJlc3MpOworCQkJZ290byBvdXQ7CisJ CX0KKworCQlTVFJfTlVMTF9URVJNSU5BVEUoYnVmLT5rZXJuZWxfbGVuZ3RoKTsKKwkJaWYgKGtz dHJ0b3VpbnQoYnVmLT5rZXJuZWxfbGVuZ3RoLCAxMCwgJmtlcm5lbGxlbikpIHsKKwkJCXByX2Vy cigiaW52YWxpZCBrZXJuZWwgbGVuZ3RoOiAlKnBoXG4iLAorCQkJCShpbnQpc2l6ZW9mKGJ1Zi0+ a2VybmVsX2xlbmd0aCksCisJCQkJYnVmLT5rZXJuZWxfbGVuZ3RoKTsKKwkJCWdvdG8gb3V0Owor CQl9CisKKwkJU1RSX05VTExfVEVSTUlOQVRFKGJ1Zi0+dG90YWxfbGVuZ3RoKTsKKwkJaWYgKGtz dHJ0b3VpbnQoYnVmLT50b3RhbF9sZW5ndGgsIDEwLCAmdG90YWxsZW4pKSB7CisJCQlwcl9lcnIo ImludmFsaWQgdG90YWwgbGVuZ3RoOiAlKnBoXG4iLAorCQkJCShpbnQpc2l6ZW9mKGJ1Zi0+dG90 YWxfbGVuZ3RoKSwKKwkJCQlidWYtPnRvdGFsX2xlbmd0aCk7CisJCQlnb3RvIG91dDsKKwkJfQor CisJCS8qCisJCSAqIEFkZHJlc3NlcyBhcmUgZmxhc2ggYWJzb2x1dGUsIHNvIGNvbnZlcnQgdG8g cGFydGl0aW9uCisJCSAqIHJlbGF0aXZlIGFkZHJlc3Nlcy4gQXNzdW1lIGVpdGhlciBrZXJuZWwg b3Igcm9vdGZzIHdpbGwKKwkJICogZGlyZWN0bHkgZm9sbG93IHRoZSBpbWFnZSB0YWcuCisJCSAq LworCQlpZiAocm9vdGZzYWRkciA8IGtlcm5lbGFkZHIpCisJCQlvZmZzZXQgPSByb290ZnNhZGRy IC0gc2l6ZW9mKHN0cnVjdCBiY21fdGFnKTsKKwkJZWxzZQorCQkJb2Zmc2V0ID0ga2VybmVsYWRk ciAtIHNpemVvZihzdHJ1Y3QgYmNtX3RhZyk7CisKKwkJa2VybmVsYWRkciA9IGtlcm5lbGFkZHIg LSBvZmZzZXQ7CisJCXJvb3Rmc2FkZHIgPSByb290ZnNhZGRyIC0gb2Zmc2V0OworCQlzcGFyZWFk ZHIgPSByb3VuZHVwKHRvdGFsbGVuLCBtYXN0ZXItPmVyYXNlc2l6ZSk7CisKKwkJaWYgKHJvb3Rm c2FkZHIgPCBrZXJuZWxhZGRyKSB7CisJCQkvKiBkZWZhdWx0IEJyb2FkY29tIGxheW91dCAqLwor CQkJcm9vdGZzbGVuID0ga2VybmVsYWRkciAtIHJvb3Rmc2FkZHI7CisJCQlyb290ZnNfZmlyc3Qg PSB0cnVlOworCQl9IGVsc2UgeworCQkJLyogT3BlbldydCBsYXlvdXQgKi8KKwkJCXJvb3Rmc2Fk ZHIgPSBrZXJuZWxhZGRyICsga2VybmVsbGVuOworCQkJcm9vdGZzbGVuID0gc3BhcmVhZGRyIC0g cm9vdGZzYWRkcjsKKwkJfQorCX0gZWxzZSB7CisJCWdvdG8gb3V0OworCX0KKwlzcGFyZWxlbiA9 IG1hc3Rlci0+c2l6ZSAtIHNwYXJlYWRkcjsKKworCS8qIERldGVybWluZSBudW1iZXIgb2YgcGFy dGl0aW9ucyAqLworCWlmIChyb290ZnNsZW4gPiAwKQorCQlucnBhcnRzKys7CisKKwlpZiAoa2Vy bmVsbGVuID4gMCkKKwkJbnJwYXJ0cysrOworCisJcGFydHMgPSBremFsbG9jKHNpemVvZigqcGFy dHMpICogbnJwYXJ0cyArIDEwICogbnJwYXJ0cywgR0ZQX0tFUk5FTCk7CisJaWYgKCFwYXJ0cykg eworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBTdGFydCBidWlsZGlu ZyBwYXJ0aXRpb24gbGlzdCAqLworCWlmIChrZXJuZWxsZW4gPiAwKSB7CisJCWludCBrZXJuZWxw YXJ0ID0gY3VycGFydDsKKworCQlpZiAocm9vdGZzbGVuID4gMCAmJiByb290ZnNfZmlyc3QpCisJ CQlrZXJuZWxwYXJ0Kys7CisJCXBhcnRzW2tlcm5lbHBhcnRdLm5hbWUgPSAia2VybmVsIjsKKwkJ cGFydHNba2VybmVscGFydF0ub2Zmc2V0ID0ga2VybmVsYWRkcjsKKwkJcGFydHNba2VybmVscGFy dF0uc2l6ZSA9IGtlcm5lbGxlbjsKKwkJY3VycGFydCsrOworCX0KKworCWlmIChyb290ZnNsZW4g PiAwKSB7CisJCWludCByb290ZnNwYXJ0ID0gY3VycGFydDsKKworCQlpZiAoa2VybmVsbGVuID4g MCAmJiByb290ZnNfZmlyc3QpCisJCQlyb290ZnNwYXJ0LS07CisJCXBhcnRzW3Jvb3Rmc3BhcnRd Lm5hbWUgPSAicm9vdGZzIjsKKwkJcGFydHNbcm9vdGZzcGFydF0ub2Zmc2V0ID0gcm9vdGZzYWRk cjsKKwkJcGFydHNbcm9vdGZzcGFydF0uc2l6ZSA9IHJvb3Rmc2xlbjsKKwkJaWYgKHNwYXJlbGVu ID4gMCAgJiYgIXJvb3Rmc19maXJzdCkKKwkJCXBhcnRzW3Jvb3Rmc3BhcnRdLnNpemUgKz0gc3Bh cmVsZW47CisJCWN1cnBhcnQrKzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbnJwYXJ0czsgaSsr KQorCQlwcl9pbmZvKCJQYXJ0aXRpb24gJWQgaXMgJXMgb2Zmc2V0ICVsbHggYW5kIGxlbmd0aCAl bGx4XG4iLCBpLAorCQkJcGFydHNbaV0ubmFtZSwgcGFydHNbaV0ub2Zmc2V0LAlwYXJ0c1tpXS5z aXplKTsKKworCXByX2luZm8oIlNwYXJlIHBhcnRpdGlvbiBpcyBvZmZzZXQgJXggYW5kIGxlbmd0 aCAleFxuIiwJc3BhcmVhZGRyLAorCQlzcGFyZWxlbik7CisKKwkqcHBhcnRzID0gcGFydHM7CisJ cmV0ID0gMDsKKworb3V0OgorCXZmcmVlKGJ1Zik7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJcmV0dXJuIG5ycGFydHM7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRfcGFyc2Vy IGJjbTk2M3h4X2ltYWdldGFnX3BhcnNlciA9IHsKKwkucGFyc2VfZm4gPSBiY205NjN4eF9wYXJz ZV9pbWFnZXRhZ19wYXJ0aXRpb25zLAorCS5uYW1lID0gImJjbTk2M3h4LWltYWdldGFnIiwKK307 Cittb2R1bGVfbXRkX3BhcnRfcGFyc2VyKGJjbTk2M3h4X2ltYWdldGFnX3BhcnNlcik7CisKK01P RFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BVVRIT1IoIkRhbmllbCBEaWNraW5zb24gPG9w ZW53cnRAY3Nob3JlLm5lb21haWxib3gubmV0PiIpOworTU9EVUxFX0FVVEhPUigiRmxvcmlhbiBG YWluZWxsaSA8ZmxvcmlhbkBvcGVud3J0Lm9yZz4iKTsKK01PRFVMRV9BVVRIT1IoIk1pa2UgQWxi b24gPG1hbGJvbkBvcGVud3J0Lm9yZz4iKTsKK01PRFVMRV9BVVRIT1IoIkpvbmFzIEdvcnNraSA8 am9uYXMuZ29yc2tpQGdtYWlsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiTVREIHBhcnNl ciBmb3IgQkNNOTYzWFggQ0ZFIEltYWdlIFRhZyBwYXJ0aXRpb25zIik7Ci0tIAoyLjEzLjIKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlu dXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo=