From mboxrd@z Thu Jan 1 00:00:00 1970 From: Changlong Xie Subject: [PATCH v12 15/26] libxc/restore: support COLO restore Date: Wed, 23 Mar 2016 16:06:29 +0800 Message-ID: <1458720400-4699-16-git-send-email-xiecl.fnst@cn.fujitsu.com> References: <1458720400-4699-1-git-send-email-xiecl.fnst@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458720400-4699-1-git-send-email-xiecl.fnst@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen devel , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Campbell , Ian Jackson , Wei Liu Cc: Lars Kurth , Changlong Xie , Wen Congyang , Li Zhijian , Gui Jianfeng , Jiang Yunhong , Dong Eddie , Anthony Perard , Shriram Rajagopalan , Yang Hongyang List-Id: xen-devel@lists.xenproject.org RnJvbTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KCmEuIGNhbGwgY2FsbGJh Y2tzIHJlc3VtZS9jaGVja3BvaW50L3N1c3BlbmQgd2hpbGUgc2Vjb25kYXJ5IHZtCiAgIHN0YXR1 cyBpcyBjb25zaXN0ZW50IHdpdGggcHJpbWFyeQpiLiBzZW5kIGRpcnR5IHBmbiBsaXN0IHRvIHBy aW1hcnkgd2hlbiBjaGVja3BvaW50IHVuZGVyIGNvbG8KYy4gc2VuZCBzdG9yZSBnZm4gYW5kIGNv bnNvbGUgZ2ZuIHRvIHhsIGJlZm9yZSByZXN1bWluZyBzZWNvbmRhcnkgdm0KClNpZ25lZC1vZmYt Ynk6IFlhbmcgSG9uZ3lhbmcgPGhvbmd5YW5nLnlhbmdAZWFzeXN0YWNrLmNuPgpTaWduZWQtb2Zm LWJ5OiBXZW4gQ29uZ3lhbmcgPHdlbmN5QGNuLmZ1aml0c3UuY29tPgpTaWduZWQtb2ZmLWJ5OiBD aGFuZ2xvbmcgWGllIDx4aWVjbC5mbnN0QGNuLmZ1aml0c3UuY29tPgpDQzogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hl bmd1ZXN0LmggICAgIHwgICA4ICsrCiB0b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCAgICAgICAg IHwgICA4ICstCiB0b29scy9saWJ4Yy94Y19zcl9yZXN0b3JlLmMgICAgICAgIHwgMTgxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsX2NvbG9f cmVzdG9yZS5jICAgfCAgIDUgLQogdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMgICAgICAgICB8 ICAgMyArCiB0b29scy9saWJ4bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsIHwgICA0ICstCiA2IGZp bGVzIGNoYW5nZWQsIDIwMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuZ3Vlc3QuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUv eGVuZ3Vlc3QuaAppbmRleCA4ZWE1YTNjLi40MDkwMmVlIDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5o CkBAIC0xMzMsNiArMTMzLDE0IEBAIHN0cnVjdCByZXN0b3JlX2NhbGxiYWNrcyB7CiAgICAgICov CiAgICAgaW50ICgqd2FpdF9jaGVja3BvaW50KSh2b2lkKiBkYXRhKTsKIAorICAgIC8qCisgICAg ICogY2FsbGJhY2sgdG8gc2VuZCBzdG9yZSBnZm4gYW5kIGNvbnNvbGUgZ2ZuIHRvIHhsCisgICAg ICogaWYgd2Ugd2FudCB0byByZXN1bWUgdm0gYmVmb3JlIHhjX2RvbWFpbl9zYXZlKCkKKyAgICAg KiBleGl0cy4KKyAgICAgKi8KKyAgICB2b2lkICgqcmVzdG9yZV9yZXN1bHRzKSh4ZW5fcGZuX3Qg c3RvcmVfZ2ZuLCB4ZW5fcGZuX3QgY29uc29sZV9nZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqZGF0YSk7CisKICAgICAvKiB0byBiZSBwcm92aWRlZCBhcyB0aGUgbGFzdCBh cmd1bWVudCB0byBlYWNoIGNhbGxiYWNrIGZ1bmN0aW9uICovCiAgICAgdm9pZCogZGF0YTsKIH07 CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hj X3NyX2NvbW1vbi5oCmluZGV4IGM5OTA2NjQuLmNmMzJhYjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhjL3hjX3NyX2NvbW1vbi5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCkBAIC0y MTQsNiArMjE0LDEwIEBAIHN0cnVjdCB4Y19zcl9jb250ZXh0CiAgICAgICAgICAgICBzdHJ1Y3Qg eGNfc3JfcmVzdG9yZV9vcHMgb3BzOwogICAgICAgICAgICAgc3RydWN0IHJlc3RvcmVfY2FsbGJh Y2tzICpjYWxsYmFja3M7CiAKKyAgICAgICAgICAgIGludCBzZW5kX2JhY2tfZmQ7CisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHAybV9zaXplOworICAgICAgICAgICAgeGNfaHlwZXJjYWxsX2J1 ZmZlcl90IGRpcnR5X2JpdG1hcF9oYnVmOworCiAgICAgICAgICAgICAvKiBGcm9tIEltYWdlIEhl YWRlci4gKi8KICAgICAgICAgICAgIHVpbnQzMl90IGZvcm1hdF92ZXJzaW9uOwogCkBAIC0yMjIs MTMgKzIyNiwxMyBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dAogICAgICAgICAgICAgdWludDMyX3Qg Z3Vlc3RfcGFnZV9zaXplOwogCiAgICAgICAgICAgICAvKiBQbGFpbiBWTSwgb3IgY2hlY2twb2lu dHMgb3ZlciB0aW1lLiAqLwotICAgICAgICAgICAgYm9vbCBjaGVja3BvaW50ZWQ7CisgICAgICAg ICAgICBpbnQgY2hlY2twb2ludGVkOwogCiAgICAgICAgICAgICAvKiBDdXJyZW50bHkgYnVmZmVy aW5nIHJlY29yZHMgYmV0d2VlbiBhIGNoZWNrcG9pbnQgKi8KICAgICAgICAgICAgIGJvb2wgYnVm ZmVyX2FsbF9yZWNvcmRzOwogCiAvKgotICogV2l0aCBSZW11cywgd2UgYnVmZmVyIHRoZSByZWNv cmRzIHNlbnQgYnkgdGhlIHByaW1hcnkgYXQgY2hlY2twb2ludCwKKyAqIFdpdGggUmVtdXMvQ09M Tywgd2UgYnVmZmVyIHRoZSByZWNvcmRzIHNlbnQgYnkgdGhlIHByaW1hcnkgYXQgY2hlY2twb2lu dCwKICAqIGluIGNhc2UgdGhlIHByaW1hcnkgd2lsbCBmYWlsLCB3ZSBjYW4gcmVjb3ZlciBmcm9t IHRoZSBsYXN0CiAgKiBjaGVja3BvaW50IHN0YXRlLgogICogVGhpcyBzaG91bGQgYmUgZW5vdWdo IGZvciBtb3N0IG9mIHRoZSBjYXNlcyBiZWNhdXNlIHByaW1hcnkgb25seSBzZW5kCmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19zcl9yZXN0b3JlLmMgYi90b29scy9saWJ4Yy94Y19zcl9yZXN0 b3JlLmMKaW5kZXggM2U0Y2E3Zi4uNzI4ZWRiYyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNf c3JfcmVzdG9yZS5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmUuYwpAQCAtNDExLDYg KzQxMSw5MiBAQCBzdGF0aWMgaW50IGhhbmRsZV9wYWdlX2RhdGEoc3RydWN0IHhjX3NyX2NvbnRl eHQgKmN0eCwgc3RydWN0IHhjX3NyX3JlY29yZCAqcmVjKQogICAgIHJldHVybiByYzsKIH0KIAor LyoKKyAqIFNlbmQgY2hlY2twb2ludCBkaXJ0eSBwZm4gbGlzdCB0byBwcmltYXJ5LgorICovCitz dGF0aWMgaW50IHNlbmRfY2hlY2twb2ludF9kaXJ0eV9wZm5fbGlzdChzdHJ1Y3QgeGNfc3JfY29u dGV4dCAqY3R4KQoreworICAgIHhjX2ludGVyZmFjZSAqeGNoID0gY3R4LT54Y2g7CisgICAgaW50 IHJjID0gLTE7CisgICAgdW5zaWduZWQgY291bnQsIHdyaXR0ZW47CisgICAgdWludDY0X3QgaSwg KnBmbnMgPSBOVUxMOworICAgIHN0cnVjdCBpb3ZlYyAqaW92ID0gTlVMTDsKKyAgICB4Y19zaGFk b3dfb3Bfc3RhdHNfdCBzdGF0cyA9IHsgMCwgY3R4LT5yZXN0b3JlLnAybV9zaXplIH07CisgICAg c3RydWN0IHhjX3NyX3JlY29yZCByZWMgPQorICAgIHsKKyAgICAgICAgLnR5cGUgPSBSRUNfVFlQ RV9DSEVDS1BPSU5UX0RJUlRZX1BGTl9MSVNULAorICAgIH07CisgICAgREVDTEFSRV9IWVBFUkNB TExfQlVGRkVSX1NIQURPVyh1bnNpZ25lZCBsb25nLCBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5yZXN0b3JlLmRpcnR5X2JpdG1hcF9oYnVm KTsKKworICAgIGlmICggeGNfc2hhZG93X2NvbnRyb2woCisgICAgICAgICAgICAgeGNoLCBjdHgt PmRvbWlkLCBYRU5fRE9NQ1RMX1NIQURPV19PUF9DTEVBTiwKKyAgICAgICAgICAgICBIWVBFUkNB TExfQlVGRkVSKGRpcnR5X2JpdG1hcCksIGN0eC0+cmVzdG9yZS5wMm1fc2l6ZSwKKyAgICAgICAg ICAgICBOVUxMLCAwLCAmc3RhdHMpICE9IGN0eC0+cmVzdG9yZS5wMm1fc2l6ZSApCisgICAgewor ICAgICAgICBQRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBsb2dkaXJ0eSBiaXRtYXAiKTsKKyAg ICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgZm9yICggaSA9IDAsIGNvdW50ID0gMDsgaSA8 IGN0eC0+cmVzdG9yZS5wMm1fc2l6ZTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggdGVzdF9i aXQoaSwgZGlydHlfYml0bWFwKSApCisgICAgICAgICAgICBjb3VudCsrOworICAgIH0KKworCisg ICAgcGZucyA9IG1hbGxvYyhjb3VudCAqIHNpemVvZigqcGZucykpOworICAgIGlmICggIXBmbnMg KQorICAgIHsKKyAgICAgICAgRVJST1IoIlVuYWJsZSB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgb2Yg bWVtb3J5IGZvciBkaXJ0eSBwZm4gbGlzdCIsCisgICAgICAgICAgICAgIGNvdW50ICogc2l6ZW9m KCpwZm5zKSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIGZvciAoIGkgPSAwLCB3 cml0dGVuID0gMDsgaSA8IGN0eC0+cmVzdG9yZS5wMm1fc2l6ZTsgKytpICkKKyAgICB7CisgICAg ICAgIGlmICggIXRlc3RfYml0KGksIGRpcnR5X2JpdG1hcCkgKQorICAgICAgICAgICAgY29udGlu dWU7CisKKyAgICAgICAgaWYgKCB3cml0dGVuID4gY291bnQgKQorICAgICAgICB7CisgICAgICAg ICAgICBFUlJPUigiRGlydHkgcGZuIGxpc3QgZXhjZWVkIik7CisgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgfQorCisgICAgICAgIHBmbnNbd3JpdHRlbisrXSA9IGk7CisgICAgfQorCisg ICAgLyogaW92ZWNbXSBmb3Igd3JpdGV2KCkuICovCisgICAgaW92ID0gbWFsbG9jKDMgKiBzaXpl b2YoKmlvdikpOworICAgIGlmICggIWlvdiApCisgICAgeworICAgICAgICBFUlJPUigiVW5hYmxl IHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Igc2VuZGluZyBkaXJ0eSBiaXRtYXAiKTsKKyAgICAgICAg Z290byBlcnI7CisgICAgfQorCisgICAgcmVjLmxlbmd0aCA9IGNvdW50ICogc2l6ZW9mKCpwZm5z KTsKKworICAgIGlvdlswXS5pb3ZfYmFzZSA9ICZyZWMudHlwZTsKKyAgICBpb3ZbMF0uaW92X2xl biA9IHNpemVvZihyZWMudHlwZSk7CisKKyAgICBpb3ZbMV0uaW92X2Jhc2UgPSAmcmVjLmxlbmd0 aDsKKyAgICBpb3ZbMV0uaW92X2xlbiA9IHNpemVvZihyZWMubGVuZ3RoKTsKKworICAgIGlvdlsy XS5pb3ZfYmFzZSA9IHBmbnM7CisgICAgaW92WzJdLmlvdl9sZW4gPSBjb3VudCAqIHNpemVvZigq cGZucyk7CisKKyAgICBpZiAoIHdyaXRldl9leGFjdChjdHgtPnJlc3RvcmUuc2VuZF9iYWNrX2Zk LCBpb3YsIDMpICkKKyAgICB7CisgICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIHdyaXRlIGRpcnR5 IGJpdG1hcCB0byBzdHJlYW0iKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgcmMg PSAwOworIGVycjoKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgcHJvY2Vzc19yZWNv cmQoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgc3RydWN0IHhjX3NyX3JlY29yZCAqcmVjKTsK IHN0YXRpYyBpbnQgaGFuZGxlX2NoZWNrcG9pbnQoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkK IHsKQEAgLTQ2MCw2ICs1NDYsNTMgQEAgc3RhdGljIGludCBoYW5kbGVfY2hlY2twb2ludChzdHJ1 Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogICAgIGVsc2UKICAgICAgICAgY3R4LT5yZXN0b3JlLmJ1 ZmZlcl9hbGxfcmVjb3JkcyA9IHRydWU7CiAKKyAgICBpZiAoIGN0eC0+cmVzdG9yZS5jaGVja3Bv aW50ZWQgPT0gWENfTUlHX1NUUkVBTV9DT0xPICkKKyAgICB7CisjZGVmaW5lIEhBTkRMRV9DQUxM QkFDS19SRVRVUk5fVkFMVUUocmV0KSAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg IGlmICggcmV0ID09IDEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICByYyA9IDA7IC8qIFN1Y2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoIHJldCA9PSAyICkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmMgPSBCUk9LRU5fQ0hBTk5F TDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBlbHNlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmMgPSAt MTsgLyogU29tZSB1bnNwZWNpZmllZCBlcnJvciAqLyAgICAgICBcCisgICAgICAgICAgICBnb3Rv IGVycjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg fSB3aGlsZSAoMCkKKworICAgICAgICAvKiBDT0xPICovCisKKyAgICAgICAgLyogV2UgbmVlZCB0 byByZXN1bWUgZ3Vlc3QgKi8KKyAgICAgICAgcmMgPSBjdHgtPnJlc3RvcmUub3BzLnN0cmVhbV9j b21wbGV0ZShjdHgpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gZXJyOwor CisgICAgICAgIGN0eC0+cmVzdG9yZS5jYWxsYmFja3MtPnJlc3RvcmVfcmVzdWx0cyhjdHgtPnJl c3RvcmUueGVuc3RvcmVfZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNvbnNvbGVfZ2ZuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNhbGxiYWNrcy0+ZGF0 YSk7CisKKyAgICAgICAgLyogUmVzdW1lIHNlY29uZGFyeSB2bSAqLworICAgICAgICByZXQgPSBj dHgtPnJlc3RvcmUuY2FsbGJhY2tzLT5wb3N0Y29weShjdHgtPnJlc3RvcmUuY2FsbGJhY2tzLT5k YXRhKTsKKyAgICAgICAgSEFORExFX0NBTExCQUNLX1JFVFVSTl9WQUxVRShyZXQpOworCisgICAg ICAgIC8qIFdhaXQgZm9yIGEgbmV3IGNoZWNrcG9pbnQgKi8KKyAgICAgICAgcmV0ID0gY3R4LT5y ZXN0b3JlLmNhbGxiYWNrcy0+d2FpdF9jaGVja3BvaW50KAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNhbGxiYWNrcy0+ZGF0YSk7 CisgICAgICAgIEhBTkRMRV9DQUxMQkFDS19SRVRVUk5fVkFMVUUocmV0KTsKKworICAgICAgICAv KiBzdXNwZW5kIHNlY29uZGFyeSB2bSAqLworICAgICAgICByZXQgPSBjdHgtPnJlc3RvcmUuY2Fs bGJhY2tzLT5zdXNwZW5kKGN0eC0+cmVzdG9yZS5jYWxsYmFja3MtPmRhdGEpOworICAgICAgICBI QU5ETEVfQ0FMTEJBQ0tfUkVUVVJOX1ZBTFVFKHJldCk7CisKKyN1bmRlZiBIQU5ETEVfQ0FMTEJB Q0tfUkVUVVJOX1ZBTFVFCisKKyAgICAgICAgcmMgPSBzZW5kX2NoZWNrcG9pbnRfZGlydHlfcGZu X2xpc3QoY3R4KTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIGVycjsKKyAg ICB9CisKICBlcnI6CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtNTI5LDYgKzY2MiwyMSBAQCBzdGF0 aWMgaW50IHNldHVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiB7CiAgICAgeGNfaW50ZXJm YWNlICp4Y2ggPSBjdHgtPnhjaDsKICAgICBpbnQgcmM7CisgICAgREVDTEFSRV9IWVBFUkNBTExf QlVGRkVSX1NIQURPVyh1bnNpZ25lZCBsb25nLCBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5yZXN0b3JlLmRpcnR5X2JpdG1hcF9oYnVmKTsK KworICAgIGlmICggY3R4LT5yZXN0b3JlLmNoZWNrcG9pbnRlZCA9PSBYQ19NSUdfU1RSRUFNX0NP TE8gKQorICAgIHsKKyAgICAgICAgZGlydHlfYml0bWFwID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9h bGxvY19wYWdlcyh4Y2gsIGRpcnR5X2JpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlJQQUdFUyhiaXRtYXBfc2l6ZShjdHgtPnJlc3RvcmUucDJtX3NpemUpKSk7CisKKyAg ICAgICAgaWYgKCAhZGlydHlfYml0bWFwICkKKyAgICAgICAgeworICAgICAgICAgICAgRVJST1Io IlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGRpcnR5IGJpdG1hcCIpOworICAgICAgICAg ICAgcmMgPSAtMTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfQogCiAg ICAgcmMgPSBjdHgtPnJlc3RvcmUub3BzLnNldHVwKGN0eCk7CiAgICAgaWYgKCByYyApCkBAIC01 NjIsMTAgKzcxMCwxNSBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0 ICpjdHgpCiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKICAgICB1bnNpZ25l ZCBpOworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9uZywg ZGlydHlfYml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+ cmVzdG9yZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IGN0eC0+ cmVzdG9yZS5idWZmZXJlZF9yZWNfbnVtOyBpKysgKQogICAgICAgICBmcmVlKGN0eC0+cmVzdG9y ZS5idWZmZXJlZF9yZWNvcmRzW2ldLmRhdGEpOwogCisgICAgaWYgKCBjdHgtPnJlc3RvcmUuY2hl Y2twb2ludGVkID09IFhDX01JR19TVFJFQU1fQ09MTyApCisgICAgICAgIHhjX2h5cGVyY2FsbF9i dWZmZXJfZnJlZV9wYWdlcyh4Y2gsIGRpcnR5X2JpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlJQQUdFUyhiaXRtYXBfc2l6ZShjdHgtPnJlc3RvcmUucDJtX3NpemUp KSk7CiAgICAgZnJlZShjdHgtPnJlc3RvcmUuYnVmZmVyZWRfcmVjb3Jkcyk7CiAgICAgZnJlZShj dHgtPnJlc3RvcmUucG9wdWxhdGVkX3BmbnMpOwogICAgIGlmICggY3R4LT5yZXN0b3JlLm9wcy5j bGVhbnVwKGN0eCkgKQpAQCAtNjMxLDYgKzc4NCwxNSBAQCBzdGF0aWMgaW50IHJlc3RvcmUoc3Ry dWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKICAgICB9IHdoaWxlICggcmVjLnR5cGUgIT0gUkVDX1RZ UEVfRU5EICk7CiAKICByZW11c19mYWlsb3ZlcjoKKworICAgIGlmICggY3R4LT5yZXN0b3JlLmNo ZWNrcG9pbnRlZCA9PSBYQ19NSUdfU1RSRUFNX0NPTE8gKQorICAgIHsKKyAgICAgICAgLyogV2l0 aCBDT0xPLCB3ZSBoYXZlIGFscmVhZHkgY2FsbGVkIHN0cmVhbV9jb21wbGV0ZSAqLworICAgICAg ICByYyA9IDA7CisgICAgICAgIElQUklOVEYoIkNPTE8gRmFpbG92ZXIiKTsKKyAgICAgICAgZ290 byBkb25lOworICAgIH0KKwogICAgIC8qCiAgICAgICogV2l0aCBSZW11cywgaWYgd2UgcmVhY2gg aGVyZSwgdGhlcmUgbXVzdCBiZSBzb21lIGVycm9yIG9uIHByaW1hcnksCiAgICAgICogZmFpbG92 ZXIgZnJvbSB0aGUgbGFzdCBjaGVja3BvaW50IHN0YXRlLgpAQCAtNjY3LDYgKzgyOSw3IEBAIGlu dCB4Y19kb21haW5fcmVzdG9yZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50MzJf dCBkb20sCiAgICAgICAgICAgICAgICAgICAgICAgeGNfbWlncmF0aW9uX3N0cmVhbV90IHN0cmVh bV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZXN0b3JlX2NhbGxiYWNrcyAq Y2FsbGJhY2tzLCBpbnQgc2VuZF9iYWNrX2ZkKQogeworICAgIHhlbl9wZm5fdCBucl9wZm5zOwog ICAgIHN0cnVjdCB4Y19zcl9jb250ZXh0IGN0eCA9CiAgICAgICAgIHsKICAgICAgICAgICAgIC54 Y2ggPSB4Y2gsCkBAIC02ODAsMTEgKzg0MywyMSBAQCBpbnQgeGNfZG9tYWluX3Jlc3RvcmUoeGNf aW50ZXJmYWNlICp4Y2gsIGludCBpb19mZCwgdWludDMyX3QgZG9tLAogICAgIGN0eC5yZXN0b3Jl LnhlbnN0b3JlX2RvbWlkID0gc3RvcmVfZG9taWQ7CiAgICAgY3R4LnJlc3RvcmUuY2hlY2twb2lu dGVkID0gc3RyZWFtX3R5cGU7CiAgICAgY3R4LnJlc3RvcmUuY2FsbGJhY2tzID0gY2FsbGJhY2tz OworICAgIGN0eC5yZXN0b3JlLnNlbmRfYmFja19mZCA9IHNlbmRfYmFja19mZDsKIAogICAgIC8q IFNhbml0eSBjaGVja3MgZm9yIGNhbGxiYWNrcy4gKi8KICAgICBpZiAoIHN0cmVhbV90eXBlICkK ICAgICAgICAgYXNzZXJ0KGNhbGxiYWNrcy0+Y2hlY2twb2ludCk7CiAKKyAgICBpZiAoIGN0eC5y ZXN0b3JlLmNoZWNrcG9pbnRlZCA9PSBYQ19NSUdfU1RSRUFNX0NPTE8gKQorICAgIHsKKyAgICAg ICAgLyogdGhpcyBpcyBDT0xPIHJlc3RvcmUgKi8KKyAgICAgICAgYXNzZXJ0KGNhbGxiYWNrcy0+ c3VzcGVuZCAmJgorICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5wb3N0Y29weSAmJgorICAgICAg ICAgICAgICAgY2FsbGJhY2tzLT53YWl0X2NoZWNrcG9pbnQgJiYKKyAgICAgICAgICAgICAgIGNh bGxiYWNrcy0+cmVzdG9yZV9yZXN1bHRzKTsKKyAgICB9CisKICAgICBEUFJJTlRGKCJmZCAlZCwg ZG9tICV1LCBodm0gJXUsIHBhZSAldSwgc3VwZXJwYWdlcyAlZCIKICAgICAgICAgICAgICIsIHN0 cmVhbV90eXBlICVkIiwgaW9fZmQsIGRvbSwgaHZtLCBwYWUsCiAgICAgICAgICAgICBzdXBlcnBh Z2VzLCBzdHJlYW1fdHlwZSk7CkBAIC03MDYsNiArODc5LDE0IEBAIGludCB4Y19kb21haW5fcmVz dG9yZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50MzJfdCBkb20sCiAgICAgaWYg KCByZWFkX2hlYWRlcnMoJmN0eCkgKQogICAgICAgICByZXR1cm4gLTE7CiAKKyAgICBpZiAoIHhj X2RvbWFpbl9ucl9ncGZucyh4Y2gsIGRvbSwgJm5yX3BmbnMpIDwgMCApCisgICAgeworICAgICAg ICBQRVJST1IoIlVuYWJsZSB0byBvYnRhaW4gdGhlIGd1ZXN0IHAybSBzaXplIik7CisgICAgICAg IHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHgucmVzdG9yZS5wMm1fc2l6ZSA9IG5yX3BmbnM7 CisKICAgICBpZiAoIGN0eC5kb21pbmZvLmh2bSApCiAgICAgewogICAgICAgICBjdHgucmVzdG9y ZS5vcHMgPSByZXN0b3JlX29wc194ODZfaHZtOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfY29sb19yZXN0b3JlLmMgYi90b29scy9saWJ4bC9saWJ4bF9jb2xvX3Jlc3RvcmUuYwppbmRl eCBhOGY3NGE3Li4wNGIwMmQ4IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9jb2xvX3Jl c3RvcmUuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9jb2xvX3Jlc3RvcmUuYwpAQCAtMTI2LDEx ICsxMjYsNiBAQCBzdGF0aWMgdm9pZCBjb2xvX3Jlc3VtZV92bShsaWJ4bF9fZWdjICplZ2MsCiAg ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvKgotICAgICAqIFRPRE86IGdldCBzdG9yZSBn Zm4gYW5kIGNvbnNvbGUgZ2ZuCi0gICAgICogIFdlIHNob3VsZCBjYWxsIHRoZSBjYWxsYmFjayBy ZXN0b3JlX3Jlc3VsdHMgaW4KLSAgICAgKiAgeGNfZG9tYWluX3Jlc3RvcmUoKSBiZWZvcmUgcmVz dW1pbmcgdGhlIGd1ZXN0LgotICAgICAqLwogICAgIGxpYnhsX194Y19kb21haW5fcmVzdG9yZV9k b25lKGVnYywgZGNzLCAwLCAwLCAwKTsKIAogICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX2NyZWF0ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKaW5kZXgg YThiM2JiMS4uMWJmOGE5MiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMK KysrIGIvdG9vbHMvbGlieGwvbGlieGxfY3JlYXRlLmMKQEAgLTEwMTMsNiArMTAxMyw4IEBAIHN0 YXRpYyB2b2lkIGRvbWNyZWF0ZV9ib290bG9hZGVyX2RvbmUobGlieGxfX2VnYyAqZWdjLAogICAg IGNvbnN0IGludCBjaGVja3BvaW50ZWRfc3RyZWFtID0gZGNzLT5yZXN0b3JlX3BhcmFtcy5jaGVj a3BvaW50ZWRfc3RyZWFtOwogICAgIGxpYnhsX19jb2xvX3Jlc3RvcmVfc3RhdGUgKmNvbnN0IGNy cyA9ICZkY3MtPmNyczsKICAgICBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqY29uc3QgaW5mbyA9 ICZkX2NvbmZpZy0+Yl9pbmZvOworICAgIGxpYnhsX19zcm1fcmVzdG9yZV9hdXRvZ2VuX2NhbGxi YWNrcyAqY29uc3QgY2FsbGJhY2tzID0KKyAgICAgICAgJmRjcy0+c3JzLnNocy5jYWxsYmFja3Mu cmVzdG9yZS5hOwogCiAgICAgaWYgKHJjKSB7CiAgICAgICAgIGRvbWNyZWF0ZV9yZWJ1aWxkX2Rv bmUoZWdjLCBkY3MsIHJjKTsKQEAgLTEwNDAsNiArMTA0Miw3IEBAIHN0YXRpYyB2b2lkIGRvbWNy ZWF0ZV9ib290bG9hZGVyX2RvbmUobGlieGxfX2VnYyAqZWdjLAogICAgIH0KIAogICAgIC8qIFJl c3RvcmUgKi8KKyAgICBjYWxsYmFja3MtPnJlc3RvcmVfcmVzdWx0cyA9IGxpYnhsX19zcm1fY2Fs bG91dF9jYWxsYmFja19yZXN0b3JlX3Jlc3VsdHM7CiAKICAgICAvKiBDT0xPIG9ubHkgc3VwcG9y dHMgSFZNIG5vdyBiZWNhdXNlIGl0IGRvZXMgbm90IHdvcmsgdmVyeQogICAgICAqIHdlbGwgd2l0 aCBwdiBkcml2ZXJzOgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dl bi5wbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4ucGwKaW5kZXggNjAxNjcwNi4u YzIyNDNmMiAxMDA3NTUKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dlbi5wbAor KysgYi90b29scy9saWJ4bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsCkBAIC0yOSw4ICsyOSw4IEBA IG91ciBAbXNncyA9ICgKICAgICBbICA2LCAnc3JjeEEnLCAgIndhaXRfY2hlY2twb2ludCIsIFtd IF0sCiAgICAgWyAgNywgJ3NjeEEnLCAgICJzd2l0Y2hfcWVtdV9sb2dkaXJ0eSIsICBbcXcoaW50 IGRvbWlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgZW5hYmxlKV0gXSwKLSAgICBbICA4LCAncicsICAgICAgInJlc3RvcmVfcmVzdWx0cyIs ICAgICAgIFsndW5zaWduZWQgbG9uZycsICdzdG9yZV9tZm4nLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNpZ25lZCBsb25nJywgJ2NvbnNvbGVfbWZu J10gXSwKKyAgICBbICA4LCAncmN4JywgICAgInJlc3RvcmVfcmVzdWx0cyIsICAgICAgIFsndW5z aWduZWQgbG9uZycsICdzdG9yZV9nZm4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICd1bnNpZ25lZCBsb25nJywgJ2NvbnNvbGVfZ2ZuJ10gXSwKICAgICBb ICA5LCAnc3JXJywgICAgImNvbXBsZXRlIiwgICAgICAgICAgICAgIFtxdyhpbnQgcmV0dmFsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVycm5v dmFsKV0gXSwKICk7Ci0tIAoxLjkuMwoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK