From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v4 11/16] xen/mm: Switch page_alloc.c to typesafe MFN Date: Wed, 21 Feb 2018 14:02:54 +0000 Message-ID: <20180221140259.29360-12-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 Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3Jh bGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKLS0tCkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5j aXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNj OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdp bGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPgoKICAgIENoYW5nZXMgaW4gdjQ6CiAgICAgICAgLSBQYXRjaCBhZGRlZAotLS0KIHhl bi9jb21tb24vcGFnZV9hbGxvYy5jICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9udW1hLmggfCAgOCArKyst LS0KIDIgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgYi94ZW4vY29tbW9uL3BhZ2VfYWxs b2MuYwppbmRleCA0ZGU4OTg4YmVhLi5iMGRiNDFmZWVhIDEwMDY0NAotLS0gYS94ZW4vY29tbW9u L3BhZ2VfYWxsb2MuYworKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwpAQCAtMTUxLDYgKzE1 MSwxMiBAQAogI2RlZmluZSBwMm1fcG9kX29mZmxpbmVfb3JfYnJva2VuX3JlcGxhY2UocGcpIEJV R19PTihwZyAhPSBOVUxMKQogI2VuZGlmCiAKKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9w YWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLworI3VuZGVmIHBhZ2VfdG9fbWZu CisjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQorI3VuZGVm IG1mbl90b19wYWdlCisjZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5f eChtZm4pKQorCiAvKgogICogQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaGV4YWRlY2ltYWwgcGFn ZSBudW1iZXJzIGNvbnRhaW5pbmcgYmFkIGJ5dGVzLgogICogZS5nLiAnYmFkcGFnZT0weDNmNDUs MHg4YTMyMScuCkBAIC0xOTcsNyArMjAzLDcgQEAgUEFHRV9MSVNUX0hFQUQocGFnZV9icm9rZW5f bGlzdCk7CiAgKiBmaXJzdF92YWxpZF9tZm4gaXMgZXhwb3J0ZWQgYmVjYXVzZSBpdCBpcyB1c2Ug aW4gQVJNIHNwZWNpZmljIE5VTUEKICAqIGhlbHBlcnMuIFNlZSBjb21tZW50IGluIGFzbS1hcm0v bnVtYS5oLgogICovCi11bnNpZ25lZCBsb25nIGZpcnN0X3ZhbGlkX21mbiA9IH4wVUw7CittZm5f dCBmaXJzdF92YWxpZF9tZm4gPSBJTlZBTElEX01GTl9JTklUSUFMSVpFUjsKIAogc3RhdGljIHN0 cnVjdCBib290bWVtX3JlZ2lvbiB7CiAgICAgdW5zaWduZWQgbG9uZyBzLCBlOyAvKiBNRk5zIEBz IHRocm91Z2ggQGUtMSBpbmNsdXNpdmUgYXJlIGZyZWUgKi8KQEAgLTI4Myw3ICsyODksNyBAQCB2 b2lkIF9faW5pdCBpbml0X2Jvb3RfcGFnZXMocGFkZHJfdCBwcywgcGFkZHJfdCBwZSkKICAgICBp ZiAoIHBlIDw9IHBzICkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmlyc3RfdmFsaWRfbWZuID0g bWluX3QodW5zaWduZWQgbG9uZywgcHMgPj4gUEFHRV9TSElGVCwgZmlyc3RfdmFsaWRfbWZuKTsK KyAgICBmaXJzdF92YWxpZF9tZm4gPSBtZm5fbWluKG1hZGRyX3RvX21mbihwcyksIGZpcnN0X3Zh bGlkX21mbik7CiAKICAgICBib290bWVtX3JlZ2lvbl9hZGQocHMgPj4gUEFHRV9TSElGVCwgcGUg Pj4gUEFHRV9TSElGVCk7CiAKQEAgLTM5Nyw3ICs0MDMsNyBAQCBtZm5fdCBfX2luaXQgYWxsb2Nf Ym9vdF9wYWdlcyh1bnNpZ25lZCBsb25nIG5yX3BmbnMsIHVuc2lnbmVkIGxvbmcgcGZuX2FsaWdu KQogCiAjZGVmaW5lIGJpdHNfdG9fem9uZShiKSAoKChiKSA8IChQQUdFX1NISUZUICsgMSkpID8g MSA6ICgoYikgLSBQQUdFX1NISUZUKSkKICNkZWZpbmUgcGFnZV90b196b25lKHBnKSAoaXNfeGVu X2hlYXBfcGFnZShwZykgPyBNRU1aT05FX1hFTiA6ICBcCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIChmbHNsKHBhZ2VfdG9fbWZuKHBnKSkgPyA6IDEpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoZmxzbChtZm5feChwYWdlX3RvX21mbihwZykpKSA/IDogMSkpCiAKIHR5cGVkZWYgc3Ry dWN0IHBhZ2VfbGlzdF9oZWFkIGhlYXBfYnlfem9uZV9hbmRfb3JkZXJfdFtOUl9aT05FU11bTUFY X09SREVSKzFdOwogc3RhdGljIGhlYXBfYnlfem9uZV9hbmRfb3JkZXJfdCAqX2hlYXBbTUFYX05V TU5PREVTXTsKQEAgLTcyOSw3ICs3MzUsNyBAQCBzdGF0aWMgdm9pZCBwYWdlX2xpc3RfYWRkX3Nj cnViKHN0cnVjdCBwYWdlX2luZm8gKnBnLCB1bnNpZ25lZCBpbnQgbm9kZSwKIHN0YXRpYyB2b2lk IHBvaXNvbl9vbmVfcGFnZShzdHJ1Y3QgcGFnZV9pbmZvICpwZykKIHsKICNpZmRlZiBDT05GSUdf U0NSVUJfREVCVUcKLSAgICBtZm5fdCBtZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHBnKSk7CisgICAg bWZuX3QgbWZuID0gcGFnZV90b19tZm4ocGcpOwogICAgIHVpbnQ2NF90ICpwdHI7CiAKICAgICBp ZiAoICFzY3J1Yl9kZWJ1ZyApCkBAIC03NDQsNyArNzUwLDcgQEAgc3RhdGljIHZvaWQgcG9pc29u X29uZV9wYWdlKHN0cnVjdCBwYWdlX2luZm8gKnBnKQogc3RhdGljIHZvaWQgY2hlY2tfb25lX3Bh Z2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGcpCiB7CiAjaWZkZWYgQ09ORklHX1NDUlVCX0RFQlVHCi0g ICAgbWZuX3QgbWZuID0gX21mbihwYWdlX3RvX21mbihwZykpOworICAgIG1mbl90IG1mbiA9IHBh Z2VfdG9fbWZuKHBnKTsKICAgICBjb25zdCB1aW50NjRfdCAqcHRyOwogICAgIHVuc2lnbmVkIGlu dCBpOwogCkBAIC05OTIsNyArOTk4LDggQEAgc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFsbG9j X2hlYXBfcGFnZXMoCiAgICAgICAgIC8qIEVuc3VyZSBjYWNoZSBhbmQgUkFNIGFyZSBjb25zaXN0 ZW50IGZvciBwbGF0Zm9ybXMgd2hlcmUgdGhlCiAgICAgICAgICAqIGd1ZXN0IGNhbiBjb250cm9s IGl0cyBvd24gdmlzaWJpbGl0eSBvZi90aHJvdWdoIHRoZSBjYWNoZS4KICAgICAgICAgICovCi0g ICAgICAgIGZsdXNoX3BhZ2VfdG9fcmFtKHBhZ2VfdG9fbWZuKCZwZ1tpXSksICEobWVtZmxhZ3Mg JiBNRU1GX25vX2ljYWNoZV9mbHVzaCkpOworICAgICAgICBmbHVzaF9wYWdlX3RvX3JhbShtZm5f eChwYWdlX3RvX21mbigmcGdbaV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShtZW1m bGFncyAmIE1FTUZfbm9faWNhY2hlX2ZsdXNoKSk7CiAgICAgfQogCiAgICAgc3Bpbl91bmxvY2so JmhlYXBfbG9jayk7CkBAIC0xMzQ0LDcgKzEzNTEsOCBAQCBib29sIHNjcnViX2ZyZWVfcGFnZXMo dm9pZCkKIHN0YXRpYyB2b2lkIGZyZWVfaGVhcF9wYWdlcygKICAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpwZywgdW5zaWduZWQgaW50IG9yZGVyLCBib29sIG5lZWRfc2NydWIpCiB7Ci0gICAgdW5zaWdu ZWQgbG9uZyBtYXNrLCBtZm4gPSBwYWdlX3RvX21mbihwZyk7CisgICAgdW5zaWduZWQgbG9uZyBt YXNrOworICAgIG1mbl90IG1mbiA9IHBhZ2VfdG9fbWZuKHBnKTsKICAgICB1bnNpZ25lZCBpbnQg aSwgbm9kZSA9IHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIocGcpKSwgdGFpbnRlZCA9IDA7CiAg ICAgdW5zaWduZWQgaW50IHpvbmUgPSBwYWdlX3RvX3pvbmUocGcpOwogCkBAIC0xMzgxLDcgKzEz ODksNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCiAKICAgICAgICAgLyogVGhpcyBw YWdlIGlzIG5vdCBhIGd1ZXN0IGZyYW1lIGFueSBtb3JlLiAqLwogICAgICAgICBwYWdlX3NldF9v d25lcigmcGdbaV0sIE5VTEwpOyAvKiBzZXRfZ3Bmbl9mcm9tX21mbiBzbm9vcHMgcGcgb3duZXIg Ki8KLSAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuICsgaSwgSU5WQUxJRF9NMlBfRU5UUlkp OworICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pICsgaSwgSU5WQUxJRF9NMlBf RU5UUlkpOwogCiAgICAgICAgIGlmICggbmVlZF9zY3J1YiApCiAgICAgICAgIHsKQEAgLTE0MDks MTIgKzE0MTcsMTIgQEAgc3RhdGljIHZvaWQgZnJlZV9oZWFwX3BhZ2VzKAogICAgIHsKICAgICAg ICAgbWFzayA9IDFVTCA8PCBvcmRlcjsKIAotICAgICAgICBpZiAoIChwYWdlX3RvX21mbihwZykg JiBtYXNrKSApCisgICAgICAgIGlmICggKG1mbl94KHBhZ2VfdG9fbWZuKHBnKSkgJiBtYXNrKSAp CiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnByZWRlY2Vzc29yID0g cGcgLSBtYXNrOwogCiAgICAgICAgICAgICAvKiBNZXJnZSB3aXRoIHByZWRlY2Vzc29yIGJsb2Nr PyAqLwotICAgICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4ocGFnZV90b19tZm4ocHJlZGVj ZXNzb3IpKSkgfHwKKyAgICAgICAgICAgIGlmICggIW1mbl92YWxpZChwYWdlX3RvX21mbihwcmVk ZWNlc3NvcikpIHx8CiAgICAgICAgICAgICAgICAgICFwYWdlX3N0YXRlX2lzKHByZWRlY2Vzc29y LCBmcmVlKSB8fAogICAgICAgICAgICAgICAgICAoUEZOX09SREVSKHByZWRlY2Vzc29yKSAhPSBv cmRlcikgfHwKICAgICAgICAgICAgICAgICAgKHBoeXNfdG9fbmlkKHBhZ2VfdG9fbWFkZHIocHJl ZGVjZXNzb3IpKSAhPSBub2RlKSApCkBAIC0xNDM3LDcgKzE0NDUsNyBAQCBzdGF0aWMgdm9pZCBm cmVlX2hlYXBfcGFnZXMoCiAgICAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpzdWNjZXNzb3Ig PSBwZyArIG1hc2s7CiAKICAgICAgICAgICAgIC8qIE1lcmdlIHdpdGggc3VjY2Vzc29yIGJsb2Nr PyAqLwotICAgICAgICAgICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4ocGFnZV90b19tZm4oc3VjY2Vz c29yKSkpIHx8CisgICAgICAgICAgICBpZiAoICFtZm5fdmFsaWQocGFnZV90b19tZm4oc3VjY2Vz c29yKSkgfHwKICAgICAgICAgICAgICAgICAgIXBhZ2Vfc3RhdGVfaXMoc3VjY2Vzc29yLCBmcmVl KSB8fAogICAgICAgICAgICAgICAgICAoUEZOX09SREVSKHN1Y2Nlc3NvcikgIT0gb3JkZXIpIHx8 CiAgICAgICAgICAgICAgICAgIChwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHN1Y2Nlc3Nvcikp ICE9IG5vZGUpICkKQEAgLTE0NzAsNyArMTQ3OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1h cmtfcGFnZV9vZmZsaW5lKHN0cnVjdCBwYWdlX2luZm8gKnBnLCBpbnQgYnJva2VuKQogewogICAg IHVuc2lnbmVkIGxvbmcgbngsIHgsIHkgPSBwZy0+Y291bnRfaW5mbzsKIAotICAgIEFTU0VSVChw YWdlX2lzX3JhbV90eXBlKHBhZ2VfdG9fbWZuKHBnKSwgUkFNX1RZUEVfQ09OVkVOVElPTkFMKSk7 CisgICAgQVNTRVJUKHBhZ2VfaXNfcmFtX3R5cGUobWZuX3gocGFnZV90b19tZm4ocGcpKSwgUkFN X1RZUEVfQ09OVkVOVElPTkFMKSk7CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZoZWFwX2xv Y2spKTsKIAogICAgIGRvIHsKQEAgLTE1MzMsNyArMTU0MSw3IEBAIGludCBvZmZsaW5lX3BhZ2Uo dW5zaWduZWQgbG9uZyBtZm4sIGludCBicm9rZW4sIHVpbnQzMl90ICpzdGF0dXMpCiAgICAgfQog CiAgICAgKnN0YXR1cyA9IDA7Ci0gICAgcGcgPSBtZm5fdG9fcGFnZShtZm4pOworICAgIHBnID0g bWZuX3RvX3BhZ2UoX21mbihtZm4pKTsKIAogICAgIGlmICggaXNfeGVuX2ZpeGVkX21mbihtZm4p ICkKICAgICB7CkBAIC0xNjQwLDcgKzE2NDgsNyBAQCB1bnNpZ25lZCBpbnQgb25saW5lX3BhZ2Uo dW5zaWduZWQgbG9uZyBtZm4sIHVpbnQzMl90ICpzdGF0dXMpCiAgICAgICAgIHJldHVybiAtRUlO VkFMOwogICAgIH0KIAotICAgIHBnID0gbWZuX3RvX3BhZ2UobWZuKTsKKyAgICBwZyA9IG1mbl90 b19wYWdlKF9tZm4obWZuKSk7CiAKICAgICBzcGluX2xvY2soJmhlYXBfbG9jayk7CiAKQEAgLTE2 OTQsNyArMTcwMiw3IEBAIGludCBxdWVyeV9wYWdlX29mZmxpbmUodW5zaWduZWQgbG9uZyBtZm4s IHVpbnQzMl90ICpzdGF0dXMpCiAgICAgKnN0YXR1cyA9IDA7CiAgICAgc3Bpbl9sb2NrKCZoZWFw X2xvY2spOwogCi0gICAgcGcgPSBtZm5fdG9fcGFnZShtZm4pOworICAgIHBnID0gbWZuX3RvX3Bh Z2UoX21mbihtZm4pKTsKIAogICAgIGlmICggcGFnZV9zdGF0ZV9pcyhwZywgb2ZmbGluaW5nKSAp CiAgICAgICAgICpzdGF0dXMgfD0gUEdfT0ZGTElORV9TVEFUVVNfT0ZGTElORV9QRU5ESU5HOwpA QCAtMTcyNiw3ICsxNzM0LDcgQEAgc3RhdGljIHZvaWQgaW5pdF9oZWFwX3BhZ2VzKAogICAgICAq IFVwZGF0ZSBmaXJzdF92YWxpZF9tZm4gdG8gZW5zdXJlIHRob3NlIHJlZ2lvbnMgYXJlIGNvdmVy ZWQuCiAgICAgICovCiAgICAgc3Bpbl9sb2NrKCZoZWFwX2xvY2spOwotICAgIGZpcnN0X3ZhbGlk X21mbiA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIHBhZ2VfdG9fbWZuKHBnKSwgZmlyc3RfdmFsaWRf bWZuKTsKKyAgICBmaXJzdF92YWxpZF9tZm4gPSBtZm5fbWluKHBhZ2VfdG9fbWZuKHBnKSwgZmly c3RfdmFsaWRfbWZuKTsKICAgICBzcGluX3VubG9jaygmaGVhcF9sb2NrKTsKIAogICAgIGZvciAo IGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKyApCkBAIC0xNzM1LDE0ICsxNzQzLDE0IEBAIHN0YXRp YyB2b2lkIGluaXRfaGVhcF9wYWdlcygKIAogICAgICAgICBpZiAoIHVubGlrZWx5KCFhdmFpbFtu aWRdKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcyA9IHBhZ2VfdG9f bWZuKHBnICsgaSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGUgPSBwYWdlX3RvX21mbihw ZyArIG5yX3BhZ2VzIC0gMSkgKyAxOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzID0gbWZu X3gocGFnZV90b19tZm4ocGcgKyBpKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGUgPSBt Zm5feChtZm5fYWRkKHBhZ2VfdG9fbWZuKHBnICsgbnJfcGFnZXMgLSAxKSwgMSkpOwogICAgICAg ICAgICAgYm9vbF90IHVzZV90YWlsID0gKG5pZCA9PSBwaHlzX3RvX25pZChwZm5fdG9fcGFkZHIo ZSAtIDEpKSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEocyAmICgoMVVMIDw8 IE1BWF9PUkRFUikgLSAxKSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaW5k X2ZpcnN0X3NldF9iaXQoZSkgPD0gZmluZF9maXJzdF9zZXRfYml0KHMpKTsKICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbjsKIAotICAgICAgICAgICAgbiA9IGluaXRfbm9kZV9oZWFwKG5pZCwg cGFnZV90b19tZm4ocGcraSksIG5yX3BhZ2VzIC0gaSwKKyAgICAgICAgICAgIG4gPSBpbml0X25v ZGVfaGVhcChuaWQsIG1mbl94KHBhZ2VfdG9fbWZuKHBnK2kpKSwgbnJfcGFnZXMgLSBpLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VfdGFpbCk7CiAgICAgICAgICAgICBCVUdf T04oaSArIG4gPiBucl9wYWdlcyk7CiAgICAgICAgICAgICBpZiAoIG4gJiYgIXVzZV90YWlsICkK QEAgLTE3OTYsNyArMTgwNCw3IEBAIHZvaWQgX19pbml0IGVuZF9ib290X2FsbG9jYXRvcih2b2lk KQogICAgICAgICBpZiAoIChyLT5zIDwgci0+ZSkgJiYKICAgICAgICAgICAgICAocGh5c190b19u aWQocGZuX3RvX3BhZGRyKHItPnMpKSA9PSBjcHVfdG9fbm9kZSgwKSkgKQogICAgICAgICB7Ci0g ICAgICAgICAgICBpbml0X2hlYXBfcGFnZXMobWZuX3RvX3BhZ2Uoci0+cyksIHItPmUgLSByLT5z KTsKKyAgICAgICAgICAgIGluaXRfaGVhcF9wYWdlcyhtZm5fdG9fcGFnZShfbWZuKHItPnMpKSwg ci0+ZSAtIHItPnMpOwogICAgICAgICAgICAgci0+ZSA9IHItPnM7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgfQpAQCAtMTgwNSw3ICsxODEzLDcgQEAgdm9pZCBfX2luaXQgZW5kX2Jvb3Rf YWxsb2NhdG9yKHZvaWQpCiAgICAgewogICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9yZWdpb24gKnIg PSAmYm9vdG1lbV9yZWdpb25fbGlzdFtpXTsKICAgICAgICAgaWYgKCByLT5zIDwgci0+ZSApCi0g ICAgICAgICAgICBpbml0X2hlYXBfcGFnZXMobWZuX3RvX3BhZ2Uoci0+cyksIHItPmUgLSByLT5z KTsKKyAgICAgICAgICAgIGluaXRfaGVhcF9wYWdlcyhtZm5fdG9fcGFnZShfbWZuKHItPnMpKSwg ci0+ZSAtIHItPnMpOwogICAgIH0KICAgICBucl9ib290bWVtX3JlZ2lvbnMgPSAwOwogICAgIGlu aXRfaGVhcF9wYWdlcyh2aXJ0X3RvX3BhZ2UoYm9vdG1lbV9yZWdpb25fbGlzdCksIDEpOwpAQCAt MTg2Miw3ICsxODcwLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHNtcF9zY3J1Yl9oZWFwX3BhZ2Vz KHZvaWQgKmRhdGEpCiAKICAgICBmb3IgKCBtZm4gPSBzdGFydDsgbWZuIDwgZW5kOyBtZm4rKyAp CiAgICAgewotICAgICAgICBwZyA9IG1mbl90b19wYWdlKG1mbik7CisgICAgICAgIHBnID0gbWZu X3RvX3BhZ2UoX21mbihtZm4pKTsKIAogICAgICAgICAvKiBDaGVjayB0aGUgbWZuIGlzIHZhbGlk IGFuZCBwYWdlIGlzIGZyZWUuICovCiAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKG1mbikp IHx8ICFwYWdlX3N0YXRlX2lzKHBnLCBmcmVlKSApCkBAIC0xOTE1LDcgKzE5MjMsNyBAQCBzdGF0 aWMgdm9pZCBfX2luaXQgc2NydWJfaGVhcF9wYWdlcyh2b2lkKQogICAgICAgICBpZiAoICFub2Rl X3NwYW5uZWRfcGFnZXMoaSkgKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8qIENh bGN1bGF0ZSBOb2RlIG1lbW9yeSBzdGFydCBhbmQgZW5kIGFkZHJlc3MuICovCi0gICAgICAgIHN0 YXJ0ID0gbWF4KG5vZGVfc3RhcnRfcGZuKGkpLCBmaXJzdF92YWxpZF9tZm4pOworICAgICAgICBz dGFydCA9IG1heChub2RlX3N0YXJ0X3BmbihpKSwgbWZuX3goZmlyc3RfdmFsaWRfbWZuKSk7CiAg ICAgICAgIGVuZCA9IG1pbihub2RlX3N0YXJ0X3BmbihpKSArIG5vZGVfc3Bhbm5lZF9wYWdlcyhp KSwgbWF4X3BhZ2UpOwogICAgICAgICAvKiBKdXN0IGluIGNhc2UgTk9ERSBoYXMgMSBwYWdlIGFu ZCBzdGFydHMgYmVsb3cgZmlyc3RfdmFsaWRfbWZuLiAqLwogICAgICAgICBlbmQgPSBtYXgoZW5k LCBzdGFydCk7CkBAIC0yMTU5LDE3ICsyMTY3LDE3IEBAIHZvaWQgZnJlZV94ZW5oZWFwX3BhZ2Vz KHZvaWQgKnYsIHVuc2lnbmVkIGludCBvcmRlcikKIAogdm9pZCBpbml0X2RvbWhlYXBfcGFnZXMo cGFkZHJfdCBwcywgcGFkZHJfdCBwZSkKIHsKLSAgICB1bnNpZ25lZCBsb25nIHNtZm4sIGVtZm47 CisgICAgbWZuX3Qgc21mbiwgZW1mbjsKIAogICAgIEFTU0VSVCghaW5faXJxKCkpOwogCi0gICAg c21mbiA9IHJvdW5kX3BndXAocHMpID4+IFBBR0VfU0hJRlQ7Ci0gICAgZW1mbiA9IHJvdW5kX3Bn ZG93bihwZSkgPj4gUEFHRV9TSElGVDsKKyAgICBzbWZuID0gbWFkZHJfdG9fbWZuKHJvdW5kX3Bn dXAocHMpKTsKKyAgICBlbWZuID0gbWFkZHJfdG9fbWZuKHJvdW5kX3BndXAocGUpKTsKIAotICAg IGlmICggZW1mbiA8PSBzbWZuICkKKyAgICBpZiAoIG1mbl94KGVtZm4pIDw9IG1mbl94KHNtZm4p ICkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5pdF9oZWFwX3BhZ2VzKG1mbl90b19wYWdlKHNt Zm4pLCBlbWZuIC0gc21mbik7CisgICAgaW5pdF9oZWFwX3BhZ2VzKG1mbl90b19wYWdlKHNtZm4p LCBtZm5feChlbWZuKSAtIG1mbl94KHNtZm4pKTsKIH0KIAogCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20tYXJtL251bWEuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oCmluZGV4IDdl MGI2OTQxM2QuLjQ5MGQxZjMxYWEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVt YS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbnVtYS5oCkBAIC0xLDYgKzEsOCBAQAogI2lm bmRlZiBfX0FSQ0hfQVJNX05VTUFfSAogI2RlZmluZSBfX0FSQ0hfQVJNX05VTUFfSAogCisjaW5j bHVkZSA8eGVuL21tLmg+CisKIHR5cGVkZWYgdTggbm9kZWlkX3Q7CiAKIC8qIEZha2Ugb25lIG5v ZGUgZm9yIG5vdy4gU2VlIGFsc28gbm9kZV9vbmxpbmVfbWFwLiAqLwpAQCAtMTYsMTEgKzE4LDEx IEBAIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygocHVyZSkpIG5vZGVpZF90IHBoeXNfdG9f bmlkKHBhZGRyX3QgYWRkcikKICAqIFRPRE86IG1ha2UgZmlyc3RfdmFsaWRfbWZuIHN0YXRpYyB3 aGVuIE5VTUEgaXMgc3VwcG9ydGVkIG9uIEFybSwgdGhpcwogICogaXMgcmVxdWlyZWQgYmVjYXVz ZSB0aGUgZHVtbXkgaGVscGVycyBhcmUgdXNpbmcgaXQuCiAgKi8KLWV4dGVybiB1bnNpZ25lZCBs b25nIGZpcnN0X3ZhbGlkX21mbjsKK2V4dGVybiBtZm5fdCBmaXJzdF92YWxpZF9tZm47CiAKIC8q IFhYWDogaW1wbGVtZW50IE5VTUEgc3VwcG9ydCAqLwotI2RlZmluZSBub2RlX3NwYW5uZWRfcGFn ZXMobmlkKSAobWF4X3BhZ2UgLSBmaXJzdF92YWxpZF9tZm4pCi0jZGVmaW5lIG5vZGVfc3RhcnRf cGZuKG5pZCkgKGZpcnN0X3ZhbGlkX21mbikKKyNkZWZpbmUgbm9kZV9zcGFubmVkX3BhZ2VzKG5p ZCkgKG1heF9wYWdlIC0gbWZuX3goZmlyc3RfdmFsaWRfbWZuKSkKKyNkZWZpbmUgbm9kZV9zdGFy dF9wZm4obmlkKSAobWZuX3goZmlyc3RfdmFsaWRfbWZuKSkKICNkZWZpbmUgX19ub2RlX2Rpc3Rh bmNlKGEsIGIpICgyMCkKIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYXJjaF9nZXRfZG1h X2JpdHNpemUodm9pZCkKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=