From mboxrd@z Thu Jan 1 00:00:00 1970 From: Praveen Kumar Subject: [PATCH v5 07/17] rbtree: low level optimizations in rb_insert_color() Date: Fri, 14 Jul 2017 13:56:26 +0530 Message-ID: <20170714082636.29511-8-kpraveen.lkml@gmail.com> References: <20170714082636.29511-1-kpraveen.lkml@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170714082636.29511-1-kpraveen.lkml@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, kpraveen.lkml@gmail.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org RnJvbTogTWljaGVsIExlc3BpbmFzc2UgPHdhbGtlbkBnb29nbGUuY29tPgoKLSBVc2UgdGhlIG5l d2x5IGludHJvZHVjZWQgcmJfc2V0X3BhcmVudF9jb2xvcigpIGZ1bmN0aW9uIHRvIGZsaXAgdGhl IGNvbG9yCiAgb2Ygbm9kZXMgd2hvc2UgcGFyZW50IGlzIGFscmVhZHkga25vd24uCi0gT3B0aW1p emUgcmJfcGFyZW50KCkgd2hlbiB0aGUgbm9kZSBpcyBrbm93biB0byBiZSByZWQgLSB0aGVyZSBp cyBubyBuZWVkCiAgdG8gbWFzayBvdXQgdGhlIGNvbG9yIGluIHRoYXQgY2FzZS4KLSBGbGlwcGlu ZyBncGFyZW50J3MgY29sb3IgdG8gcmVkIHJlcXVpcmVzIHVzIHRvIGZldGNoIGl0cyByYl9wYXJl bnRfY29sb3IKICBmaWVsZCwgc28gd2UgY2FuIHJldXNlIGl0IGFzIHRoZSBwYXJlbnQgdmFsdWUg Zm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uLgotIERvIG5vdCB1c2UgX19yYl9yb3RhdGVfbGVm dCgpIGFuZCBfX3JiX3JvdGF0ZV9yaWdodCgpIHRvIGhhbmRsZSB0cmVlCiAgcm90YXRpb25zOiB3 ZSBhbHJlYWR5IGhhdmUgcG9pbnRlcnMgdG8gYWxsIHJlbGV2YW50IG5vZGVzLCBhbmQga25vdyB0 aGVpcgogIGNvbG9ycyAoZWl0aGVyIGJlY2F1c2Ugd2Ugd2FudCB0byBhZGp1c3QgaXQsIG9yIGJl Y2F1c2Ugd2UndmUgdGVzdGVkIGl0LAogIG9yIHdlIGNhbiBkZWR1Y2UgaXQgYXMgYmxhY2sgZHVl IHRvIHRoZSBub2RlIHByb3hpbWl0eSB0byBhIGtub3duIHJlZCBub2RlKS4KICBTbyB3ZSBjYW4g Z2VuZXJhdGUgbW9yZSBlZmZpY2llbnQgY29kZSBieSBtYWtpbmcgdXNlIG9mIHRoZSBub2RlIHBv aW50ZXJzCiAgd2UgYWxyZWFkeSBoYXZlLCBhbmQgc2V0dGluZyBib3RoIHRoZSBwYXJlbnQgYW5k IGNvbG9yIGF0dHJpYnV0ZXMgZm9yCiAgbm9kZXMgYWxsIGF0IG9uY2UuIEFsc28gaW4gQ2FzZSAy LCBzb21lIG5vZGUgYXR0cmlidXRlcyBkb24ndCBoYXZlIHRvCiAgYmUgc2V0IGJlY2F1c2Ugd2Ug a25vdyBhbm90aGVyIHRyZWUgcm90YXRpb24gKENhc2UgMykgd2lsbCBhbHdheXMgZm9sbG93CiAg YW5kIG92ZXJyaWRlIHRoZW0uCgpTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgTGVzcGluYXNzZSA8d2Fs a2VuQGdvb2dsZS5jb20+CkNjOiBBbmRyZWEgQXJjYW5nZWxpIDxhYXJjYW5nZUByZWRoYXQuY29t PgpBY2tlZC1ieTogRGF2aWQgV29vZGhvdXNlIDxEYXZpZC5Xb29kaG91c2VAaW50ZWwuY29tPgpD YzogUmlrIHZhbiBSaWVsIDxyaWVsQHJlZGhhdC5jb20+CkNjOiBQZXRlciBaaWpsc3RyYSA8YS5w LnppamxzdHJhQGNoZWxsby5ubD4KQ2M6IERhbmllbCBTYW50b3MgPGRhbmllbC5zYW50b3NAcG9i b3guY29tPgpDYzogSmVucyBBeGJvZSA8YXhib2VAa2VybmVsLmRrPgpDYzogIkVyaWMgVy4gQmll ZGVybWFuIiA8ZWJpZWRlcm1AeG1pc3Npb24uY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9y dG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2 YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CltMaW51eCBjb21taXQgNWJjOTE4 OGFhMjA3ZGFmZDQ3ZWFiNTdkZjdjNGZlNWIzZDNmNjM2YV0KClBvcnRlZCB0byBYZW4uCgpTaWdu ZWQtb2ZmLWJ5OiBQcmF2ZWVuIEt1bWFyIDxrcHJhdmVlbi5sa21sQGdtYWlsLmNvbT4KLS0tCiB4 ZW4vY29tbW9uL3JidHJlZS5jIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwg MzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9yYnRyZWUuYyBiL3hlbi9j b21tb24vcmJ0cmVlLmMKaW5kZXggMTZhMWE5NzE5My4uYzNhODU3NWVjMCAxMDA2NDQKLS0tIGEv eGVuL2NvbW1vbi9yYnRyZWUuYworKysgYi94ZW4vY29tbW9uL3JidHJlZS5jCkBAIC0yMyw2ICsy MywyNSBAQAogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogI2luY2x1ZGUgPHhlbi9yYnRyZWUuaD4K IAorLyoKKyAqIHJlZC1ibGFjayB0cmVlcyBwcm9wZXJ0aWVzOiAgaHR0cDovL2VuLndpa2lwZWRp YS5vcmcvd2lraS9SYnRyZWUKKyAqCisgKiAgMSkgQSBub2RlIGlzIGVpdGhlciByZWQgb3IgYmxh Y2sKKyAqICAyKSBUaGUgcm9vdCBpcyBibGFjaworICogIDMpIEFsbCBsZWF2ZXMgKE5VTEwpIGFy ZSBibGFjaworICogIDQpIEJvdGggY2hpbGRyZW4gb2YgZXZlcnkgcmVkIG5vZGUgYXJlIGJsYWNr CisgKiAgNSkgRXZlcnkgc2ltcGxlIHBhdGggZnJvbSByb290IHRvIGxlYXZlcyBjb250YWlucyB0 aGUgc2FtZSBudW1iZXIKKyAqICAgICBvZiBibGFjayBub2Rlcy4KKyAqCisgKiAgNCBhbmQgNSBn aXZlIHRoZSBPKGxvZyBuKSBndWFyYW50ZWUsIHNpbmNlIDQgaW1wbGllcyB5b3UgY2Fubm90IGhh dmUgdHdvCisgKiAgY29uc2VjdXRpdmUgcmVkIG5vZGVzIGluIGEgcGF0aCBhbmQgZXZlcnkgcmVk IG5vZGUgaXMgdGhlcmVmb3JlIGZvbGxvd2VkIGJ5CisgKiAgYSBibGFjay4gU28gaWYgQiBpcyB0 aGUgbnVtYmVyIG9mIGJsYWNrIG5vZGVzIG9uIGV2ZXJ5IHNpbXBsZSBwYXRoIChhcyBwZXIKKyAq ICA1KSwgdGhlbiB0aGUgbG9uZ2VzdCBwb3NzaWJsZSBwYXRoIGR1ZSB0byA0IGlzIDJCLgorICoK KyAqICBXZSBzaGFsbCBpbmRpY2F0ZSBjb2xvciB3aXRoIGNhc2UsIHdoZXJlIGJsYWNrIG5vZGVz IGFyZSB1cHBlcmNhc2UgYW5kIHJlZAorICogIG5vZGVzIHdpbGwgYmUgbG93ZXJjYXNlLgorICov CisKICNkZWZpbmUJCVJCX1JFRAkJMAogI2RlZmluZQkJUkJfQkxBQ0sJMQogCkBAIC00MSw2ICs2 MCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmJfc2V0X2NvbG9yKHN0cnVjdCByYl9ub2RlICpy YiwgaW50IGNvbG9yKQogCXJiLT5fX3JiX3BhcmVudF9jb2xvciA9IChyYi0+X19yYl9wYXJlbnRf Y29sb3IgJiB+MSkgfCBjb2xvcjsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHJiX3NldF9wYXJl bnRfY29sb3Ioc3RydWN0IHJiX25vZGUgKnJiLAorCQkJCSAgICAgIHN0cnVjdCByYl9ub2RlICpw LCBpbnQgY29sb3IpCit7CisJcmItPl9fcmJfcGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcp cCB8IGNvbG9yOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCByYl9ub2RlICpyYl9yZWRfcGFy ZW50KHN0cnVjdCByYl9ub2RlICpyZWQpCit7CisJcmV0dXJuIChzdHJ1Y3QgcmJfbm9kZSAqKXJl ZC0+X19yYl9wYXJlbnRfY29sb3I7Cit9CisKIHN0YXRpYyB2b2lkIF9fcmJfcm90YXRlX2xlZnQo c3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCByYl9yb290ICpyb290KQogewogCXN0cnVjdCBy Yl9ub2RlICpyaWdodCA9IG5vZGUtPnJiX3JpZ2h0OwpAQCAtODcsOSArMTE3LDMwIEBAIHN0YXRp YyB2b2lkIF9fcmJfcm90YXRlX3JpZ2h0KHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJf cm9vdCAqcm9vdCkKIAlyYl9zZXRfcGFyZW50KG5vZGUsIGxlZnQpOwogfQogCisvKgorICogSGVs cGVyIGZ1bmN0aW9uIGZvciByb3RhdGlvbnM6CisgKiAtIG9sZCdzIHBhcmVudCBhbmQgY29sb3Ig Z2V0IGFzc2lnbmVkIHRvIG5ldworICogLSBvbGQgZ2V0cyBhc3NpZ25lZCBuZXcgYXMgYSBwYXJl bnQgYW5kICdjb2xvcicgYXMgYSBjb2xvci4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfX3Ji X3JvdGF0ZV9zZXRfcGFyZW50cyhzdHJ1Y3QgcmJfbm9kZSAqb2xkLCBzdHJ1Y3QgcmJfbm9kZSAq bmV3LAorCQkJc3RydWN0IHJiX3Jvb3QgKnJvb3QsIGludCBjb2xvcikKK3sKKwlzdHJ1Y3QgcmJf bm9kZSAqcGFyZW50ID0gcmJfcGFyZW50KG9sZCk7CisJbmV3LT5fX3JiX3BhcmVudF9jb2xvciA9 IG9sZC0+X19yYl9wYXJlbnRfY29sb3I7CisJcmJfc2V0X3BhcmVudF9jb2xvcihvbGQsIG5ldywg Y29sb3IpOworCWlmIChwYXJlbnQpIHsKKwkJaWYgKHBhcmVudC0+cmJfbGVmdCA9PSBvbGQpCisJ CQlwYXJlbnQtPnJiX2xlZnQgPSBuZXc7CisJCWVsc2UKKwkJCXBhcmVudC0+cmJfcmlnaHQgPSBu ZXc7CisJfSBlbHNlCisJCXJvb3QtPnJiX25vZGUgPSBuZXc7Cit9CisKIHZvaWQgcmJfaW5zZXJ0 X2NvbG9yKHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKIHsKLQlz dHJ1Y3QgcmJfbm9kZSAqcGFyZW50LCAqZ3BhcmVudDsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50 ID0gcmJfcmVkX3BhcmVudChub2RlKSwgKmdwYXJlbnQsICp0bXA7CiAKIAl3aGlsZSAodHJ1ZSkg ewogCQkvKgpAQCAtOTksNTkgKzE1MCwxMDQgQEAgdm9pZCByYl9pbnNlcnRfY29sb3Ioc3RydWN0 IHJiX25vZGUgKm5vZGUsIHN0cnVjdCByYl9yb290ICpyb290KQogCQkgKiBPdGhlcndpc2UsIHRh a2Ugc29tZSBjb3JyZWN0aXZlIGFjdGlvbiBhcyB3ZSBkb24ndAogCQkgKiB3YW50IGEgcmVkIHJv b3Qgb3IgdHdvIGNvbnNlY3V0aXZlIHJlZCBub2Rlcy4KIAkJICovCi0JCXBhcmVudCA9IHJiX3Bh cmVudChub2RlKTsKIAkJaWYgKCFwYXJlbnQpIHsKLQkJCXJiX3NldF9ibGFjayhub2RlKTsKKwkJ CXJiX3NldF9wYXJlbnRfY29sb3Iobm9kZSwgTlVMTCwgUkJfQkxBQ0spOwogCQkJYnJlYWs7CiAJ CX0gZWxzZSBpZiAocmJfaXNfYmxhY2socGFyZW50KSkKIAkJCWJyZWFrOwogCi0JCWdwYXJlbnQg PSByYl9wYXJlbnQocGFyZW50KTsKLQotCQlpZiAocGFyZW50ID09IGdwYXJlbnQtPnJiX2xlZnQp Ci0JCXsKLQkJCXsKLQkJCQlyZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdW5jbGUgPSBncGFyZW50 LT5yYl9yaWdodDsKLQkJCQlpZiAodW5jbGUgJiYgcmJfaXNfcmVkKHVuY2xlKSkKLQkJCQl7Ci0J CQkJCXJiX3NldF9ibGFjayh1bmNsZSk7Ci0JCQkJCXJiX3NldF9ibGFjayhwYXJlbnQpOwotCQkJ CQlyYl9zZXRfcmVkKGdwYXJlbnQpOwotCQkJCQlub2RlID0gZ3BhcmVudDsKLQkJCQkJY29udGlu dWU7Ci0JCQkJfQorCQlncGFyZW50ID0gcmJfcmVkX3BhcmVudChwYXJlbnQpOworCisJCWlmIChw YXJlbnQgPT0gZ3BhcmVudC0+cmJfbGVmdCkgeworCQkJdG1wID0gZ3BhcmVudC0+cmJfcmlnaHQ7 CisJCQlpZiAodG1wICYmIHJiX2lzX3JlZCh0bXApKSB7CisJCQkJLyoKKwkJCQkgKiBDYXNlIDEg LSBjb2xvciBmbGlwcworCQkJCSAqCisJCQkJICogICAgICAgRyAgICAgICAgICAgIGcKKwkJCQkg KiAgICAgIC8gXCAgICAgICAgICAvIFwKKwkJCQkgKiAgICAgcCAgIHUgIC0tPiAgIFAgICBVCisJ CQkJICogICAgLyAgICAgICAgICAgIC8KKwkJCQkgKiAgIG4gICAgICAgICAgICBOCisJCQkJICoK KwkJCQkgKiBIb3dldmVyLCBzaW5jZSBnJ3MgcGFyZW50IG1pZ2h0IGJlIHJlZCwgYW5kCisJCQkJ ICogNCkgZG9lcyBub3QgYWxsb3cgdGhpcywgd2UgbmVlZCB0byByZWN1cnNlCisJCQkJICogYXQg Zy4KKwkJCQkgKi8KKwkJCQlyYl9zZXRfcGFyZW50X2NvbG9yKHRtcCwgZ3BhcmVudCwgUkJfQkxB Q0spOworCQkJCXJiX3NldF9wYXJlbnRfY29sb3IocGFyZW50LCBncGFyZW50LCBSQl9CTEFDSyk7 CisJCQkJbm9kZSA9IGdwYXJlbnQ7CisJCQkJcGFyZW50ID0gcmJfcGFyZW50KG5vZGUpOworCQkJ CXJiX3NldF9wYXJlbnRfY29sb3Iobm9kZSwgcGFyZW50LCBSQl9SRUQpOworCQkJCWNvbnRpbnVl OwogCQkJfQogCiAJCQlpZiAocGFyZW50LT5yYl9yaWdodCA9PSBub2RlKSB7Ci0JCQkJX19yYl9y b3RhdGVfbGVmdChwYXJlbnQsIHJvb3QpOworCQkJCS8qCisJCQkJICogQ2FzZSAyIC0gbGVmdCBy b3RhdGUgYXQgcGFyZW50CisJCQkJICoKKwkJCQkgKiAgICAgIEcgICAgICAgICAgICAgRworCQkJ CSAqICAgICAvIFwgICAgICAgICAgIC8gXAorCQkJCSAqICAgIHAgICBVICAtLT4gICAgbiAgIFUK KwkJCQkgKiAgICAgXCAgICAgICAgICAgLworCQkJCSAqICAgICAgbiAgICAgICAgIHAKKwkJCQkg KgorCQkJCSAqIFRoaXMgc3RpbGwgbGVhdmVzIHVzIGluIHZpb2xhdGlvbiBvZiA0KSwgdGhlCisJ CQkJICogY29udGludWF0aW9uIGludG8gQ2FzZSAzIHdpbGwgZml4IHRoYXQuCisJCQkJICovCisJ CQkJcGFyZW50LT5yYl9yaWdodCA9IHRtcCA9IG5vZGUtPnJiX2xlZnQ7CisJCQkJbm9kZS0+cmJf bGVmdCA9IHBhcmVudDsKKwkJCQlpZiAodG1wKQorCQkJCQlyYl9zZXRfcGFyZW50X2NvbG9yKHRt cCwgcGFyZW50LAorCQkJCQkJCSAgICBSQl9CTEFDSyk7CisJCQkJcmJfc2V0X3BhcmVudF9jb2xv cihwYXJlbnQsIG5vZGUsIFJCX1JFRCk7CiAJCQkJcGFyZW50ID0gbm9kZTsKIAkJCX0KIAotCQkJ cmJfc2V0X2JsYWNrKHBhcmVudCk7Ci0JCQlyYl9zZXRfcmVkKGdwYXJlbnQpOwotCQkJX19yYl9y b3RhdGVfcmlnaHQoZ3BhcmVudCwgcm9vdCk7CisJCQkvKgorCQkJICogQ2FzZSAzIC0gcmlnaHQg cm90YXRlIGF0IGdwYXJlbnQKKwkJCSAqCisJCQkgKiAgICAgICAgRyAgICAgICAgICAgUAorCQkJ ICogICAgICAgLyBcICAgICAgICAgLyBcCisJCQkgKiAgICAgIHAgICBVICAtLT4gIG4gICBnCisJ CQkgKiAgICAgLyAgICAgICAgICAgICAgICAgXAorCQkJICogICAgbiAgICAgICAgICAgICAgICAg ICBVCisJCQkgKi8KKwkJCWdwYXJlbnQtPnJiX2xlZnQgPSB0bXAgPSBwYXJlbnQtPnJiX3JpZ2h0 OworCQkJcGFyZW50LT5yYl9yaWdodCA9IGdwYXJlbnQ7CisJCQlpZiAodG1wKQorCQkJCXJiX3Nl dF9wYXJlbnRfY29sb3IodG1wLCBncGFyZW50LCBSQl9CTEFDSyk7CisJCQlfX3JiX3JvdGF0ZV9z ZXRfcGFyZW50cyhncGFyZW50LCBwYXJlbnQsIHJvb3QsIFJCX1JFRCk7CiAJCQlicmVhazsKIAkJ fSBlbHNlIHsKLQkJCXsKLQkJCQlyZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdW5jbGUgPSBncGFy ZW50LT5yYl9sZWZ0OwotCQkJCWlmICh1bmNsZSAmJiByYl9pc19yZWQodW5jbGUpKQotCQkJCXsK LQkJCQkJcmJfc2V0X2JsYWNrKHVuY2xlKTsKLQkJCQkJcmJfc2V0X2JsYWNrKHBhcmVudCk7Ci0J CQkJCXJiX3NldF9yZWQoZ3BhcmVudCk7Ci0JCQkJCW5vZGUgPSBncGFyZW50OwotCQkJCQljb250 aW51ZTsKLQkJCQl9CisJCQl0bXAgPSBncGFyZW50LT5yYl9sZWZ0OworCQkJaWYgKHRtcCAmJiBy Yl9pc19yZWQodG1wKSkgeworCQkJCS8qIENhc2UgMSAtIGNvbG9yIGZsaXBzICovCisJCQkJcmJf c2V0X3BhcmVudF9jb2xvcih0bXAsIGdwYXJlbnQsIFJCX0JMQUNLKTsKKwkJCQlyYl9zZXRfcGFy ZW50X2NvbG9yKHBhcmVudCwgZ3BhcmVudCwgUkJfQkxBQ0spOworCQkJCW5vZGUgPSBncGFyZW50 OworCQkJCXBhcmVudCA9IHJiX3BhcmVudChub2RlKTsKKwkJCQlyYl9zZXRfcGFyZW50X2NvbG9y KG5vZGUsIHBhcmVudCwgUkJfUkVEKTsKKwkJCQljb250aW51ZTsKIAkJCX0KIAogCQkJaWYgKHBh cmVudC0+cmJfbGVmdCA9PSBub2RlKSB7Ci0JCQkJX19yYl9yb3RhdGVfcmlnaHQocGFyZW50LCBy b290KTsKKwkJCQkvKiBDYXNlIDIgLSByaWdodCByb3RhdGUgYXQgcGFyZW50ICovCisJCQkJcGFy ZW50LT5yYl9sZWZ0ID0gdG1wID0gbm9kZS0+cmJfcmlnaHQ7CisJCQkJbm9kZS0+cmJfcmlnaHQg PSBwYXJlbnQ7CisJCQkJaWYgKHRtcCkKKwkJCQkJcmJfc2V0X3BhcmVudF9jb2xvcih0bXAsIHBh cmVudCwKKwkJCQkJCQkgICAgUkJfQkxBQ0spOworCQkJCXJiX3NldF9wYXJlbnRfY29sb3IocGFy ZW50LCBub2RlLCBSQl9SRUQpOwogCQkJCXBhcmVudCA9IG5vZGU7CiAJCQl9CiAKLQkJCXJiX3Nl dF9ibGFjayhwYXJlbnQpOwotCQkJcmJfc2V0X3JlZChncGFyZW50KTsKLQkJCV9fcmJfcm90YXRl X2xlZnQoZ3BhcmVudCwgcm9vdCk7CisJCQkvKiBDYXNlIDMgLSBsZWZ0IHJvdGF0ZSBhdCBncGFy ZW50ICovCisJCQlncGFyZW50LT5yYl9yaWdodCA9IHRtcCA9IHBhcmVudC0+cmJfbGVmdDsKKwkJ CXBhcmVudC0+cmJfbGVmdCA9IGdwYXJlbnQ7CisJCQlpZiAodG1wKQorCQkJCXJiX3NldF9wYXJl bnRfY29sb3IodG1wLCBncGFyZW50LCBSQl9CTEFDSyk7CisJCQlfX3JiX3JvdGF0ZV9zZXRfcGFy ZW50cyhncGFyZW50LCBwYXJlbnQsIHJvb3QsIFJCX1JFRCk7CiAJCQlicmVhazsKIAkJfQogCX0K LS0gCjIuMTIuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=