From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v4 12/16] xen/mm: Switch common/memory.c to use typesafe MFN Date: Wed, 21 Feb 2018 14:02:55 +0000 Message-ID: <20180221140259.29360-13-julien.grall@arm.com> References: <20180221140259.29360-1-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221140259.29360-1-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBuZXcgaGVscGVyIGNvcHlfbWZuX3RvX2d1ZXN0IGlzIGludHJvZHVjZWQgdG8gZWFzaWx5IHRv IGNvcHkgYSBNRk4gdG8KdGhlIGd1ZXN0IG1lbW9yeS4KCk5vdCBmdW5jdGlvbmFsIGNoYW5nZSBp bnRlbmRlZAoKU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNv bT4KCi0tLQpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6 IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNr c29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUu Y29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzog VGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t PgoKICAgIENoYW5nZXMgaW4gdjQ6CiAgICAgICAgLSBQYXRjaCBhZGRlZAotLS0KIHhlbi9jb21t b24vbWVtb3J5LmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDI4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21l bW9yeS5jCmluZGV4IDU5ZDIzYTJhOTguLjkzZDg1NmRmMDIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21t b24vbWVtb3J5LmMKKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwpAQCAtMzMsNiArMzMsMTIgQEAK ICNpbmNsdWRlIDxhc20vZ3Vlc3QuaD4KICNlbmRpZgogCisvKiBPdmVycmlkZSBtYWNyb3MgZnJv bSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KKyN1bmRlZiBwYWdl X3RvX21mbgorI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkK KyN1bmRlZiBtZm5fdG9fcGFnZQorI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3Bh Z2UobWZuX3gobWZuKSkKKwogc3RydWN0IG1lbW9wX2FyZ3MgewogICAgIC8qIElOUFVUICovCiAg ICAgc3RydWN0IGRvbWFpbiAqZG9tYWluOyAgICAgLyogRG9tYWluIHRvIGJlIGFmZmVjdGVkLiAq LwpAQCAtOTUsMTEgKzEwMSwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1heF9vcmRlcihjb25z dCBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiBtaW4ob3JkZXIsIE1BWF9PUkRFUiArIDBV KTsKIH0KIAorLyogSGVscGVyIHRvIGNvcHkgYSB0eXBlc2FmZSBNRk4gdG8gZ3Vlc3QgKi8KKyNk ZWZpbmUgY29weV9tZm5fdG9fZ3Vlc3QoaG5kLCBvZmYsIG1mbikgICAgICAgICAgICBcCisgICAg KHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICB4ZW5fcGZuX3QgbWZuXyA9IG1mbl94KG1mbik7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAg X19jb3B5X3RvX2d1ZXN0X29mZnNldChobmQsIG9mZiwgJm1mbl8sIDEpOyBcCisgICAgfSkKKwog c3RhdGljIHZvaWQgaW5jcmVhc2VfcmVzZXJ2YXRpb24oc3RydWN0IG1lbW9wX2FyZ3MgKmEpCiB7 CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKICAgICB1bnNpZ25lZCBsb25nIGk7Ci0gICAg eGVuX3Bmbl90IG1mbjsKKyAgICBtZm5fdCBtZm47CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IGEt PmRvbWFpbjsKIAogICAgIGlmICggIWd1ZXN0X2hhbmRsZV9pc19udWxsKGEtPmV4dGVudF9saXN0 KSAmJgpAQCAtMTMzLDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIGluY3JlYXNlX3Jlc2VydmF0aW9u KHN0cnVjdCBtZW1vcF9hcmdzICphKQogICAgICAgICAgICAgICFndWVzdF9oYW5kbGVfaXNfbnVs bChhLT5leHRlbnRfbGlzdCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBtZm4gPSBwYWdlX3Rv X21mbihwYWdlKTsKLSAgICAgICAgICAgIGlmICggdW5saWtlbHkoX19jb3B5X3RvX2d1ZXN0X29m ZnNldChhLT5leHRlbnRfbGlzdCwgaSwgJm1mbiwgMSkpICkKKyAgICAgICAgICAgIGlmICggdW5s aWtlbHkoY29weV9tZm5fdG9fZ3Vlc3QoYS0+ZXh0ZW50X2xpc3QsIGksIG1mbikpICkKICAgICAg ICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Niw3ICsxNTksOCBA QCBzdGF0aWMgdm9pZCBwb3B1bGF0ZV9waHlzbWFwKHN0cnVjdCBtZW1vcF9hcmdzICphKQogewog ICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CiAgICAgdW5zaWduZWQgaW50IGksIGo7Ci0gICAg eGVuX3Bmbl90IGdwZm4sIG1mbjsKKyAgICB4ZW5fcGZuX3QgZ3BmbjsKKyAgICBtZm5fdCBtZm47 CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IGEtPmRvbWFpbiwgKmN1cnJfZCA9IGN1cnJlbnQtPmRv bWFpbjsKICAgICBib29sIG5lZWRfdGxiZmx1c2ggPSBmYWxzZTsKICAgICB1aW50MzJfdCB0bGJm bHVzaF90aW1lc3RhbXAgPSAwOwpAQCAtMjA1LDE0ICsyMTksMTUgQEAgc3RhdGljIHZvaWQgcG9w dWxhdGVfcGh5c21hcChzdHJ1Y3QgbWVtb3BfYXJncyAqYSkKICAgICAgICAgewogICAgICAgICAg ICAgaWYgKCBpc19kb21haW5fZGlyZWN0X21hcHBlZChkKSApCiAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgbWZuID0gZ3BmbjsKKyAgICAgICAgICAgICAgICBtZm4gPSBfbWZuKGdwZm4p OwogCi0gICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCAoMVUgPDwgYS0+ZXh0ZW50X29y ZGVyKTsgaisrLCBtZm4rKyApCisgICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCAoMVUg PDwgYS0+ZXh0ZW50X29yZGVyKTsgaisrLAorICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IG1m bl9hZGQobWZuLCAxKSApCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBp ZiAoICFtZm5fdmFsaWQoX21mbihtZm4pKSApCisgICAgICAgICAgICAgICAgICAgIGlmICggIW1m bl92YWxpZChtZm4pICkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg ICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJJbnZhbGlkIG1mbiAlIyJQUklfeGVuX3BmbiJc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm4pOworICAgICAgICAgICAg ICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJJbnZhbGlkIG1mbiAlIyJQUklfbWZu IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG1mbikpOwogICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIH0KIApA QCAtMjIwLDE0ICsyMzUsMTQgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVfcGh5c21hcChzdHJ1Y3Qg bWVtb3BfYXJncyAqYSkKICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZ2V0X3BhZ2UocGFnZSwg ZCkgKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBnZHBy aW50ayhYRU5MT0dfSU5GTywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZm4g JSMiUFJJX3hlbl9wZm4iIGRvZXNuJ3QgYmVsb25nIHRvIGQlZFxuIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZm4sIGQtPmRvbWFpbl9pZCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAibWZuICUjIlBSSV9tZm4iIGRvZXNuJ3QgYmVsb25nIHRvIGQlZFxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5feChtZm4pLCBkLT5kb21h aW5faWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7CiAgICAgICAgICAg ICAgICAgfQogCi0gICAgICAgICAgICAgICAgbWZuID0gZ3BmbjsKKyAgICAgICAgICAgICAgICBt Zm4gPSBfbWZuKGdwZm4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgewpAQCAtMjUzLDE1ICsyNjgsMTUgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVfcGh5c21h cChzdHJ1Y3QgbWVtb3BfYXJncyAqYSkKICAgICAgICAgICAgICAgICBtZm4gPSBwYWdlX3RvX21m bihwYWdlKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ3Vlc3RfcGh5c21hcF9hZGRf cGFnZShkLCBfZ2ZuKGdwZm4pLCBfbWZuKG1mbiksIGEtPmV4dGVudF9vcmRlcik7CisgICAgICAg ICAgICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oZ3BmbiksIG1mbiwgYS0+ZXh0ZW50 X29yZGVyKTsKIAogICAgICAgICAgICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8ICgxVSA8PCBh LT5leHRlbnRfb3JkZXIpOyBqKysgKQotICAgICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9t X21mbihtZm4gKyBqLCBncGZuICsgaik7CisgICAgICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zy b21fbWZuKG1mbl94KG1mbl9hZGQobWZuLCBqKSksIGdwZm4gKyBqKTsKIAogICAgICAgICAgICAg ICAgIC8qIEluZm9ybSB0aGUgZG9tYWluIG9mIHRoZSBuZXcgcGFnZSdzIG1hY2hpbmUgYWRkcmVz cy4gKi8gCi0gICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseShfX2NvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KGEtPmV4dGVudF9saXN0LCBpLCAmbWZuLCAxKSkgKQorICAgICAgICAgICAgICAgIGlmICgg dW5saWtlbHkoY29weV9tZm5fdG9fZ3Vlc3QoYS0+ZXh0ZW50X2xpc3QsIGksIG1mbikpICkKICAg ICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg LTMwNCw3ICszMTksNyBAQCBpbnQgZ3Vlc3RfcmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwg dW5zaWduZWQgbG9uZyBnbWZuKQogICAgICAgICBpZiAoIHAybXQgPT0gcDJtX3JhbV9wYWdpbmdf b3V0ICkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pKTsKLSAg ICAgICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm5feChtZm4pKTsKKyAgICAgICAgICAgIHBh Z2UgPSBtZm5fdG9fcGFnZShtZm4pOwogICAgICAgICAgICAgaWYgKCB0ZXN0X2FuZF9jbGVhcl9i aXQoX1BHQ19hbGxvY2F0ZWQsICZwYWdlLT5jb3VudF9pbmZvKSApCiAgICAgICAgICAgICAgICAg cHV0X3BhZ2UocGFnZSk7CiAgICAgICAgIH0KQEAgLTM0OSw3ICszNjQsNyBAQCBpbnQgZ3Vlc3Rf cmVtb3ZlX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnbWZuKQogICAgIH0K ICNlbmRpZiAvKiBDT05GSUdfWDg2ICovCiAKLSAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuX3go bWZuKSk7CisgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7CiAgICAgaWYgKCB1bmxpa2VseSgh Z2V0X3BhZ2UocGFnZSwgZCkpICkKICAgICB7CiAgICAgICAgIHB1dF9nZm4oZCwgZ21mbik7CkBA IC00OTAsNyArNTA1LDggQEAgc3RhdGljIGxvbmcgbWVtb3J5X2V4Y2hhbmdlKFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX21lbW9yeV9leGNoYW5nZV90KSBhcmcpCiAgICAgUEFHRV9MSVNUX0hF QUQoaW5fY2h1bmtfbGlzdCk7CiAgICAgUEFHRV9MSVNUX0hFQUQob3V0X2NodW5rX2xpc3QpOwog ICAgIHVuc2lnbmVkIGxvbmcgaW5fY2h1bmtfb3JkZXIsIG91dF9jaHVua19vcmRlcjsKLSAgICB4 ZW5fcGZuX3QgICAgIGdwZm4sIGdtZm4sIG1mbjsKKyAgICB4ZW5fcGZuX3QgICAgIGdwZm4sIGdt Zm47CisgICAgbWZuX3QgICAgICAgICBtZm47CiAgICAgdW5zaWduZWQgbG9uZyBpLCBqLCBrOwog ICAgIHVuc2lnbmVkIGludCAgbWVtZmxhZ3MgPSAwOwogICAgIGxvbmcgICAgICAgICAgcmMgPSAw OwpAQCAtNjEyLDcgKzYyOCw3IEBAIHN0YXRpYyBsb25nIG1lbW9yeV9leGNoYW5nZShYRU5fR1VF U1RfSEFORExFX1BBUkFNKHhlbl9tZW1vcnlfZXhjaGFuZ2VfdCkgYXJnKQogICAgICAgICAgICAg ICAgIHAybV90eXBlX3QgcDJtdDsKIAogICAgICAgICAgICAgICAgIC8qIFNoYXJlZCBwYWdlcyBj YW5ub3QgYmUgZXhjaGFuZ2VkICovCi0gICAgICAgICAgICAgICAgbWZuID0gbWZuX3goZ2V0X2dm bl91bnNoYXJlKGQsIGdtZm4gKyBrLCAmcDJtdCkpOworICAgICAgICAgICAgICAgIG1mbiA9IGdl dF9nZm5fdW5zaGFyZShkLCBnbWZuICsgaywgJnAybXQpOwogICAgICAgICAgICAgICAgIGlmICgg cDJtX2lzX3NoYXJlZChwMm10KSApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg ICAgICBwdXRfZ2ZuKGQsIGdtZm4gKyBrKTsKQEAgLTYyMCw5ICs2MzYsOSBAQCBzdGF0aWMgbG9u ZyBtZW1vcnlfZXhjaGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWVtb3J5X2V4Y2hh bmdlX3QpIGFyZykKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOyAKICAgICAgICAgICAg ICAgICB9CiAjZWxzZSAvKiAhQ09ORklHX1g4NiAqLwotICAgICAgICAgICAgICAgIG1mbiA9IG1m bl94KGdmbl90b19tZm4oZCwgX2dmbihnbWZuICsgaykpKTsKKyAgICAgICAgICAgICAgICBtZm4g PSBnZm5fdG9fbWZuKGQsIF9nZm4oZ21mbiArIGspKTsKICNlbmRpZgotICAgICAgICAgICAgICAg IGlmICggdW5saWtlbHkoIW1mbl92YWxpZChfbWZuKG1mbikpKSApCisgICAgICAgICAgICAgICAg aWYgKCB1bmxpa2VseSghbWZuX3ZhbGlkKG1mbikpICkKICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ21mbiArIGspOwogICAgICAgICAgICAgICAgICAg ICByYyA9IC1FSU5WQUw7CkBAIC02NjksMTAgKzY4NSwxMCBAQCBzdGF0aWMgbG9uZyBtZW1vcnlf ZXhjaGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWVtb3J5X2V4Y2hhbmdlX3QpIGFy ZykKICAgICAgICAgICAgIGlmICggIXRlc3RfYW5kX2NsZWFyX2JpdChfUEdDX2FsbG9jYXRlZCwg JnBhZ2UtPmNvdW50X2luZm8pICkKICAgICAgICAgICAgICAgICBCVUcoKTsKICAgICAgICAgICAg IG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwotICAgICAgICAgICAgZ2ZuID0gbWZuX3RvX2dtZm4o ZCwgbWZuKTsKKyAgICAgICAgICAgIGdmbiA9IG1mbl90b19nbWZuKGQsIG1mbl94KG1mbikpOwog ICAgICAgICAgICAgLyogUGFnZXMgd2VyZSB1bnNoYXJlZCBhYm92ZSAqLwogICAgICAgICAgICAg QlVHX09OKFNIQVJFRF9NMlAoZ2ZuKSk7Ci0gICAgICAgICAgICBpZiAoIGd1ZXN0X3BoeXNtYXBf cmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBfbWZuKG1mbiksIDApICkKKyAgICAgICAgICAgIGlm ICggZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdmbiksIG1mbiwgMCkgKQogICAg ICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2Up OwogICAgICAgICB9CkBAIC03MTcsMTYgKzczMywxNiBAQCBzdGF0aWMgbG9uZyBtZW1vcnlfZXhj aGFuZ2UoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWVtb3J5X2V4Y2hhbmdlX3QpIGFyZykK ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Ci0g ICAgICAgICAgICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oZ3BmbiksIF9tZm4obWZu KSwKKyAgICAgICAgICAgIGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihncGZuKSwgbWZu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoLm91dC5leHRlbnRfb3Jk ZXIpOwogCiAgICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZCkgKQogICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgIGZvciAoIGsgPSAwOyBrIDwgKDFVTCA8PCBleGNo Lm91dC5leHRlbnRfb3JkZXIpOyBrKysgKQotICAgICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9m cm9tX21mbihtZm4gKyBrLCBncGZuICsgayk7Ci0gICAgICAgICAgICAgICAgaWYgKCBfX2NvcHlf dG9fZ3Vlc3Rfb2Zmc2V0KGV4Y2gub3V0LmV4dGVudF9zdGFydCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPDwgb3V0X2NodW5rX29yZGVyKSArIGosCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZm4sIDEpICkKKyAg ICAgICAgICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuX2FkZChtZm4sIGsp KSwgZ3BmbiArIGspOworICAgICAgICAgICAgICAgIGlmICggY29weV9tZm5fdG9fZ3Vlc3QoZXhj aC5vdXQuZXh0ZW50X3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGkgPDwgb3V0X2NodW5rX29yZGVyKSArIGosCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtZm4pICkKICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRUZBVUxUOwog ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMjIxLDcgKzEyMzcsNyBAQCBsb25nIGRvX21l bW9yeV9vcCh1bnNpZ25lZCBsb25nIGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBh cmcpCiAgICAgICAgIGlmICggcGFnZSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJjID0gZ3Vl c3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKHhyZnAuZ3BmbiksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihwYWdlX3RvX21mbihwYWdlKSksIDAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZu KHBhZ2UpLCAwKTsKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=