From mboxrd@z Thu Jan 1 00:00:00 1970 From: Changlong Xie Subject: [PATCH v11 16/27] libxc/restore: support COLO restore Date: Fri, 4 Mar 2016 16:41:20 +0800 Message-ID: <1457080891-26054-17-git-send-email-xiecl.fnst@cn.fujitsu.com> References: <1457080891-26054-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: <1457080891-26054-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 , 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 eGVuZ3Vlc3QuaAppbmRleCBjYjBiYmNmLi42N2NiNTQwIDEwMDY0NAotLS0gYS90b29scy9saWJ4 Yy9pbmNsdWRlL3hlbmd1ZXN0LmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5ndWVzdC5o CkBAIC0xMjcsNiArMTI3LDE0IEBAIHN0cnVjdCByZXN0b3JlX2NhbGxiYWNrcyB7CiAgICAgICov CiAgICAgaW50ICgqd2FpdF9jaGVja3BvaW50KSh2b2lkKiBkYXRhKTsKIAorICAgIC8qCisgICAg ICogY2FsbGJhY2sgdG8gc2VuZCBzdG9yZSBnZm4gYW5kIGNvbnNvbGUgZ2ZuIHRvIHhsCisgICAg ICogaWYgd2Ugd2FudCB0byByZXN1bWUgdm0gYmVmb3JlIHhjX2RvbWFpbl9zYXZlKCkKKyAgICAg KiBleGl0cy4KKyAgICAgKi8KKyAgICB2b2lkICgqcmVzdG9yZV9yZXN1bHRzKSh4ZW5fcGZuX3Qg c3RvcmVfZ2ZuLCB4ZW5fcGZuX3QgY29uc29sZV9nZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqZGF0YSk7CisKICAgICAvKiB0byBiZSBwcm92aWRlZCBhcyB0aGUgbGFzdCBh cmd1bWVudCB0byBlYWNoIGNhbGxiYWNrIGZ1bmN0aW9uICovCiAgICAgdm9pZCogZGF0YTsKIH07 CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hj X3NyX2NvbW1vbi5oCmluZGV4IDJiZmVkNjQuLjI5YWI0ZWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhjL3hjX3NyX2NvbW1vbi5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCkBAIC0y MjYsNiArMjI2LDEwIEBAIHN0cnVjdCB4Y19zcl9jb250ZXh0CiAgICAgICAgICAgICBzdHJ1Y3Qg eGNfc3JfcmVzdG9yZV9vcHMgb3BzOwogICAgICAgICAgICAgc3RydWN0IHJlc3RvcmVfY2FsbGJh Y2tzICpjYWxsYmFja3M7CiAKKyAgICAgICAgICAgIGludCBzZW5kX2JhY2tfZmQ7CisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHAybV9zaXplOworICAgICAgICAgICAgeGNfaHlwZXJjYWxsX2J1 ZmZlcl90IGRpcnR5X2JpdG1hcF9oYnVmOworCiAgICAgICAgICAgICAvKiBGcm9tIEltYWdlIEhl YWRlci4gKi8KICAgICAgICAgICAgIHVpbnQzMl90IGZvcm1hdF92ZXJzaW9uOwogCkBAIC0yMzQs MTMgKzIzOCwxMyBAQCBzdHJ1Y3QgeGNfc3JfY29udGV4dAogICAgICAgICAgICAgdWludDMyX3Qg Z3Vlc3RfcGFnZV9zaXplOwogCiAgICAgICAgICAgICAvKiBQbGFpbiBWTSwgb3IgY2hlY2twb2lu dHMgb3ZlciB0aW1lLiAqLwotICAgICAgICAgICAgYm9vbCBjaGVja3BvaW50ZWQ7CisgICAgICAg ICAgICBpbnQgY2hlY2twb2ludGVkOwogCiAgICAgICAgICAgICAvKiBDdXJyZW50bHkgYnVmZmVy aW5nIHJlY29yZHMgYmV0d2VlbiBhIGNoZWNrcG9pbnQgKi8KICAgICAgICAgICAgIGJvb2wgYnVm ZmVyX2FsbF9yZWNvcmRzOwogCiAvKgotICogV2l0aCBSZW11cywgd2UgYnVmZmVyIHRoZSByZWNv cmRzIHNlbnQgYnkgdGhlIHByaW1hcnkgYXQgY2hlY2twb2ludCwKKyAqIFdpdGggUmVtdXMvQ09M Tywgd2UgYnVmZmVyIHRoZSByZWNvcmRzIHNlbnQgYnkgdGhlIHByaW1hcnkgYXQgY2hlY2twb2lu dCwKICAqIGluIGNhc2UgdGhlIHByaW1hcnkgd2lsbCBmYWlsLCB3ZSBjYW4gcmVjb3ZlciBmcm9t IHRoZSBsYXN0CiAgKiBjaGVja3BvaW50IHN0YXRlLgogICogVGhpcyBzaG91bGQgYmUgZW5vdWdo IGZvciBtb3N0IG9mIHRoZSBjYXNlcyBiZWNhdXNlIHByaW1hcnkgb25seSBzZW5kCmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19zcl9yZXN0b3JlLmMgYi90b29scy9saWJ4Yy94Y19zcl9yZXN0 b3JlLmMKaW5kZXggYWVmOWJjYS4uMjRjNDcxOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNf 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 aW50ZWQgPT0gTUlHX1NUUkVBTV9DT0xPICkKKyAgICB7CisjZGVmaW5lIEhBTkRMRV9DQUxMQkFD S19SRVRVUk5fVkFMVUUocmV0KSAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm ICggcmV0ID09IDEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICByYyA9IDA7IC8qIFN1Y2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoIHJldCA9PSAyICkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmMgPSBCUk9LRU5fQ0hBTk5FTDsg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgcmMgPSAtMTsg LyogU29tZSB1bnNwZWNpZmllZCBlcnJvciAqLyAgICAgICBcCisgICAgICAgICAgICBnb3RvIGVy cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3 aGlsZSAoMCkKKworICAgICAgICAvKiBDT0xPICovCisKKyAgICAgICAgLyogV2UgbmVlZCB0byBy ZXN1bWUgZ3Vlc3QgKi8KKyAgICAgICAgcmMgPSBjdHgtPnJlc3RvcmUub3BzLnN0cmVhbV9jb21w bGV0ZShjdHgpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGdvdG8gZXJyOworCisg ICAgICAgIGN0eC0+cmVzdG9yZS5jYWxsYmFja3MtPnJlc3RvcmVfcmVzdWx0cyhjdHgtPnJlc3Rv cmUueGVuc3RvcmVfZ2ZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3R4LT5yZXN0b3JlLmNvbnNvbGVfZ2ZuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNhbGxiYWNrcy0+ZGF0YSk7 CisKKyAgICAgICAgLyogUmVzdW1lIHNlY29uZGFyeSB2bSAqLworICAgICAgICByZXQgPSBjdHgt PnJlc3RvcmUuY2FsbGJhY2tzLT5wb3N0Y29weShjdHgtPnJlc3RvcmUuY2FsbGJhY2tzLT5kYXRh KTsKKyAgICAgICAgSEFORExFX0NBTExCQUNLX1JFVFVSTl9WQUxVRShyZXQpOworCisgICAgICAg IC8qIFdhaXQgZm9yIGEgbmV3IGNoZWNrcG9pbnQgKi8KKyAgICAgICAgcmV0ID0gY3R4LT5yZXN0 b3JlLmNhbGxiYWNrcy0+d2FpdF9jaGVja3BvaW50KAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNhbGxiYWNrcy0+ZGF0YSk7Cisg ICAgICAgIEhBTkRMRV9DQUxMQkFDS19SRVRVUk5fVkFMVUUocmV0KTsKKworICAgICAgICAvKiBz dXNwZW5kIHNlY29uZGFyeSB2bSAqLworICAgICAgICByZXQgPSBjdHgtPnJlc3RvcmUuY2FsbGJh Y2tzLT5zdXNwZW5kKGN0eC0+cmVzdG9yZS5jYWxsYmFja3MtPmRhdGEpOworICAgICAgICBIQU5E TEVfQ0FMTEJBQ0tfUkVUVVJOX1ZBTFVFKHJldCk7CisKKyN1bmRlZiBIQU5ETEVfQ0FMTEJBQ0tf UkVUVVJOX1ZBTFVFCisKKyAgICAgICAgcmMgPSBzZW5kX2NoZWNrcG9pbnRfZGlydHlfcGZuX2xp c3QoY3R4KTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICB9 CisKICBlcnI6CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtNTI5LDYgKzY2MiwyMSBAQCBzdGF0aWMg aW50IHNldHVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiB7CiAgICAgeGNfaW50ZXJmYWNl ICp4Y2ggPSBjdHgtPnhjaDsKICAgICBpbnQgcmM7CisgICAgREVDTEFSRV9IWVBFUkNBTExfQlVG RkVSX1NIQURPVyh1bnNpZ25lZCBsb25nLCBkaXJ0eV9iaXRtYXAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmY3R4LT5yZXN0b3JlLmRpcnR5X2JpdG1hcF9oYnVmKTsKKwor ICAgIGlmICggY3R4LT5yZXN0b3JlLmNoZWNrcG9pbnRlZCA9PSBNSUdfU1RSRUFNX0NPTE8gKQor ICAgIHsKKyAgICAgICAgZGlydHlfYml0bWFwID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvY19w YWdlcyh4Y2gsIGRpcnR5X2JpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlJQQUdFUyhiaXRtYXBfc2l6ZShjdHgtPnJlc3RvcmUucDJtX3NpemUpKSk7CisKKyAgICAgICAg aWYgKCAhZGlydHlfYml0bWFwICkKKyAgICAgICAgeworICAgICAgICAgICAgRVJST1IoIlVuYWJs ZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGRpcnR5IGJpdG1hcCIpOworICAgICAgICAgICAgcmMg PSAtMTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisgICAgfQogCiAgICAgcmMg PSBjdHgtPnJlc3RvcmUub3BzLnNldHVwKGN0eCk7CiAgICAgaWYgKCByYyApCkBAIC01NjIsMTAg KzcxMCwxNSBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgp CiB7CiAgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKICAgICB1bnNpZ25lZCBpOwor ICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JVRkZFUl9TSEFET1codW5zaWduZWQgbG9uZywgZGlydHlf Yml0bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+cmVzdG9y ZS5kaXJ0eV9iaXRtYXBfaGJ1Zik7CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IGN0eC0+cmVzdG9y ZS5idWZmZXJlZF9yZWNfbnVtOyBpKysgKQogICAgICAgICBmcmVlKGN0eC0+cmVzdG9yZS5idWZm ZXJlZF9yZWNvcmRzW2ldLmRhdGEpOwogCisgICAgaWYgKCBjdHgtPnJlc3RvcmUuY2hlY2twb2lu dGVkID09IE1JR19TVFJFQU1fQ09MTyApCisgICAgICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJl ZV9wYWdlcyh4Y2gsIGRpcnR5X2JpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlJQQUdFUyhiaXRtYXBfc2l6ZShjdHgtPnJlc3RvcmUucDJtX3NpemUpKSk7CiAgICAg ZnJlZShjdHgtPnJlc3RvcmUuYnVmZmVyZWRfcmVjb3Jkcyk7CiAgICAgZnJlZShjdHgtPnJlc3Rv cmUucG9wdWxhdGVkX3BmbnMpOwogICAgIGlmICggY3R4LT5yZXN0b3JlLm9wcy5jbGVhbnVwKGN0 eCkgKQpAQCAtNjMxLDYgKzc4NCwxNSBAQCBzdGF0aWMgaW50IHJlc3RvcmUoc3RydWN0IHhjX3Ny X2NvbnRleHQgKmN0eCkKICAgICB9IHdoaWxlICggcmVjLnR5cGUgIT0gUkVDX1RZUEVfRU5EICk7 CiAKICByZW11c19mYWlsb3ZlcjoKKworICAgIGlmICggY3R4LT5yZXN0b3JlLmNoZWNrcG9pbnRl ZCA9PSBNSUdfU1RSRUFNX0NPTE8gKQorICAgIHsKKyAgICAgICAgLyogV2l0aCBDT0xPLCB3ZSBo YXZlIGFscmVhZHkgY2FsbGVkIHN0cmVhbV9jb21wbGV0ZSAqLworICAgICAgICByYyA9IDA7Cisg ICAgICAgIElQUklOVEYoIkNPTE8gRmFpbG92ZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAg IH0KKwogICAgIC8qCiAgICAgICogV2l0aCBSZW11cywgaWYgd2UgcmVhY2ggaGVyZSwgdGhlcmUg bXVzdCBiZSBzb21lIGVycm9yIG9uIHByaW1hcnksCiAgICAgICogZmFpbG92ZXIgZnJvbSB0aGUg bGFzdCBjaGVja3BvaW50IHN0YXRlLgpAQCAtNjY3LDYgKzgyOSw3IEBAIGludCB4Y19kb21haW5f cmVzdG9yZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlvX2ZkLCB1aW50MzJfdCBkb20sCiAgICAg ICAgICAgICAgICAgICAgICAgaW50IGNoZWNrcG9pbnRlZF9zdHJlYW0sCiAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHJlc3RvcmVfY2FsbGJhY2tzICpjYWxsYmFja3MsIGludCBzZW5kX2Jh Y2tfZmQpCiB7CisgICAgeGVuX3Bmbl90IG5yX3BmbnM7CiAgICAgc3RydWN0IHhjX3NyX2NvbnRl eHQgY3R4ID0KICAgICAgICAgewogICAgICAgICAgICAgLnhjaCA9IHhjaCwKQEAgLTY4MCwxMSAr ODQzLDIxIEBAIGludCB4Y19kb21haW5fcmVzdG9yZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGlv X2ZkLCB1aW50MzJfdCBkb20sCiAgICAgY3R4LnJlc3RvcmUueGVuc3RvcmVfZG9taWQgPSBzdG9y ZV9kb21pZDsKICAgICBjdHgucmVzdG9yZS5jaGVja3BvaW50ZWQgPSBjaGVja3BvaW50ZWRfc3Ry ZWFtOwogICAgIGN0eC5yZXN0b3JlLmNhbGxiYWNrcyA9IGNhbGxiYWNrczsKKyAgICBjdHgucmVz dG9yZS5zZW5kX2JhY2tfZmQgPSBzZW5kX2JhY2tfZmQ7CiAKICAgICAvKiBTYW5pdHkgY2hlY2tz IGZvciBjYWxsYmFja3MuICovCiAgICAgaWYgKCBjaGVja3BvaW50ZWRfc3RyZWFtICkKICAgICAg ICAgYXNzZXJ0KGNhbGxiYWNrcy0+Y2hlY2twb2ludCk7CiAKKyAgICBpZiAoIGN0eC5yZXN0b3Jl LmNoZWNrcG9pbnRlZCA9PSBNSUdfU1RSRUFNX0NPTE8gKQorICAgIHsKKyAgICAgICAgLyogdGhp cyBpcyBDT0xPIHJlc3RvcmUgKi8KKyAgICAgICAgYXNzZXJ0KGNhbGxiYWNrcy0+c3VzcGVuZCAm JgorICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5wb3N0Y29weSAmJgorICAgICAgICAgICAgICAg Y2FsbGJhY2tzLT53YWl0X2NoZWNrcG9pbnQgJiYKKyAgICAgICAgICAgICAgIGNhbGxiYWNrcy0+ cmVzdG9yZV9yZXN1bHRzKTsKKyAgICB9CisKICAgICBEUFJJTlRGKCJmZCAlZCwgZG9tICV1LCBo dm0gJXUsIHBhZSAldSwgc3VwZXJwYWdlcyAlZCIKICAgICAgICAgICAgICIsIGNoZWNrcG9pbnRl ZF9zdHJlYW0gJWQiLCBpb19mZCwgZG9tLCBodm0sIHBhZSwKICAgICAgICAgICAgIHN1cGVycGFn ZXMsIGNoZWNrcG9pbnRlZF9zdHJlYW0pOwpAQCAtNzA2LDYgKzg3OSwxNCBAQCBpbnQgeGNfZG9t YWluX3Jlc3RvcmUoeGNfaW50ZXJmYWNlICp4Y2gsIGludCBpb19mZCwgdWludDMyX3QgZG9tLAog ICAgIGlmICggcmVhZF9oZWFkZXJzKCZjdHgpICkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAg aWYgKCB4Y19kb21haW5fbnJfZ3BmbnMoeGNoLCBkb20sICZucl9wZm5zKSA8IDAgKQorICAgIHsK KyAgICAgICAgUEVSUk9SKCJVbmFibGUgdG8gb2J0YWluIHRoZSBndWVzdCBwMm0gc2l6ZSIpOwor ICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4LnJlc3RvcmUucDJtX3NpemUgPSBu cl9wZm5zOworCiAgICAgaWYgKCBjdHguZG9taW5mby5odm0gKQogICAgIHsKICAgICAgICAgY3R4 LnJlc3RvcmUub3BzID0gcmVzdG9yZV9vcHNfeDg2X2h2bTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2NvbG9fcmVzdG9yZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfY29sb19yZXN0b3Jl LmMKaW5kZXggODI5Njg3ZS4uYjBkZDUyYiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxf Y29sb19yZXN0b3JlLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfY29sb19yZXN0b3JlLmMKQEAg LTEyNSwxMSArMTI1LDYgQEAgc3RhdGljIHZvaWQgY29sb19yZXN1bWVfdm0obGlieGxfX2VnYyAq ZWdjLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLyoKLSAgICAgKiBUT0RPOiBnZXQg c3RvcmUgZ2ZuIGFuZCBjb25zb2xlIGdmbgotICAgICAqICBXZSBzaG91bGQgY2FsbCB0aGUgY2Fs bGJhY2sgcmVzdG9yZV9yZXN1bHRzIGluCi0gICAgICogIHhjX2RvbWFpbl9yZXN0b3JlKCkgYmVm b3JlIHJlc3VtaW5nIHRoZSBndWVzdC4KLSAgICAgKi8KICAgICBsaWJ4bF9feGNfZG9tYWluX3Jl c3RvcmVfZG9uZShlZ2MsIGRjcywgMCwgMCwgMCk7CiAKICAgICByZXR1cm47CmRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5j CmluZGV4IDczMDFhYzQuLjM2MTBhMzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2Ny ZWF0ZS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCkBAIC0xMDEzLDYgKzEwMTMs OCBAQCBzdGF0aWMgdm9pZCBkb21jcmVhdGVfYm9vdGxvYWRlcl9kb25lKGxpYnhsX19lZ2MgKmVn YywKICAgICBjb25zdCBpbnQgY2hlY2twb2ludGVkX3N0cmVhbSA9IGRjcy0+cmVzdG9yZV9wYXJh bXMuY2hlY2twb2ludGVkX3N0cmVhbTsKICAgICBsaWJ4bF9fY29sb19yZXN0b3JlX3N0YXRlICpj b25zdCBjcnMgPSAmZGNzLT5jcnM7CiAgICAgbGlieGxfZG9tYWluX2J1aWxkX2luZm8gKmNvbnN0 IGluZm8gPSAmZF9jb25maWctPmJfaW5mbzsKKyAgICBsaWJ4bF9fc3JtX3Jlc3RvcmVfYXV0b2dl bl9jYWxsYmFja3MgKmNvbnN0IGNhbGxiYWNrcyA9CisgICAgICAgICZkY3MtPnNycy5zaHMuY2Fs bGJhY2tzLnJlc3RvcmUuYTsKIAogICAgIGlmIChyYykgewogICAgICAgICBkb21jcmVhdGVfcmVi dWlsZF9kb25lKGVnYywgZGNzLCByYyk7CkBAIC0xMDQwLDYgKzEwNDIsNyBAQCBzdGF0aWMgdm9p ZCBkb21jcmVhdGVfYm9vdGxvYWRlcl9kb25lKGxpYnhsX19lZ2MgKmVnYywKICAgICB9CiAKICAg ICAvKiBSZXN0b3JlICovCisgICAgY2FsbGJhY2tzLT5yZXN0b3JlX3Jlc3VsdHMgPSBsaWJ4bF9f c3JtX2NhbGxvdXRfY2FsbGJhY2tfcmVzdG9yZV9yZXN1bHRzOwogCiAgICAgLyogQ09MTyBvbmx5 IHN1cHBvcnRzIEhWTSBub3cgKi8KICAgICBpZiAoaW5mby0+dHlwZSAhPSBMSUJYTF9ET01BSU5f VFlQRV9IVk0gJiYKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4u cGwgYi90b29scy9saWJ4bC9saWJ4bF9zYXZlX21zZ3NfZ2VuLnBsCmluZGV4IDYwMTY3MDYuLmMy MjQzZjIgMTAwNzU1Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3NhdmVfbXNnc19nZW4ucGwKKysr IGIvdG9vbHMvbGlieGwvbGlieGxfc2F2ZV9tc2dzX2dlbi5wbApAQCAtMjksOCArMjksOCBAQCBv dXIgQG1zZ3MgPSAoCiAgICAgWyAgNiwgJ3NyY3hBJywgICJ3YWl0X2NoZWNrcG9pbnQiLCBbXSBd LAogICAgIFsgIDcsICdzY3hBJywgICAic3dpdGNoX3FlbXVfbG9nZGlydHkiLCAgW3F3KGludCBk b21pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGVuYWJsZSldIF0sCi0gICAgWyAgOCwgJ3InLCAgICAgICJyZXN0b3JlX3Jlc3VsdHMiLCAg ICAgICBbJ3Vuc2lnbmVkIGxvbmcnLCAnc3RvcmVfbWZuJywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zaWduZWQgbG9uZycsICdjb25zb2xlX21mbidd IF0sCisgICAgWyAgOCwgJ3JjeCcsICAgICJyZXN0b3JlX3Jlc3VsdHMiLCAgICAgICBbJ3Vuc2ln bmVkIGxvbmcnLCAnc3RvcmVfZ2ZuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAndW5zaWduZWQgbG9uZycsICdjb25zb2xlX2dmbiddIF0sCiAgICAgWyAg OSwgJ3NyVycsICAgICJjb21wbGV0ZSIsICAgICAgICAgICAgICBbcXcoaW50IHJldHZhbAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlcnJub3Zh bCldIF0sCiApOwotLSAKMS45LjMKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==