From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joshua Otto Subject: [PATCH RFC v2 19/23] libxl/migration: implement the receiver side of postcopy live migration Date: Sun, 17 Jun 2018 03:18:30 -0700 Message-ID: <1529230714-30455-20-git-send-email-joshua.t.otto@gmail.com> References: <1529230714-30455-1-git-send-email-joshua.t.otto@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fUUnf-00054e-Il for xen-devel@lists.xenproject.org; Sun, 17 Jun 2018 10:20:47 +0000 Received: by mail-pl0-x22f.google.com with SMTP id f1-v6so7511119plt.6 for ; Sun, 17 Jun 2018 03:20:45 -0700 (PDT) In-Reply-To: <1529230714-30455-1-git-send-email-joshua.t.otto@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, wei.liu2@citrix.com, Joshua Otto List-Id: xen-devel@lists.xenproject.org RnJvbTogSm9zaHVhIE90dG8gPGp0b3R0b0B1d2F0ZXJsb28uY2E+CgpUbyBtYWtlIHRoZSBsaWJ4 bCByZWNlaXZlciBjYXBhYmxlIG9mIHN1cHBvcnRpbmcgcG9zdGNvcHkgbGl2ZQptaWdyYXRpb246 Ci0gQXMgd2FzIGRvbmUgZm9yIHRoZSBsaWJ4bCBzdHJlYW0gd3JpdGVyLCBhZGQgYSBzeW1tZXRy aWMgY2FsbGJhY2sKICBjaGFpbiB0aHJvdWdoIHRoZSBzdHJlYW0gcmVhZGVyIHRoYXQgcmVhZHMg dGhlIHNlcXVlbmNlIG9mIHhsIHJlY29yZHMKICBuZWNlc3NhcnkgdG8gcmVzdW1lIHRoZSBndWVz dCBhbmQgZW50ZXIgdGhlIHBvc3Rjb3B5IHBoYXNlLiAgVGhpcwogIGNoYWluIGlzIHZlcnkgc2lt aWxhciB0byB0aGUgY2hlY2twb2ludCBjaGFpbi4KLSBBZGQgYSBuZXcgcG9zdGNvcHkgcGF0aCB0 aHJvdWdoIHRoZSBkb21haW4gY3JlYXRpb24gc2VxdWVuY2UgdGhhdAogIHBlcm1pdHMgdGhlIHhj IG1lbW9yeSBwb3N0Y29weSBwaGFzZSB0byBwcm9jZWVkIGluIHBhcmFsbGVsIHRvIHRoZQogIGxp YnhsIGRvbWFpbiBjcmVhdGlvbiBhbmQgcmVzdW1wdGlvbiBzZXF1ZW5jZS4KLSBBZGQgYSBvdXQt cGFyYW1ldGVyIHRvIGxpYnhsX2RvbWFpbl9jcmVhdGVfcmVzdG9yZSgpLAogICdwb3N0Y29weV9y ZXN1bWVkJywgdGhhdCBjYWxsZXJzIGNhbiB0ZXN0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5v dAogIGZ1cnRoZXIgYWN0aW9uIGlzIHJlcXVpcmVkIG9uIHRoZWlyLXBhcnQgcG9zdC1taWdyYXRp b24gdG8gZ2V0IHRoZQogIGd1ZXN0IHJ1bm5pbmcuCgpBIHN1YnNlcXVlbnQgcGF0Y2ggd2lsbCBp bnRyb2R1Y2UgYSBtZWNoYW5pc20gYnkgd2hpY2ggbGlicmFyeSBjbGllbnRzCmNhbiBfaW5kdWNl XyBhIHBvc3Rjb3B5IGxpdmUgbWlncmF0aW9uLgoKU2lnbmVkLW9mZi1ieTogSm9zaHVhIE90dG8g PGp0b3R0b0B1d2F0ZXJsb28uY2E+Ci0tLQogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAgICAg ICAgICAgIHwgIDI4ICsrKysrLQogdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMgICAgICAgICAg IHwgMTc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB0b29scy9saWJ4bC9s aWJ4bF9pbnRlcm5hbC5oICAgICAgICAgfCAgNDUgKysrKysrKystCiB0b29scy9saWJ4bC9saWJ4 bF9zdHJlYW1fcmVhZC5jICAgICAgfCAgNTcgKysrKysrKysrKysKIHRvb2xzL29jYW1sL2xpYnMv eGwveGVubGlnaHRfc3R1YnMuYyB8ICAgMiArLQogdG9vbHMveGwveGxfdm1jb250cm9sLmMgICAg ICAgICAgICAgIHwgICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCAx NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMv bGlieGwvbGlieGwuaAppbmRleCA1ZTQ4ODYyLi43MDQ0MWNmIDEwMDY0NAotLS0gYS90b29scy9s aWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAgLTEzMDgsNiArMTMwOCw3 IEBAIGludCBsaWJ4bF9kb21haW5fY3JlYXRlX25ldyhsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9t YWluX2NvbmZpZyAqZF9jb25maWcsCiBpbnQgbGlieGxfZG9tYWluX2NyZWF0ZV9yZXN0b3JlKGxp YnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmRvbWlkLCBpbnQgcmVzdG9yZV9mZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlbmRfYmFja19mZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqcG9zdGNvcHlfcmVzdW1lZCwgLyogT1VUICov CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2RvbWFpbl9yZXN0 b3JlX3BhcmFtcyAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsaWJ4bF9hc3luY29wX2hvdyAqYW9faG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsaWJ4bF9hc3luY3Byb2dyZXNzX2hvdyAqYW9wX2NvbnNvbGVfaG93KQpAQCAt MTMyNyw4ICsxMzI4LDkgQEAgc3RhdGljIGlubGluZSBpbnQgbGlieGxfZG9tYWluX2NyZWF0ZV9y ZXN0b3JlXzB4MDQwMjAwKAogCiAgICAgbGlieGxfZG9tYWluX3Jlc3RvcmVfcGFyYW1zX2luaXQo JnBhcmFtcyk7CiAKLSAgICByZXQgPSBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUoCi0gICAg ICAgIGN0eCwgZF9jb25maWcsIGRvbWlkLCByZXN0b3JlX2ZkLCAtMSwgJnBhcmFtcywgYW9faG93 LCBhb3BfY29uc29sZV9ob3cpOworICAgIHJldCA9IGxpYnhsX2RvbWFpbl9jcmVhdGVfcmVzdG9y ZShjdHgsIGRfY29uZmlnLCBkb21pZCwgcmVzdG9yZV9mZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsICZwYXJhbXMsIGFvX2hvdywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW9wX2NvbnNvbGVfaG93KTsKIAogICAgIGxpYnhs X2RvbWFpbl9yZXN0b3JlX3BhcmFtc19kaXNwb3NlKCZwYXJhbXMpOwogICAgIHJldHVybiByZXQ7 CkBAIC0xMzQ4LDExICsxMzUwLDMxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGxpYnhsX2RvbWFpbl9j cmVhdGVfcmVzdG9yZV8weDA0MDQwMCgKICAgICBMSUJYTF9FWFRFUk5BTF9DQUxMRVJTX09OTFkK IHsKICAgICByZXR1cm4gbGlieGxfZG9tYWluX2NyZWF0ZV9yZXN0b3JlKGN0eCwgZF9jb25maWcs IGRvbWlkLCByZXN0b3JlX2ZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLTEsIHBhcmFtcywgYW9faG93LCBhb3BfY29uc29sZV9ob3cpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIHBhcmFtcywgYW9faG93LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW9wX2NvbnNvbGVfaG93KTsKIH0KIAog I2RlZmluZSBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUgbGlieGxfZG9tYWluX2NyZWF0ZV9y ZXN0b3JlXzB4MDQwNDAwCiAKKyNlbGlmIGRlZmluZWQoTElCWExfQVBJX1ZFUlNJT04pICYmIExJ QlhMX0FQSV9WRVJTSU9OID49IDB4MDQwNzAwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICYmIExJQlhMX0FQSV9WRVJTSU9OIDwgMHgwNDA5MDAKKworc3RhdGljIGlubGluZSBp bnQgbGlieGxfZG9tYWluX2NyZWF0ZV9yZXN0b3JlXzB4MDQwNzAwKAorICAgIGxpYnhsX2N0eCAq Y3R4LCBsaWJ4bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKKyAgICB1aW50MzJfdCAqZG9taWQs IGludCByZXN0b3JlX2ZkLAorICAgIGludCBzZW5kX2JhY2tfZmQsCisgICAgY29uc3QgbGlieGxf ZG9tYWluX3Jlc3RvcmVfcGFyYW1zICpwYXJhbXMsCisgICAgY29uc3QgbGlieGxfYXN5bmNvcF9o b3cgKmFvX2hvdywKKyAgICBjb25zdCBsaWJ4bF9hc3luY3Byb2dyZXNzX2hvdyAqYW9wX2NvbnNv bGVfaG93KQorICAgIExJQlhMX0VYVEVSTkFMX0NBTExFUlNfT05MWQoreworICAgIHJldHVybiBs aWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUoY3R4LCBkX2NvbmZpZywgZG9taWQsIHJlc3RvcmVf ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgcGFy YW1zLCBhb19ob3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhb3Bf Y29uc29sZV9ob3cpOworfQorCisjZGVmaW5lIGxpYnhsX2RvbWFpbl9jcmVhdGVfcmVzdG9yZSBs aWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmVfMHgwNDA3MDAKKwogI2VuZGlmCiAKIGludCBsaWJ4 bF9kb21haW5fc29mdF9yZXNldChsaWJ4bF9jdHggKmN0eCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXggMTM1 NDY4OS4uMjI3ZmRmYiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKKysr IGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKQEAgLTc0OCw4ICs3NDgsMjQgQEAgc3RhdGlj IHZvaWQgZG9tY3JlYXRlX2Jvb3Rsb2FkZXJfZG9uZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19ib290bG9hZGVyX3N0YXRlICpi bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjKTsKIAorLyoK KyAqIElmIGEgcG9zdGNvcHkgbWlncmF0aW9uIGlzIGluaXRpYXRlZCBieSB0aGUgc2VuZGluZyBz aWRlIGR1cmluZyBhIGxpdmUKKyAqIG1pZ3JhdGlvbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGNv bnRyb2wgb2YgdGhlIHN0cmVhbSB0byB0aGUgc3RyZWFtIHJlYWRlcgorICogc28gaXQgY2FuIGZp bmlzaCB0aGUgbGlieGwgc3RyZWFtLgorICovCiBzdGF0aWMgdm9pZCBkb21jcmVhdGVfcG9zdGNv cHlfdHJhbnNpdGlvbl9jYWxsYmFjayh2b2lkICp1c2VyKTsKIAorLyoKKyAqIFdoZW4gdGhlIHN0 cmVhbSByZWFkZXIgcG9zdGNvcHkgdHJhbnNpdGlvbiBjb21wbGV0ZXMsIHRoaXMgY2FsbGJhY2sg aXMKKyAqIGludm9rZWQuICBJdCB0cmFuc2ZlcnMgY29udHJvbCBvZiB0aGUgcmVzdG9yZSBzdHJl YW0gYmFjayB0byB0aGUgaGVscGVyLgorICovCit2b2lkIGRvbWNyZWF0ZV9wb3N0Y29weV90cmFu c2l0aW9uX2NvbXBsZXRlX2NhbGxiYWNrKAorICAgIGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX3N0 cmVhbV9yZWFkX3N0YXRlICpzcnMsIGludCByYyk7CisKK3N0YXRpYyB2b2lkIGRvbWNyZWF0ZV9w b3N0Y29weV9zdHJlYW1fZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzcnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7CisKIHN0 YXRpYyB2b2lkIGRvbWNyZWF0ZV9sYXVuY2hfZG0obGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fbXVs dGlkZXYgKmFvZGV2cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCk7 CiAKQEAgLTc3Niw2ICs3OTIsMTAgQEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2Rlc3RydWN0aW9u X2NiKGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9fZG9tYWluX2Rlc3Ryb3lfc3RhdGUgKmRkcywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgcmMpOwogCitzdGF0aWMgdm9pZCBkb21jcmVhdGVfcmVwb3J0 X3Jlc3VsdChsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSAqZGNzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHJjKTsKKwogc3RhdGljIHZvaWQgaW5pdGlhdGVfZG9tYWlu X2NyZWF0ZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlICpkY3MpCiB7CkBAIC0xMTExLDYgKzExMzEs MTUgQEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2Jvb3Rsb2FkZXJfZG9uZShsaWJ4bF9fZWdjICpl Z2MsCiAgICAgICAgICAgICBjYWxsYmFja3MtPnBvc3Rjb3B5X3RyYW5zaXRpb24gPQogICAgICAg ICAgICAgICAgIGRvbWNyZWF0ZV9wb3N0Y29weV90cmFuc2l0aW9uX2NhbGxiYWNrOwogCisgICAg ICAgICAgICAvKgorICAgICAgICAgICAgICogV2hlbiB0aGUgc3RyZWFtIHJlYWRlciBpcyBmaW5p c2hlZCByZWFkaW5nIHRoZSBwb3N0Y29weQorICAgICAgICAgICAgICogdHJhbnNpdGlvbiwgd2Un bGwgZmluZCBvdXQgaW4gdGhlCisgICAgICAgICAgICAgKiBkb21jcmVhdGVfcG9zdGNvcHlfdHJh bnNpdGlvbl9jb21wbGV0ZV9jYWxsYmFjaygpLCB3aGVyZSB3ZSdsbAorICAgICAgICAgICAgICog aGFuZCBjb250cm9sIG9mIHRoZSBzdHJlYW0gYmFjayB0byB0aGUgbGlieGMgaGVscGVyLgorICAg ICAgICAgICAgICovCisgICAgICAgICAgICBkY3MtPnNycy5wb3N0Y29weV90cmFuc2l0aW9uX2Nh bGxiYWNrID0KKyAgICAgICAgICAgICAgICBkb21jcmVhdGVfcG9zdGNvcHlfdHJhbnNpdGlvbl9j b21wbGV0ZV9jYWxsYmFjazsKKwogICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXJ0 KGVnYywgJmRjcy0+c3JzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0xMTI0LDgg KzExNTMsODEgQEAgc3RhdGljIHZvaWQgZG9tY3JlYXRlX2Jvb3Rsb2FkZXJfZG9uZShsaWJ4bF9f ZWdjICplZ2MsCiAKIHN0YXRpYyB2b2lkIGRvbWNyZWF0ZV9wb3N0Y29weV90cmFuc2l0aW9uX2Nh bGxiYWNrKHZvaWQgKnVzZXIpCiB7Ci0gICAgLyogWFhYIHdlJ3JlIG5vdCByZWFkeSB0byBkZWFs IHdpdGggdGhpcyB5ZXQgKi8KLSAgICBhc3NlcnQoMCk7CisgICAgbGlieGxfX3NhdmVfaGVscGVy X3N0YXRlICpzaHMgPSB1c2VyOworICAgIGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlICpkY3Mg PSBzaHMtPmNhbGxlcl9zdGF0ZTsKKyAgICBsaWJ4bF9fc3RyZWFtX3JlYWRfc3RhdGUgKnNycyA9 ICZkY3MtPnNyczsKKworICAgIGxpYnhsX19zdHJlYW1fcmVhZF9zdGFydF9wb3N0Y29weV90cmFu c2l0aW9uKHNocy0+ZWdjLCBzcnMpOworfQorCit2b2lkIGRvbWNyZWF0ZV9wb3N0Y29weV90cmFu c2l0aW9uX2NvbXBsZXRlX2NhbGxiYWNrKAorICAgIGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX3N0 cmVhbV9yZWFkX3N0YXRlICpzcnMsIGludCByYykKK3sKKyAgICBsaWJ4bF9fZG9tYWluX2NyZWF0 ZV9zdGF0ZSAqZGNzID0gc3JzLT5kY3M7CisKKyAgICBpZiAoIXJjKQorICAgICAgICBzcnMtPmNv bXBsZXRpb25fY2FsbGJhY2sgPSBkb21jcmVhdGVfcG9zdGNvcHlfc3RyZWFtX2RvbmU7CisKKyAg ICAgLyoKKyAgICAgICogSWYgYWxsIGlzIHdlbGwgKGZvciBub3cpIHdlJ2xsIGZpbmQgb3V0IGFi b3V0IHRoZSBldmVudHVhbCB0ZXJtaW5hdGlvbgorICAgICAgKiBvZiB0aGUgcmVzdG9yZSBoZWxw ZXIvc3RyZWFtIHRocm91Z2ggZG9tY3JlYXRlX3Bvc3Rjb3B5X3N0cmVhbV9kb25lKCkuCisgICAg ICAqIE90aGVyd2lzZSwgd2UnbGwgZmluZCBvdXQgc29vbmVyIHRocm91Z2ggZG9tY3JlYXRlX3N0 cmVhbV9kb25lKCkuCisgICAgICAqLworICAgIGxpYnhsX194Y19kb21haW5fc2F2ZXJlc3RvcmVf YXN5bmNfY2FsbGJhY2tfZG9uZShlZ2MsICZzcnMtPnNocywgIXJjKTsKKworICAgIGlmICghcmMp IHsKKyAgICAgICAgLyogSW4gcGFyYWxsZWwsIHJlc3VtZSB0aGUgZ3Vlc3QuICovCisgICAgICAg IGRjcy0+cG9zdGNvcHkuYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgZGNzLT5wb3N0Y29weS5yZXN1 bWUuc3RhdGUgPSBEQ1NfUE9TVENPUFlfUkVTVU1FX0lOUFJPR1JFU1M7CisgICAgICAgIGRjcy0+ cG9zdGNvcHkuc3RyZWFtLnN0YXRlID0gRENTX1BPU1RDT1BZX1NUUkVBTV9JTlBST0dSRVNTOwor ICAgICAgICBkb21jcmVhdGVfc3RyZWFtX2RvbmUoZWdjLCBzcnMsIDApOworICAgIH0KK30KKwor c3RhdGljIHZvaWQgZG9tY3JlYXRlX3Bvc3Rjb3B5X3N0cmVhbV9kb25lKGxpYnhsX19lZ2MgKmVn YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fc3Ry ZWFtX3JlYWRfc3RhdGUgKnNycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgcmV0KQoreworICAgIGxpYnhsX19kb21haW5fY3JlYXRlX3N0YXRlICpkY3Mg PSBzcnMtPmRjczsKKworICAgIEVHQ19HQzsKKworICAgIGFzc2VydChkY3MtPnBvc3Rjb3B5LnN0 cmVhbS5zdGF0ZSA9PSBEQ1NfUE9TVENPUFlfU1RSRUFNX0lOUFJPR1JFU1MpOworCisgICAgc3dp dGNoIChkY3MtPnBvc3Rjb3B5LnJlc3VtZS5zdGF0ZSkgeworICAgIGNhc2UgRENTX1BPU1RDT1BZ X1JFU1VNRV9JTlBST0dSRVNTOgorICAgICAgICBpZiAocmV0KSB7CisgICAgICAgICAgICAvKgor ICAgICAgICAgICAgICogVGhlIHN0cmVhbSBmYWlsZWQsIGFuZCB0aGUgcmVzdW1wdGlvbiBpcyBz dGlsbCBpbiBwcm9ncmVzcy4KKyAgICAgICAgICAgICAqIFN0YXNoIG91ciByZXR1cm4gY29kZSBm b3IgcmVzdW1wdGlvbiB0byBmaW5kIGxhdGVyLgorICAgICAgICAgICAgICovCisgICAgICAgICAg ICBkY3MtPnBvc3Rjb3B5LnN0cmVhbS5zdGF0ZSA9IERDU19QT1NUQ09QWV9TVFJFQU1fRkFJTEVE OworICAgICAgICAgICAgZGNzLT5wb3N0Y29weS5zdHJlYW0ucmMgPSByZXQ7CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogV2UndmUgc3VjY2Vzc2Z1bGx5 IGNvbXBsZXRlZCwgYnV0IHRoZSByZXN1bXB0aW9uIGlzIHN0aWxsIGh1bW1pbmcKKyAgICAgICAg ICAgICAqIGF3YXkuCisgICAgICAgICAgICAgKi8KKwkJCWRjcy0+cG9zdGNvcHkuc3RyZWFtLnN0 YXRlID0gRENTX1BPU1RDT1BZX1NUUkVBTV9TVUNDRVNTOworCisJCQkvKiBKdXN0IGxldCBpdCBm aW5pc2guICBOb3RoaW5nIHRvIGRvIGZvciBub3cuICovCisJCQlMT0coSU5GTywgIlBvc3Rjb3B5 IHN0cmVhbSBjb21wbGV0ZWQgX2JlZm9yZV8gZG9tYWluIHVucGF1c2VkIik7CisgICAgICAgIH0K KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEQ1NfUE9TVENPUFlfUkVTVU1FX0ZBSUxFRDoKKyAg ICAgICAgLyogVGhlIHJlc3VtcHRpb24gZmFpbGVkIGZpcnN0LCBzbyByZXBvcnQgaXRzIHJlc3Vs dC4gKi8KKyAgICAgICAgZGNzLT5jYWxsYmFjayhlZ2MsIGRjcywgZGNzLT5wb3N0Y29weS5yZXN1 bWUucmMsIGRjcy0+Z3Vlc3RfZG9taWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERDU19Q T1NUQ09QWV9SRVNVTUVfU1VDQ0VTUzoKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBpcyB0 aGUgZXhwZWN0ZWQgY2FzZSAtIHJlc3VtcHRpb24gY29tcGxldGVkLCBhbmQgc29tZSB0aW1lIGxh dGVyCisgICAgICAgICAqIHRoZSBmaW5hbCBwb3N0Y29weSBwYWdlcyB3ZXJlIG1pZ3JhdGVkIGFu ZCB0aGUgc3RyZWFtIHdyYXBwZWQgdXAuCisgICAgICAgICAqIFdlJ3JlIG5vdyB0b3RhbGx5IGRv bmUhCisgICAgICAgICAqLworICAgICAgICBMT0coSU5GTywgIlBvc3Rjb3B5IHN0cmVhbSBjb21w bGV0ZWQgYWZ0ZXIgZG9tYWluIHVucGF1c2VkIik7CisgICAgICAgIGRjcy0+Y2FsbGJhY2soZWdj LCBkY3MsIHJldCwgZGNzLT5ndWVzdF9kb21pZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0K IAogdm9pZCBsaWJ4bF9fc3JtX2NhbGxvdXRfY2FsbGJhY2tfcmVzdG9yZV9yZXN1bHRzKHhlbl9w Zm5fdCBzdG9yZV9tZm4sCkBAIC0xNTgyLDcgKzE2ODQsOCBAQCBzdGF0aWMgdm9pZCBkb21jcmVh dGVfY29tcGxldGUobGlieGxfX2VnYyAqZWdjLAogICAgICAgICB9CiAgICAgICAgIGRjcy0+Z3Vl c3RfZG9taWQgPSAtMTsKICAgICB9Ci0gICAgZGNzLT5jYWxsYmFjayhlZ2MsIGRjcywgcmMsIGRj cy0+Z3Vlc3RfZG9taWQpOworCisgICAgZG9tY3JlYXRlX3JlcG9ydF9yZXN1bHQoZWdjLCBkY3Ms IHJjKTsKIH0KIAogc3RhdGljIHZvaWQgZG9tY3JlYXRlX2Rlc3RydWN0aW9uX2NiKGxpYnhsX19l Z2MgKmVnYywKQEAgLTE1OTUsNyArMTY5OCw2MyBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfZGVz dHJ1Y3Rpb25fY2IobGlieGxfX2VnYyAqZWdjLAogICAgIGlmIChyYykKICAgICAgICAgTE9HRChF UlJPUiwgZGRzLT5kb21pZCwgInVuYWJsZSB0byBkZXN0cm95IGRvbWFpbiBmb2xsb3dpbmcgZmFp bGVkIGNyZWF0aW9uIik7CiAKLSAgICBkY3MtPmNhbGxiYWNrKGVnYywgZGNzLCBFUlJPUl9GQUlM LCBkY3MtPmd1ZXN0X2RvbWlkKTsKKyAgICBkb21jcmVhdGVfcmVwb3J0X3Jlc3VsdChlZ2MsIGRj cywgRVJST1JfRkFJTCk7Cit9CisKK3N0YXRpYyB2b2lkIGRvbWNyZWF0ZV9yZXBvcnRfcmVzdWx0 KGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX19kb21haW5fY3JlYXRlX3N0YXRlICpkY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgcmMpCit7CisgICAgRUdDX0dDOworCisgICAgaWYgKCFkY3MtPnBvc3Rj b3B5LmFjdGl2ZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBJZiB3ZSBhcmVuJ3QgcHJlc2Vu dGx5IGluIHRoZSBwcm9jZXNzIG9mIGNvbXBsZXRpbmcgYSBwb3N0Y29weQorICAgICAgICAgKiBy ZXN1bXB0aW9uICh0aGUgbm9ybSksIGV2ZXJ5dGhpbmcgaXMgYWxsIGNsZWFuZWQgdXAgYW5kIHdl IGNhbiByZXBvcnQKKyAgICAgICAgICogb3VyIHJlc3VsdCBkaXJlY3RseS4KKyAgICAgICAgICov CisgICAgICAgIExPRyhJTkZPLCAiTm8gcG9zdGNvcHkgYXQgYWxsIik7CisgICAgICAgIGRjcy0+ Y2FsbGJhY2soZWdjLCBkY3MsIHJjLCBkY3MtPmd1ZXN0X2RvbWlkKTsKKyAgICB9IGVsc2Ugewor ICAgICAgICBzd2l0Y2ggKGRjcy0+cG9zdGNvcHkuc3RyZWFtLnN0YXRlKSB7CisgICAgICAgIGNh c2UgRENTX1BPU1RDT1BZX1NUUkVBTV9JTlBST0dSRVNTOgorICAgICAgICBjYXNlIERDU19QT1NU Q09QWV9TVFJFQU1fU1VDQ0VTUzoKKyAgICAgICAgICAgIC8qIElmIHdlIGhhdmVuJ3QgeWV0IGZh aWxlZCwgdHJ5IHRvIHVucGF1c2UgdGhlIGd1ZXN0LiAqLworICAgICAgICAgICAgcmMgPSByYyA/ OiBsaWJ4bF9kb21haW5fdW5wYXVzZShDVFgsIGRjcy0+Z3Vlc3RfZG9taWQpOworICAgICAgICAg ICAgaWYgKGRjcy0+cG9zdGNvcHlfcmVzdW1lZCkKKyAgICAgICAgICAgICAgICAqZGNzLT5wb3N0 Y29weV9yZXN1bWVkID0gIXJjOworCisgICAgICAgICAgICBpZiAoZGNzLT5wb3N0Y29weS5zdHJl YW0uc3RhdGUgPT0gRENTX1BPU1RDT1BZX1NUUkVBTV9TVUNDRVNTKSB7CisgICAgICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGUgc3RyZWFtIGZpbmlzaGVkIHN1Y2Nlc3NmdWxs eSwgc28gd2UgY2FuIHJlcG9ydCBvdXIgbG9jYWwKKyAgICAgICAgICAgICAgICAgKiByZXN1bHQg YXMgdGhlIG92ZXJhbGwgcmVzdWx0LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAg ICAgIGRjcy0+Y2FsbGJhY2soZWdjLCBkY3MsIHJjLCBkY3MtPmd1ZXN0X2RvbWlkKTsKKyAgICAg ICAgICAgICAgICBMT0coSU5GTywgIlBvc3Rjb3B5IGRvbWFpbiB1bnBhdXNlZCBhZnRlciBzdHJl YW0gY29tcGxldGVkIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJjKSB7CisgICAgICAgICAg ICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBUaGUgc3RyZWFtIGlzbid0IGRvbmUgeWV0LCBi dXQgd2UgZmFpbGVkLiAgVGVsbCBpdCB0byBiYWlsLAorICAgICAgICAgICAgICAgICAqIGFuZCBz dGFzaCBvdXIgcmV0dXJuIGNvZGUgZm9yIHRoZSBwb3N0Y29weSBzdHJlYW0gY29tcGxldGlvbgor ICAgICAgICAgICAgICAgICAqIGNhbGxiYWNrIHRvIGZpbmQuCisgICAgICAgICAgICAgICAgICov CisgICAgICAgICAgICAgICAgZGNzLT5wb3N0Y29weS5yZXN1bWUuc3RhdGUgPSBEQ1NfUE9TVENP UFlfUkVTVU1FX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBkY3MtPnBvc3Rjb3B5LnJlc3VtZS5y YyA9IHJjOworCisgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX2Fib3J0KGVnYywg JmRjcy0+c3JzLCAtMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRj cy0+cG9zdGNvcHkucmVzdW1lLnN0YXRlID0gRENTX1BPU1RDT1BZX1JFU1VNRV9TVUNDRVNTOwor ICAgICAgICAgICAgICAgIExPRyhJTkZPLCAiUG9zdGNvcHkgZG9tYWluIHVucGF1c2VkIGJlZm9y ZSBzdHJlYW0gY29tcGxldGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgY2FzZSBEQ1NfUE9TVENPUFlfU1RSRUFNX0ZBSUxFRDoKKyAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgKiBUaGUgc3RyZWFtIGZhaWxlZC4gIE5vdyB0aGF0IHdlJ3JlIGRvbmUs IHRpZSB0aGluZ3MgdXAgYnkKKyAgICAgICAgICAgICAqIHJlcG9ydGluZyB0aGUgc3RyZWFtJ3Mg cmVzdWx0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBkY3MtPmNhbGxiYWNrKGVnYywg ZGNzLCBkY3MtPnBvc3Rjb3B5LnN0cmVhbS5yYywgZGNzLT5ndWVzdF9kb21pZCk7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIH0KIAogLyotLS0tLSBhcHBsaWNhdGlvbi1m YWNpbmcgZG9tYWluIGNyZWF0aW9uIGludGVyZmFjZSAtLS0tLSovCkBAIC0xNjE5LDYgKzE3Nzgs NyBAQCBzdGF0aWMgdm9pZCBkb21haW5fY3JlYXRlX2NiKGxpYnhsX19lZ2MgKmVnYywKIAogc3Rh dGljIGludCBkb19kb21haW5fY3JlYXRlKGxpYnhsX2N0eCAqY3R4LCBsaWJ4bF9kb21haW5fY29u ZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZG9t aWQsIGludCByZXN0b3JlX2ZkLCBpbnQgc2VuZF9iYWNrX2ZkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgKnBvc3Rjb3B5X3Jlc3VtZWQsIC8qIE9VVCAqLwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2RvbWFpbl9yZXN0b3JlX3BhcmFtcyAqcGFyYW1z LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jb3BfaG93ICph b19ob3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfYXN5bmNwcm9n cmVzc19ob3cgKmFvcF9jb25zb2xlX2hvdykKQEAgLTE2MjcsNiArMTc4Nyw5IEBAIHN0YXRpYyBp bnQgZG9fZG9tYWluX2NyZWF0ZShsaWJ4bF9jdHggKmN0eCwgbGlieGxfZG9tYWluX2NvbmZpZyAq ZF9jb25maWcsCiAgICAgbGlieGxfX2FwcF9kb21haW5fY3JlYXRlX3N0YXRlICpjZGNzOwogICAg IGludCByYzsKIAorICAgIGlmIChwb3N0Y29weV9yZXN1bWVkKQorICAgICAgICAqcG9zdGNvcHlf cmVzdW1lZCA9IGZhbHNlOworCiAgICAgR0NORVcoY2Rjcyk7CiAgICAgY2Rjcy0+ZGNzLmFvID0g YW87CiAgICAgY2Rjcy0+ZGNzLmd1ZXN0X2NvbmZpZyA9IGRfY29uZmlnOwpAQCAtMTY0MSw2ICsx ODA0LDcgQEAgc3RhdGljIGludCBkb19kb21haW5fY3JlYXRlKGxpYnhsX2N0eCAqY3R4LCBsaWJ4 bF9kb21haW5fY29uZmlnICpkX2NvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmNkY3MtPmRjcy5yZXN0b3JlX2ZkZmwpOwogICAgICAgICBpZiAocmMgPCAw KSBnb3RvIG91dF9lcnI7CiAgICAgfQorICAgIGNkY3MtPmRjcy5wb3N0Y29weV9yZXN1bWVkID0g cG9zdGNvcHlfcmVzdW1lZDsKICAgICBjZGNzLT5kY3MuY2FsbGJhY2sgPSBkb21haW5fY3JlYXRl X2NiOwogICAgIGNkY3MtPmRjcy5kb21pZF9zb2Z0X3Jlc2V0ID0gSU5WQUxJRF9ET01JRDsKIApA QCAtMTg2MiwxMyArMjAyNiwxMyBAQCBpbnQgbGlieGxfZG9tYWluX2NyZWF0ZV9uZXcobGlieGxf Y3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2FzeW5jcHJvZ3Jlc3NfaG93ICphb3BfY29uc29sZV9o b3cpCiB7CiAgICAgdW5zZXRfZGlza19jb2xvX3Jlc3RvcmUoZF9jb25maWcpOwotICAgIHJldHVy biBkb19kb21haW5fY3JlYXRlKGN0eCwgZF9jb25maWcsIGRvbWlkLCAtMSwgLTEsIE5VTEwsCisg ICAgcmV0dXJuIGRvX2RvbWFpbl9jcmVhdGUoY3R4LCBkX2NvbmZpZywgZG9taWQsIC0xLCAtMSwg TlVMTCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhb19ob3csIGFvcF9jb25z b2xlX2hvdyk7CiB9CiAKIGludCBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUobGlieGxfY3R4 ICpjdHgsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAqZG9taWQsIGludCByZXN0b3JlX2ZkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VuZF9iYWNrX2ZkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2VuZF9iYWNrX2ZkLCBib29sICpwb3N0Y29weV9yZXN1bWVk LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9kb21haW5fcmVz dG9yZV9wYXJhbXMgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGlieGxfYXN5bmNvcF9ob3cgKmFvX2hvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgbGlieGxfYXN5bmNwcm9ncmVzc19ob3cgKmFvcF9jb25zb2xlX2hvdykKQEAg LTE4ODAsNyArMjA0NCw3IEBAIGludCBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUobGlieGxf Y3R4ICpjdHgsIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAogICAgIH0KIAogICAgIHJl dHVybiBkb19kb21haW5fY3JlYXRlKGN0eCwgZF9jb25maWcsIGRvbWlkLCByZXN0b3JlX2ZkLCBz ZW5kX2JhY2tfZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBhb19ob3cs IGFvcF9jb25zb2xlX2hvdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGNvcHlf cmVzdW1lZCwgcGFyYW1zLCBhb19ob3csIGFvcF9jb25zb2xlX2hvdyk7CiB9CiAKIGludCBsaWJ4 bF9kb21haW5fc29mdF9yZXNldChsaWJ4bF9jdHggKmN0eCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCmluZGV4 IGM4ZWEzYmEuLjU0YWQxNmEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApAQCAtMzEyNyw5ICszMTI3LDE1 IEBAIHN0cnVjdCBsaWJ4bF9fc3RyZWFtX3JlYWRfc3RhdGUgewogICAgIHZvaWQgKCpjb21wbGV0 aW9uX2NhbGxiYWNrKShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX19zdHJlYW1fcmVhZF9zdGF0ZSAqc3JzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcmMpOwotICAgIHZvaWQgKCpjaGVja3BvaW50X2NhbGxiYWNrKShs aWJ4bF9fZWdjICplZ2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19z dHJlYW1fcmVhZF9zdGF0ZSAqc3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgcmMpOworICAgIC8qIENoZWNrcG9pbnRpbmcgYW5kIHBvc3Rjb3B5IGxpdmUgbWlncmF0aW9u IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisgICAgdW5pb24geworICAgICAgICB2b2lkICgq Y2hlY2twb2ludF9jYWxsYmFjaykobGlieGxfX2VnYyAqZWdjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzcnMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmMpOworICAgICAgICB2b2lkICgqcG9z dGNvcHlfdHJhbnNpdGlvbl9jYWxsYmFjaykobGlieGxfX2VnYyAqZWdjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRl ICpzcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg cmMpOworICAgIH07CiAgICAgLyogUHJpdmF0ZSAqLwogICAgIGludCByYzsKICAgICBib29sIHJ1 bm5pbmc7CkBAIC0zMTQzLDEwICszMTQ5LDEyIEBAIHN0cnVjdCBsaWJ4bF9fc3RyZWFtX3JlYWRf c3RhdGUgewogICAgIExJQlhMX1NUQUlMUV9IRUFEKCwgbGlieGxfX3NyX3JlY29yZF9idWYpIHJl Y29yZF9xdWV1ZTsgLyogTk9HQyAqLwogICAgIGVudW0gewogICAgICAgICBTUlNfUEhBU0VfTk9S TUFMLAorICAgICAgICBTUlNfUEhBU0VfUE9TVENPUFlfVFJBTlNJVElPTiwKICAgICAgICAgU1JT X1BIQVNFX0NIRUNLUE9JTlRfQlVGRkVSSU5HLAogICAgICAgICBTUlNfUEhBU0VfQ0hFQ0tQT0lO VF9VTkJVRkZFUklORywKICAgICAgICAgU1JTX1BIQVNFX0NIRUNLUE9JTlRfU1RBVEUKICAgICB9 IHBoYXNlOworICAgIGJvb2wgcG9zdGNvcHlfdHJhbnNpdGlvbmVkOwogICAgIGJvb2wgcmVjdXJz aW9uX2d1YXJkOwogCiAgICAgLyogT25seSB1c2VkIHdoaWxlIGFjdGl2ZWx5IHJlYWRpbmcgYSBy ZWNvcmQgZnJvbSB0aGUgc3RyZWFtLiAqLwpAQCAtMzE2MCw2ICszMTY4LDkgQEAgc3RydWN0IGxp YnhsX19zdHJlYW1fcmVhZF9zdGF0ZSB7CiBfaGlkZGVuIHZvaWQgbGlieGxfX3N0cmVhbV9yZWFk X2luaXQobGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzdHJlYW0pOwogX2hpZGRlbiB2b2lkIGxp YnhsX19zdHJlYW1fcmVhZF9zdGFydChsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zdHJlYW1fcmVhZF9zdGF0ZSAqc3RyZWFtKTsK K19oaWRkZW4gdm9pZCBsaWJ4bF9fc3RyZWFtX3JlYWRfc3RhcnRfcG9zdGNvcHlfdHJhbnNpdGlv bigKKyAgICBsaWJ4bF9fZWdjICplZ2MsCisgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpz dHJlYW0pOwogX2hpZGRlbiB2b2lkIGxpYnhsX19zdHJlYW1fcmVhZF9zdGFydF9jaGVja3BvaW50 KGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaWJ4bF9fc3RyZWFtX3JlYWRfc3RhdGUgKnN0cmVhbSk7CiBfaGlkZGVuIHZv aWQgbGlieGxfX3N0cmVhbV9yZWFkX2NoZWNrcG9pbnRfc3RhdGUobGlieGxfX2VnYyAqZWdjLApA QCAtMzcwOSw4ICszNzIwLDM2IEBAIHN0cnVjdCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9zdGF0ZSB7 CiAgICAgaW50IHJlc3RvcmVfZmQsIGxpYnhjX2ZkOwogICAgIGludCByZXN0b3JlX2ZkZmw7IC8q IG9yaWdpbmFsIGZsYWdzIG9mIHJlc3RvcmVfZmQgKi8KICAgICBpbnQgc2VuZF9iYWNrX2ZkOwor ICAgIGJvb2wgKnBvc3Rjb3B5X3Jlc3VtZWQ7CiAgICAgbGlieGxfZG9tYWluX3Jlc3RvcmVfcGFy YW1zIHJlc3RvcmVfcGFyYW1zOwogICAgIHVpbnQzMl90IGRvbWlkX3NvZnRfcmVzZXQ7CisgICAg c3RydWN0IHsKKyAgICAgICAgLyoKKyAgICAgICAgICogSXMgYSBwb3N0Y29weSByZXN1bXB0aW9u IGluIHByb2dyZXNzPyAoaS5lLiBkb2VzIHRoZSByZXN0IG9mIHRoaXMKKyAgICAgICAgICogc3Rh dGUgaGF2ZSBhbnkgbWVhbmluZz8pCisgICAgICAgICAqLworICAgICAgICBib29sIGFjdGl2ZTsK KworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZW51bSB7CisgICAgICAgICAgICAgICAg RENTX1BPU1RDT1BZX1JFU1VNRV9JTlBST0dSRVNTLAorICAgICAgICAgICAgICAgIERDU19QT1NU Q09QWV9SRVNVTUVfRkFJTEVELAorICAgICAgICAgICAgICAgIERDU19QT1NUQ09QWV9SRVNVTUVf U1VDQ0VTUworICAgICAgICAgICAgfSBzdGF0ZTsKKworICAgICAgICAgICAgaW50IHJjOworICAg ICAgICB9IHJlc3VtZTsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZW51bSB7Cisg ICAgICAgICAgICAgICAgRENTX1BPU1RDT1BZX1NUUkVBTV9JTlBST0dSRVNTLAorICAgICAgICAg ICAgICAgIERDU19QT1NUQ09QWV9TVFJFQU1fRkFJTEVELAorICAgICAgICAgICAgICAgIERDU19Q T1NUQ09QWV9TVFJFQU1fU1VDQ0VTUworICAgICAgICAgICAgfSBzdGF0ZTsKKworICAgICAgICAg ICAgaW50IHJjOworICAgICAgICB9IHN0cmVhbTsKKyAgICB9IHBvc3Rjb3B5OwogICAgIGxpYnhs X19kb21haW5fY3JlYXRlX2NiICpjYWxsYmFjazsKICAgICBsaWJ4bF9hc3luY3Byb2dyZXNzX2hv dyBhb3BfY29uc29sZV9ob3c7CiAgICAgLyogcHJpdmF0ZSB0byBkb21haW5fY3JlYXRlICovCmRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9zdHJlYW1fcmVhZC5jIGIvdG9vbHMvbGlieGwv bGlieGxfc3RyZWFtX3JlYWQuYwppbmRleCA0Y2I1NTNlLi44ZTliNzIwIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9zdHJlYW1fcmVhZC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3N0 cmVhbV9yZWFkLmMKQEAgLTM1LDYgKzM1LDcgQEAKICAqIFVuZGVmaW5lZCAgICB1bmRlZiAgdW5k ZWYgICAgICAgICAgICAgICAgICAgIHVuZGVmICAgIHVuZGVmCiAgKiBJZGxlICAgICAgICAgZmFs c2UgIHVuZGVmICAgICAgICAgICAgICAgICAgICAwICAgICAgICAwCiAgKiBBY3RpdmUgICAgICAg dHJ1ZSAgIE5PUk1BTCAgICAgICAgICAgICAgICAgICAwLzEgICAgICAwL3BhcnRpYWwKKyAqIEFj dGl2ZSAgICAgICB0cnVlICAgUE9TVENPUFlfVFJBTlNJVElPTiAgICAgIDAvMSAgICAgIDAvcGFy dGlhbAogICogQWN0aXZlICAgICAgIHRydWUgICBDSEVDS1BPSU5UX0JVRkZFUklORyAgICAgYW55 ICAgICAgMC9wYXJ0aWFsCiAgKiBBY3RpdmUgICAgICAgdHJ1ZSAgIENIRUNLUE9JTlRfVU5CVUZG RVJJTkcgICBhbnkgICAgICAwCiAgKiBBY3RpdmUgICAgICAgdHJ1ZSAgIENIRUNLUE9JTlRfU1RB VEUgICAgICAgICAwLzEgICAgICAwL3BhcnRpYWwKQEAgLTEzMyw2ICsxMzQsOCBAQAogLyogU3Vj Y2Vzcy9lcnJvci9jbGVhbnVwIGhhbmRsaW5nLiAqLwogc3RhdGljIHZvaWQgc3RyZWFtX2NvbXBs ZXRlKGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9f c3RyZWFtX3JlYWRfc3RhdGUgKnN0cmVhbSwgaW50IHJjKTsKK3N0YXRpYyB2b2lkIHBvc3Rjb3B5 X3RyYW5zaXRpb25fZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzdHJlYW0sIGludCByYyk7 CiBzdGF0aWMgdm9pZCBjaGVja3BvaW50X2RvbmUobGlieGxfX2VnYyAqZWdjLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxpYnhsX19zdHJlYW1fcmVhZF9zdGF0ZSAqc3RyZWFtLCBpbnQg cmMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2RvbmUobGlieGxfX2VnYyAqZWdjLApAQCAtMjIyLDYg KzIyNSw3IEBAIHZvaWQgbGlieGxfX3N0cmVhbV9yZWFkX2luaXQobGlieGxfX3N0cmVhbV9yZWFk X3N0YXRlICpzdHJlYW0pCiAgICAgRklMTFpFUk8oc3RyZWFtLT5oZHIpOwogICAgIExJQlhMX1NU QUlMUV9JTklUKCZzdHJlYW0tPnJlY29yZF9xdWV1ZSk7CiAgICAgc3RyZWFtLT5waGFzZSA9IFNS U19QSEFTRV9OT1JNQUw7CisgICAgc3RyZWFtLT5wb3N0Y29weV90cmFuc2l0aW9uZWQgPSBmYWxz ZTsKICAgICBzdHJlYW0tPnJlY3Vyc2lvbl9ndWFyZCA9IGZhbHNlOwogICAgIHN0cmVhbS0+aW5j b21pbmdfcmVjb3JkID0gTlVMTDsKICAgICBGSUxMWkVSTyhzdHJlYW0tPmVtdV9kYyk7CkBAIC0y OTksNiArMzAzLDI2IEBAIHZvaWQgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXJ0KGxpYnhsX19lZ2Mg KmVnYywKICAgICBzdHJlYW1fY29tcGxldGUoZWdjLCBzdHJlYW0sIHJjKTsKIH0KIAordm9pZCBs aWJ4bF9fc3RyZWFtX3JlYWRfc3RhcnRfcG9zdGNvcHlfdHJhbnNpdGlvbigKKyAgICBsaWJ4bF9f ZWdjICplZ2MsCisgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzdHJlYW0pCit7CisgICAg aW50IGNoZWNrcG9pbnRlZF9zdHJlYW0gPSBzdHJlYW0tPmRjcy0+cmVzdG9yZV9wYXJhbXMuY2hl Y2twb2ludGVkX3N0cmVhbTsKKworICAgIGFzc2VydChzdHJlYW0tPnJ1bm5pbmcpOworICAgIGFz c2VydChjaGVja3BvaW50ZWRfc3RyZWFtID09IExJQlhMX0NIRUNLUE9JTlRFRF9TVFJFQU1fTk9O RSk7CisgICAgYXNzZXJ0KHN0cmVhbS0+cGhhc2UgPT0gU1JTX1BIQVNFX05PUk1BTCk7CisgICAg YXNzZXJ0KCFzdHJlYW0tPnBvc3Rjb3B5X3RyYW5zaXRpb25lZCk7CisKKyAgICBzdHJlYW0tPnBo YXNlID0gU1JTX1BIQVNFX1BPU1RDT1BZX1RSQU5TSVRJT047CisKKyAgICAvKgorICAgICAqIExp YnhjIGhhcyBoYW5kZWQgY29udHJvbCBvZiB0aGUgZmQgdG8gdXMuICBTdGFydCByZWFkaW5nIHNv bWUKKyAgICAgKiBsaWJ4bCByZWNvcmRzIG91dCBvZiBpdC4KKyAgICAgKi8KKyAgICBzdHJlYW1f Y29udGludWUoZWdjLCBzdHJlYW0pOworfQorCiB2b2lkIGxpYnhsX19zdHJlYW1fcmVhZF9zdGFy dF9jaGVja3BvaW50KGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV9yZWFkX3N0YXRlICpzdHJlYW0pCiB7CkBAIC0z OTcsNiArNDIxLDcgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2NvbnRpbnVlKGxpYnhsX19lZ2MgKmVn YywKIAogICAgIHN3aXRjaCAoc3RyZWFtLT5waGFzZSkgewogICAgIGNhc2UgU1JTX1BIQVNFX05P Uk1BTDoKKyAgICBjYXNlIFNSU19QSEFTRV9QT1NUQ09QWV9UUkFOU0lUSU9OOgogICAgIGNhc2Ug U1JTX1BIQVNFX0NIRUNLUE9JTlRfU1RBVEU6CiAgICAgICAgIC8qCiAgICAgICAgICAqIE5vcm1h bCBwaGFzZSAocmVndWxhciBtaWdyYXRpb24gb3IgcmVzdG9yZSBmcm9tIGZpbGUpOgpAQCAtNTc2 LDYgKzYwMSwxMyBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzX3JlY29yZChsaWJ4bF9fZWdjICplZ2Ms CiAKICAgICBMT0coREVCVUcsICJSZWNvcmQ6ICV1LCBsZW5ndGggJXUiLCByZWMtPmhkci50eXBl LCByZWMtPmhkci5sZW5ndGgpOwogCisgICAgaWYgKHN0cmVhbS0+cG9zdGNvcHlfdHJhbnNpdGlv bmVkICYmCisgICAgICAgIHJlYy0+aGRyLnR5cGUgIT0gUkVDX1RZUEVfRU5EKSB7CisgICAgICAg IHJjID0gRVJST1JfRkFJTDsKKyAgICAgICAgTE9HKEVSUk9SLCAiUmVjZWl2ZWQgbm9uLWVuZCBy ZWNvcmQgYWZ0ZXIgcG9zdGNvcHkgdHJhbnNpdGlvbiIpOworICAgICAgICBnb3RvIGVycjsKKyAg ICB9CisKICAgICBzd2l0Y2ggKHJlYy0+aGRyLnR5cGUpIHsKIAogICAgIGNhc2UgUkVDX1RZUEVf RU5EOgpAQCAtNjI3LDYgKzY1OSwxNSBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzX3JlY29yZChsaWJ4 bF9fZWdjICplZ2MsCiAgICAgICAgIHdyaXRlX2VtdWxhdG9yX2Jsb2IoZWdjLCBzdHJlYW0sIHJl Yyk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBSRUNfVFlQRV9QT1NUQ09QWV9UUkFOU0lU SU9OX0VORDoKKyAgICAgICAgaWYgKHN0cmVhbS0+cGhhc2UgIT0gU1JTX1BIQVNFX1BPU1RDT1BZ X1RSQU5TSVRJT04pIHsKKyAgICAgICAgICAgIExPRyhFUlJPUiwgIlVuZXhwZWN0ZWQgUE9TVENP UFlfVFJBTlNJVElPTl9FTkQgcmVjb3JkIGluIHN0cmVhbSIpOworICAgICAgICAgICAgcmMgPSBF UlJPUl9GQUlMOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICAgICAgcG9z dGNvcHlfdHJhbnNpdGlvbl9kb25lKGVnYywgc3RyZWFtLCAwKTsKKyAgICAgICAgYnJlYWs7CisK ICAgICBjYXNlIFJFQ19UWVBFX0NIRUNLUE9JTlRfRU5EOgogICAgICAgICBpZiAoIXN0cmVhbV9p bl9jaGVja3BvaW50KHN0cmVhbSkpIHsKICAgICAgICAgICAgIExPRyhFUlJPUiwgIlVuZXhwZWN0 ZWQgQ0hFQ0tQT0lOVF9FTkQgcmVjb3JkIGluIHN0cmVhbSIpOwpAQCAtNzYxLDYgKzgwMiwxMyBA QCBzdGF0aWMgdm9pZCBzdHJlYW1fY29tcGxldGUobGlieGxfX2VnYyAqZWdjLAogICAgICAgICAg Ki8KICAgICAgICAgY2hlY2twb2ludF9kb25lKGVnYywgc3RyZWFtLCByYyk7CiAgICAgICAgIGJy ZWFrOworICAgIGNhc2UgU1JTX1BIQVNFX1BPU1RDT1BZX1RSQU5TSVRJT046CisgICAgICAgIGFz c2VydChyYyk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVG8gZGVhbCB3aXRoIGVycm9ycyBk dXJpbmcgdGhlIHBvc3Rjb3B5IHRyYW5zaXRpb24sIHdlIHVzZSB0aGUgc2FtZQorICAgICAgICAg KiBzdHJhdGVneSBhcyBkdXJpbmcgY2hlY2twb2ludHMuCisgICAgICAgICAqLwogICAgIGNhc2Ug U1JTX1BIQVNFX0NIRUNLUE9JTlRfU1RBVEU6CiAgICAgICAgIGFzc2VydChyYyk7CiAKQEAgLTc3 Nyw2ICs4MjUsMTUgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2NvbXBsZXRlKGxpYnhsX19lZ2MgKmVn YywKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHBvc3Rjb3B5X3RyYW5zaXRpb25fZG9uZShsaWJ4 bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf X3N0cmVhbV9yZWFkX3N0YXRlICpzdHJlYW0sIGludCByYykKK3sKKyAgICBhc3NlcnQoc3RyZWFt LT5waGFzZSA9PSBTUlNfUEhBU0VfUE9TVENPUFlfVFJBTlNJVElPTik7CisgICAgc3RyZWFtLT5w b3N0Y29weV90cmFuc2l0aW9uZWQgPSB0cnVlOworICAgIHN0cmVhbS0+cGhhc2UgPSBTUlNfUEhB U0VfTk9STUFMOworICAgIHN0cmVhbS0+cG9zdGNvcHlfdHJhbnNpdGlvbl9jYWxsYmFjayhlZ2Ms IHN0cmVhbSwgcmMpOworfQorCiBzdGF0aWMgdm9pZCBjaGVja3BvaW50X2RvbmUobGlieGxfX2Vn YyAqZWdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zdHJlYW1fcmVhZF9z dGF0ZSAqc3RyZWFtLCBpbnQgcmMpCiB7CmRpZmYgLS1naXQgYS90b29scy9vY2FtbC9saWJzL3hs L3hlbmxpZ2h0X3N0dWJzLmMgYi90b29scy9vY2FtbC9saWJzL3hsL3hlbmxpZ2h0X3N0dWJzLmMK aW5kZXggOThiNTJiOS4uM2VmNWExZSAxMDA2NDQKLS0tIGEvdG9vbHMvb2NhbWwvbGlicy94bC94 ZW5saWdodF9zdHVicy5jCisrKyBiL3Rvb2xzL29jYW1sL2xpYnMveGwveGVubGlnaHRfc3R1YnMu YwpAQCAtNTM4LDcgKzUzOCw3IEBAIHZhbHVlIHN0dWJfbGlieGxfZG9tYWluX2NyZWF0ZV9yZXN0 b3JlKHZhbHVlIGN0eCwgdmFsdWUgZG9tYWluX2NvbmZpZywgdmFsdWUgcGFyCiAKIAljYW1sX2Vu dGVyX2Jsb2NraW5nX3NlY3Rpb24oKTsKIAlyZXQgPSBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3Rv cmUoQ1RYLCAmY19kY29uZmlnLCAmY19kb21pZCwgcmVzdG9yZV9mZCwKLQkJLTEsICZjX3BhcmFt cywgYW9faG93LCBOVUxMKTsKKwkJLTEsIE5VTEwsICZjX3BhcmFtcywgYW9faG93LCBOVUxMKTsK IAljYW1sX2xlYXZlX2Jsb2NraW5nX3NlY3Rpb24oKTsKIAogCWZyZWUoYW9faG93KTsKZGlmZiAt LWdpdCBhL3Rvb2xzL3hsL3hsX3ZtY29udHJvbC5jIGIvdG9vbHMveGwveGxfdm1jb250cm9sLmMK aW5kZXggODljMmIyNS4uNDdiYTlmMyAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGxfdm1jb250cm9s LmMKKysrIGIvdG9vbHMveGwveGxfdm1jb250cm9sLmMKQEAgLTg4Miw3ICs4ODIsNyBAQCBzdGFy dDoKIAogICAgICAgICByZXQgPSBsaWJ4bF9kb21haW5fY3JlYXRlX3Jlc3RvcmUoY3R4LCAmZF9j b25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9taWQs IHJlc3RvcmVfZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZW5kX2JhY2tfZmQsICZwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZW5kX2JhY2tfZmQsIE5VTEwsICZwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLCBhdXRvY29ubmVjdF9jb25zb2xlX2hvdyk7CiAKICAg ICAgICAgbGlieGxfZG9tYWluX3Jlc3RvcmVfcGFyYW1zX2Rpc3Bvc2UoJnBhcmFtcyk7Ci0tIAoy LjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=