From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Druzhinin Subject: [PATCH v5] xen: don't save/restore the physmap on VM save/restore Date: Wed, 15 Mar 2017 16:01:19 +0000 Message-ID: <1489593679-31468-1-git-send-email-igor.druzhinin@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coBNL-0006iq-2o for xen-devel@lists.xenproject.org; Wed, 15 Mar 2017 16:02:11 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: sstabellini@kernel.org, anthony.perard@citrix.com Cc: Igor Druzhinin , crosthwaite.peter@gmail.com, qemu-devel@nongnu.org, paul.durrant@citrix.com, pbonzini@redhat.com, xen-devel@lists.xenproject.org, rth@twiddle.net List-Id: xen-devel@lists.xenproject.org U2F2aW5nL3Jlc3RvcmluZyB0aGUgcGh5c21hcCB0by9mcm9tIHhlbnN0b3JlIHdhcyBpbnRyb2R1 Y2VkIHRvClFFTVUgbWFqb3JseSBpbiBvcmRlciB0byBjb3ZlciB1cCB0aGUgVlJBTSByZWdpb24g cmVzdG9yZSBpc3N1ZS4KVGhlIHNlcXVlbmNlIG9mIHJlc3RvcmUgb3BlcmF0aW9ucyBpbXBsaWVz IHRoYXQgd2Ugc2hvdWxkIGtub3cKdGhlIGVmZmVjdGl2ZSBndWVzdCBWUkFNIGFkZHJlc3MgKmJl Zm9yZSogd2UgaGF2ZSB0aGUgVlJBTSByZWdpb24KcmVzdG9yZWQgKHdoaWNoIGhhcHBlbnMgbGF0 ZXIpLiBVbmZvcnR1bmF0ZWx5LCBpbiBYZW4gZW52aXJvbm1lbnQKVlJBTSBtZW1vcnkgZG9lcyBh Y3R1YWxseSBiZWxvbmcgdG8gYSBndWVzdCAtIG5vdCBRRU1VIGl0c2VsZiAtCndoaWNoIG1lYW5z IHRoZSBwb3NpdGlvbiBvZiB0aGlzIHJlZ2lvbiBpcyB1bmtub3duIGJlZm9yZWhhbmQgYW5kCmNh bid0IGJlIG1hcHBlZCBpbnRvIFFFTVUgYWRkcmVzcyBzcGFjZSBpbW1lZGlhdGVseS4KClByZXZp b3VzbHksIHJlY3JlYXRpbmcgeGVuc3RvcmUga2V5cywgaG9sZGluZyB0aGUgcGh5c21hcCwgYnkg dGhlCnRvb2xzdGFjayBoZWxwZWQgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24gaW4gcGxhY2UgYXQg dGhlIHJpZ2h0Cm1vbWVudCByZWFkeSB0byBiZSBjb25zdW1lZCBieSBRRU1VIHRvIG1hcCB0aGUg cmVnaW9uIHByb3Blcmx5LgoKVGhlIGV4dHJhbmVvdXMgY29tcGxleGl0eSBvZiBoYXZpbmcgdGhv c2Uga2V5cyB0cmFuc2ZlcnJlZCBieSB0aGUKdG9vbHN0YWNrIGFuZCB1bm5lY2Vzc2FyeSByZWR1 bmRhbmN5IHByb21wdGVkIHVzIHRvIHByb3Bvc2UgYQpzb2x1dGlvbiB3aGljaCBkb2Vzbid0IHJl cXVpcmUgYW55IGV4dHJhIGRhdGEgaW4geGVuc3RvcmUuIFRoZSBpZGVhCmlzIHRvIGRlZmVyIHRo ZSBWUkFNIHJlZ2lvbiBtYXBwaW5nIHRpbGwgdGhlIHBvaW50IHdlIGFjdHVhbGx5IGtub3cKdGhl IGVmZmVjdGl2ZSBhZGRyZXNzIGFuZCBhYmxlIHRvIG1hcCBpdC4gVG8gdGhhdCBlbmQsIHdlIGlu aXRpYWxseQpqdXN0IHNraXAgdGhlIG1hcHBpbmcgcmVxdWVzdCBmb3IgdGhlIGZyYW1lYnVmZmVy IGlmIHdlIHVuYWJsZSB0bwptYXAgaXQgbm93LiBUaGVuLCBhZnRlciB0aGUgbWVtb3J5IHJlZ2lv biByZXN0b3JlIHBoYXNlLCB3ZSBwZXJmb3JtCnRoZSBtYXBwaW5nIGFnYWluLCB0aGlzIHRpbWUg c3VjY2Vzc2Z1bGx5LCBhbmQgdXBkYXRlIHRoZSBWUkFNIHJlZ2lvbgptZXRhZGF0YSBhY2NvcmRp bmdseS4KClNpZ25lZC1vZmYtYnk6IElnb3IgRHJ1emhpbmluIDxpZ29yLmRydXpoaW5pbkBjaXRy aXguY29tPgotLS0KdjU6CiogQWRkIGFuIGFzc2VydGlvbiBhbmQgZGVidWcgcHJpbnRmCgp2NDoK KiBVc2UgVkdBIHBvc3RfbG9hZCBoYW5kbGVyIGZvciB2cmFtX3B0ciB1cGRhdGUKCnYzOgoqIE1v ZGlmeSBxZW11X3JhbV9wdHJfbGVuZ3RoIHNpbWlsYXJseSB3aXRoIHFlbXVfbWFwX3JhbV9wdHIK KiBBZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgcWVtdV9tYXBfcmFtX3B0ciBhbmQgcWVtdV9yYW1f cHRyX2xlbmd0aAogIHNlbWFudGljIGNoYW5nZSBmb3IgWGVuCiogRHJvcHBlZCBzb21lIHJlZHVu ZGFudCBjaGFuZ2VzCgp2MjoKKiBGaXggc29tZSBidWlsZGluZyBhbmQgY29kaW5nIHN0eWxlIGlz c3VlcwotLS0KIGV4ZWMuYyAgICAgICAgICAgfCAgMTYgKysrKysrKysrCiBody9kaXNwbGF5L3Zn YS5jIHwgIDExICsrKysrKwogeGVuLWh2bS5jICAgICAgICB8IDEwNCArKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDQ2IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2V4ZWMuYyBi L2V4ZWMuYwppbmRleCBhYWJiMDM1Li5hMWFjOGNkIDEwMDY0NAotLS0gYS9leGVjLmMKKysrIGIv ZXhlYy5jCkBAIC0yMDA4LDYgKzIwMDgsMTQgQEAgdm9pZCAqcWVtdV9tYXBfcmFtX3B0cihSQU1C bG9jayAqcmFtX2Jsb2NrLCByYW1fYWRkcl90IGFkZHIpCiAgICAgICAgIH0KIAogICAgICAgICBi bG9jay0+aG9zdCA9IHhlbl9tYXBfY2FjaGUoYmxvY2stPm9mZnNldCwgYmxvY2stPm1heF9sZW5n dGgsIDEpOworICAgICAgICBpZiAoYmxvY2stPmhvc3QgPT0gTlVMTCkgeworICAgICAgICAgICAg LyogSW4gY2FzZSB3ZSBjYW5ub3QgZXN0YWJsaXNoIHRoZSBtYXBwaW5nIHJpZ2h0IGF3YXkgd2Ug bWlnaHQKKyAgICAgICAgICAgICAqIHN0aWxsIGJlIGFibGUgdG8gZG8gaXQgbGF0ZXIgZS5nLiBv biBhIGxhdGVyIHN0YWdlIG9mIHJlc3RvcmUuCisgICAgICAgICAgICAgKiBXZSBkb24ndCB0b3Vj aCB0aGUgYmxvY2sgYW5kIHJldHVybiBOVUxMIGhlcmUgdG8gaW5kaWNhdGUKKyAgICAgICAgICAg ICAqIHRoYXQgaW50ZW50aW9uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByZXR1cm4g TlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmFtYmxvY2tfcHRyKGJsb2NrLCBh ZGRyKTsKIH0KQEAgLTIwNDEsNiArMjA0OSwxNCBAQCBzdGF0aWMgdm9pZCAqcWVtdV9yYW1fcHRy X2xlbmd0aChSQU1CbG9jayAqcmFtX2Jsb2NrLCByYW1fYWRkcl90IGFkZHIsCiAgICAgICAgIH0K IAogICAgICAgICBibG9jay0+aG9zdCA9IHhlbl9tYXBfY2FjaGUoYmxvY2stPm9mZnNldCwgYmxv Y2stPm1heF9sZW5ndGgsIDEpOworICAgICAgICBpZiAoYmxvY2stPmhvc3QgPT0gTlVMTCkgewor ICAgICAgICAgICAgLyogSW4gY2FzZSB3ZSBjYW5ub3QgZXN0YWJsaXNoIHRoZSBtYXBwaW5nIHJp Z2h0IGF3YXkgd2UgbWlnaHQKKyAgICAgICAgICAgICAqIHN0aWxsIGJlIGFibGUgdG8gZG8gaXQg bGF0ZXIgZS5nLiBvbiBhIGxhdGVyIHN0YWdlIG9mIHJlc3RvcmUuCisgICAgICAgICAgICAgKiBX ZSBkb24ndCB0b3VjaCB0aGUgYmxvY2sgYW5kIHJldHVybiBOVUxMIGhlcmUgdG8gaW5kaWNhdGUK KyAgICAgICAgICAgICAqIHRoYXQgaW50ZW50aW9uLgorICAgICAgICAgICAgICovCisgICAgICAg ICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByYW1ibG9j a19wdHIoYmxvY2ssIGFkZHIpOwpkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rp c3BsYXkvdmdhLmMKaW5kZXggNjljM2UxZC4uN2Q4NWZkOCAxMDA2NDQKLS0tIGEvaHcvZGlzcGxh eS92Z2EuYworKysgYi9ody9kaXNwbGF5L3ZnYS5jCkBAIC0yMDM1LDYgKzIwMzUsMTIgQEAgc3Rh dGljIGludCB2Z2FfY29tbW9uX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uX2lk KQogewogICAgIFZHQUNvbW1vblN0YXRlICpzID0gb3BhcXVlOwogCisgICAgaWYgKHhlbl9lbmFi bGVkKCkgJiYgIXMtPnZyYW1fcHRyKSB7CisgICAgICAgIC8qIHVwZGF0ZSBWUkFNIHJlZ2lvbiBw b2ludGVyIGluIGNhc2Ugd2UndmUgZmFpbGVkCisgICAgICAgICAqIHRoZSBsYXN0IHRpbWUgZHVy aW5nIGluaXQgcGhhc2UgKi8KKyAgICAgICAgcy0+dnJhbV9wdHIgPSBtZW1vcnlfcmVnaW9uX2dl dF9yYW1fcHRyKCZzLT52cmFtKTsKKyAgICAgICAgYXNzZXJ0KHMtPnZyYW1fcHRyKTsKKyAgICB9 CiAgICAgLyogZm9yY2UgcmVmcmVzaCAqLwogICAgIHMtPmdyYXBoaWNfbW9kZSA9IC0xOwogICAg IHZiZV91cGRhdGVfdmdhcmVncyhzKTsKQEAgLTIxNjUsNiArMjE3MSwxMSBAQCB2b2lkIHZnYV9j b21tb25faW5pdChWR0FDb21tb25TdGF0ZSAqcywgT2JqZWN0ICpvYmosIGJvb2wgZ2xvYmFsX3Zt c3RhdGUpCiAgICAgdm1zdGF0ZV9yZWdpc3Rlcl9yYW0oJnMtPnZyYW0sIGdsb2JhbF92bXN0YXRl ID8gTlVMTCA6IERFVklDRShvYmopKTsKICAgICB4ZW5fcmVnaXN0ZXJfZnJhbWVidWZmZXIoJnMt PnZyYW0pOwogICAgIHMtPnZyYW1fcHRyID0gbWVtb3J5X3JlZ2lvbl9nZXRfcmFtX3B0cigmcy0+ dnJhbSk7CisgICAgLyogVlJBTSBwb2ludGVyIG1pZ2h0IHN0aWxsIGJlIE5VTEwgaGVyZSBpZiB3 ZSBhcmUgcmVzdG9yaW5nIG9uIFhlbi4KKyAgICAgICBXZSB0cnkgdG8gZ2V0IGl0IGFnYWluIGxh dGVyIGF0IHBvc3QtbG9hZCBwaGFzZS4gKi8KKyNpZmRlZiBERUJVR19WR0FfTUVNCisgICAgcHJp bnRmKCJ2Z2E6IHZyYW0gcHRyOiAlcFxuIiwgcy0+dnJhbV9wdHIpOworI2VuZGlmCiAgICAgcy0+ Z2V0X2JwcCA9IHZnYV9nZXRfYnBwOwogICAgIHMtPmdldF9vZmZzZXRzID0gdmdhX2dldF9vZmZz ZXRzOwogICAgIHMtPmdldF9yZXNvbHV0aW9uID0gdmdhX2dldF9yZXNvbHV0aW9uOwpkaWZmIC0t Z2l0IGEveGVuLWh2bS5jIGIveGVuLWh2bS5jCmluZGV4IDUwNDNiZWIuLjhiZWRkOWIgMTAwNjQ0 Ci0tLSBhL3hlbi1odm0uYworKysgYi94ZW4taHZtLmMKQEAgLTMxNyw3ICszMTcsNiBAQCBzdGF0 aWMgaW50IHhlbl9hZGRfdG9fcGh5c21hcChYZW5JT1N0YXRlICpzdGF0ZSwKICAgICBYZW5QaHlz bWFwICpwaHlzbWFwID0gTlVMTDsKICAgICBod2FkZHIgcGZuLCBzdGFydF9ncGZuOwogICAgIGh3 YWRkciBwaHlzX29mZnNldCA9IG1lbW9yeV9yZWdpb25fZ2V0X3JhbV9hZGRyKG1yKTsKLSAgICBj aGFyIHBhdGhbODBdLCB2YWx1ZVsxN107CiAgICAgY29uc3QgY2hhciAqbXJfbmFtZTsKIAogICAg IGlmIChnZXRfcGh5c21hcHBpbmcoc3RhdGUsIHN0YXJ0X2FkZHIsIHNpemUpKSB7CkBAIC0zNDAs NiArMzM5LDIyIEBAIGdvX3BoeXNtYXA6CiAgICAgRFBSSU5URigibWFwcGluZyB2cmFtIHRvICUi SFdBRERSX1BSSXgiIC0gJSJIV0FERFJfUFJJeCJcbiIsCiAgICAgICAgICAgICBzdGFydF9hZGRy LCBzdGFydF9hZGRyICsgc2l6ZSk7CiAKKyAgICBtcl9uYW1lID0gbWVtb3J5X3JlZ2lvbl9uYW1l KG1yKTsKKworICAgIHBoeXNtYXAgPSBnX21hbGxvYyhzaXplb2YoWGVuUGh5c21hcCkpOworCisg ICAgcGh5c21hcC0+c3RhcnRfYWRkciA9IHN0YXJ0X2FkZHI7CisgICAgcGh5c21hcC0+c2l6ZSA9 IHNpemU7CisgICAgcGh5c21hcC0+bmFtZSA9IG1yX25hbWU7CisgICAgcGh5c21hcC0+cGh5c19v ZmZzZXQgPSBwaHlzX29mZnNldDsKKworICAgIFFMSVNUX0lOU0VSVF9IRUFEKCZzdGF0ZS0+cGh5 c21hcCwgcGh5c21hcCwgbGlzdCk7CisKKyAgICBpZiAocnVuc3RhdGVfY2hlY2soUlVOX1NUQVRF X0lOTUlHUkFURSkpIHsKKyAgICAgICAgLyogSWYgd2UgYXJlIG1pZ3JhdGluZyB0aGUgcmVnaW9u IGhhcyBiZWVuIGFscmVhZHkgbWFwcGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwog ICAgIHBmbiA9IHBoeXNfb2Zmc2V0ID4+IFRBUkdFVF9QQUdFX0JJVFM7CiAgICAgc3RhcnRfZ3Bm biA9IHN0YXJ0X2FkZHIgPj4gVEFSR0VUX1BBR0VfQklUUzsKICAgICBmb3IgKGkgPSAwOyBpIDwg c2l6ZSA+PiBUQVJHRVRfUEFHRV9CSVRTOyBpKyspIHsKQEAgLTM1MCw0OSArMzY1LDE3IEBAIGdv X3BoeXNtYXA6CiAgICAgICAgIGlmIChyYykgewogICAgICAgICAgICAgRFBSSU5URigiYWRkX3Rv X3BoeXNtYXAgTUZOICUiUFJJX3hlbl9wZm4iIHRvIFBGTiAlIgogICAgICAgICAgICAgICAgICAg ICBQUklfeGVuX3BmbiIgZmFpbGVkOiAlZCAoZXJybm86ICVkKVxuIiwgaWR4LCBncGZuLCByYywg ZXJybm8pOworCisgICAgICAgICAgICBRTElTVF9SRU1PVkUocGh5c21hcCwgbGlzdCk7CisgICAg ICAgICAgICBnX2ZyZWUocGh5c21hcCk7CiAgICAgICAgICAgICByZXR1cm4gLXJjOwogICAgICAg ICB9CiAgICAgfQogCi0gICAgbXJfbmFtZSA9IG1lbW9yeV9yZWdpb25fbmFtZShtcik7Ci0KLSAg ICBwaHlzbWFwID0gZ19tYWxsb2Moc2l6ZW9mIChYZW5QaHlzbWFwKSk7Ci0KLSAgICBwaHlzbWFw LT5zdGFydF9hZGRyID0gc3RhcnRfYWRkcjsKLSAgICBwaHlzbWFwLT5zaXplID0gc2l6ZTsKLSAg ICBwaHlzbWFwLT5uYW1lID0gbXJfbmFtZTsKLSAgICBwaHlzbWFwLT5waHlzX29mZnNldCA9IHBo eXNfb2Zmc2V0OwotCi0gICAgUUxJU1RfSU5TRVJUX0hFQUQoJnN0YXRlLT5waHlzbWFwLCBwaHlz bWFwLCBsaXN0KTsKLQogICAgIHhjX2RvbWFpbl9waW5fbWVtb3J5X2NhY2hlYXR0cih4ZW5feGMs IHhlbl9kb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfYWRk ciA+PiBUQVJHRVRfUEFHRV9CSVRTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RhcnRfYWRkciArIHNpemUgLSAxKSA+PiBUQVJHRVRfUEFHRV9CSVRTLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fRE9NQ1RMX01FTV9DQUNIRUFUVFJfV0IpOwot Ci0gICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLAotICAgICAgICAgICAgIi9sb2NhbC9k b21haW4vMC9kZXZpY2UtbW9kZWwvJWQvcGh5c21hcC8lIlBSSXg2NCIvc3RhcnRfYWRkciIsCi0g ICAgICAgICAgICB4ZW5fZG9taWQsICh1aW50NjRfdClwaHlzX29mZnNldCk7Ci0gICAgc25wcmlu dGYodmFsdWUsIHNpemVvZih2YWx1ZSksICIlIlBSSXg2NCwgKHVpbnQ2NF90KXN0YXJ0X2FkZHIp OwotICAgIGlmICgheHNfd3JpdGUoc3RhdGUtPnhlbnN0b3JlLCAwLCBwYXRoLCB2YWx1ZSwgc3Ry bGVuKHZhbHVlKSkpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBzbnByaW50Zihw YXRoLCBzaXplb2YocGF0aCksCi0gICAgICAgICAgICAiL2xvY2FsL2RvbWFpbi8wL2RldmljZS1t b2RlbC8lZC9waHlzbWFwLyUiUFJJeDY0Ii9zaXplIiwKLSAgICAgICAgICAgIHhlbl9kb21pZCwg KHVpbnQ2NF90KXBoeXNfb2Zmc2V0KTsKLSAgICBzbnByaW50Zih2YWx1ZSwgc2l6ZW9mKHZhbHVl KSwgIiUiUFJJeDY0LCAodWludDY0X3Qpc2l6ZSk7Ci0gICAgaWYgKCF4c193cml0ZShzdGF0ZS0+ eGVuc3RvcmUsIDAsIHBhdGgsIHZhbHVlLCBzdHJsZW4odmFsdWUpKSkgewotICAgICAgICByZXR1 cm4gLTE7Ci0gICAgfQotICAgIGlmIChtcl9uYW1lKSB7Ci0gICAgICAgIHNucHJpbnRmKHBhdGgs IHNpemVvZihwYXRoKSwKLSAgICAgICAgICAgICAgICAiL2xvY2FsL2RvbWFpbi8wL2RldmljZS1t b2RlbC8lZC9waHlzbWFwLyUiUFJJeDY0Ii9uYW1lIiwKLSAgICAgICAgICAgICAgICB4ZW5fZG9t aWQsICh1aW50NjRfdClwaHlzX29mZnNldCk7Ci0gICAgICAgIGlmICgheHNfd3JpdGUoc3RhdGUt PnhlbnN0b3JlLCAwLCBwYXRoLCBtcl9uYW1lLCBzdHJsZW4obXJfbmFtZSkpKSB7Ci0gICAgICAg ICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4gMDsKIH0KIApA QCAtMTE1Miw1NCArMTEzNSw2IEBAIHN0YXRpYyB2b2lkIHhlbl9leGl0X25vdGlmaWVyKE5vdGlm aWVyICpuLCB2b2lkICpkYXRhKQogICAgIHhzX2RhZW1vbl9jbG9zZShzdGF0ZS0+eGVuc3RvcmUp OwogfQogCi1zdGF0aWMgdm9pZCB4ZW5fcmVhZF9waHlzbWFwKFhlbklPU3RhdGUgKnN0YXRlKQot ewotICAgIFhlblBoeXNtYXAgKnBoeXNtYXAgPSBOVUxMOwotICAgIHVuc2lnbmVkIGludCBsZW4s IG51bSwgaTsKLSAgICBjaGFyIHBhdGhbODBdLCAqdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgKipl bnRyaWVzID0gTlVMTDsKLQotICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwKLSAgICAg ICAgICAgICIvbG9jYWwvZG9tYWluLzAvZGV2aWNlLW1vZGVsLyVkL3BoeXNtYXAiLCB4ZW5fZG9t aWQpOwotICAgIGVudHJpZXMgPSB4c19kaXJlY3Rvcnkoc3RhdGUtPnhlbnN0b3JlLCAwLCBwYXRo LCAmbnVtKTsKLSAgICBpZiAoZW50cmllcyA9PSBOVUxMKQotICAgICAgICByZXR1cm47Ci0KLSAg ICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKLSAgICAgICAgcGh5c21hcCA9IGdfbWFsbG9j KHNpemVvZiAoWGVuUGh5c21hcCkpOwotICAgICAgICBwaHlzbWFwLT5waHlzX29mZnNldCA9IHN0 cnRvdWxsKGVudHJpZXNbaV0sIE5VTEwsIDE2KTsKLSAgICAgICAgc25wcmludGYocGF0aCwgc2l6 ZW9mKHBhdGgpLAotICAgICAgICAgICAgICAgICIvbG9jYWwvZG9tYWluLzAvZGV2aWNlLW1vZGVs LyVkL3BoeXNtYXAvJXMvc3RhcnRfYWRkciIsCi0gICAgICAgICAgICAgICAgeGVuX2RvbWlkLCBl bnRyaWVzW2ldKTsKLSAgICAgICAgdmFsdWUgPSB4c19yZWFkKHN0YXRlLT54ZW5zdG9yZSwgMCwg cGF0aCwgJmxlbik7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBn X2ZyZWUocGh5c21hcCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg ICBwaHlzbWFwLT5zdGFydF9hZGRyID0gc3RydG91bGwodmFsdWUsIE5VTEwsIDE2KTsKLSAgICAg ICAgZnJlZSh2YWx1ZSk7Ci0KLSAgICAgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLAot ICAgICAgICAgICAgICAgICIvbG9jYWwvZG9tYWluLzAvZGV2aWNlLW1vZGVsLyVkL3BoeXNtYXAv JXMvc2l6ZSIsCi0gICAgICAgICAgICAgICAgeGVuX2RvbWlkLCBlbnRyaWVzW2ldKTsKLSAgICAg ICAgdmFsdWUgPSB4c19yZWFkKHN0YXRlLT54ZW5zdG9yZSwgMCwgcGF0aCwgJmxlbik7Ci0gICAg ICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnX2ZyZWUocGh5c21hcCk7Ci0g ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBwaHlzbWFwLT5zaXplID0g c3RydG91bGwodmFsdWUsIE5VTEwsIDE2KTsKLSAgICAgICAgZnJlZSh2YWx1ZSk7Ci0KLSAgICAg ICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLAotICAgICAgICAgICAgICAgICIvbG9jYWwv ZG9tYWluLzAvZGV2aWNlLW1vZGVsLyVkL3BoeXNtYXAvJXMvbmFtZSIsCi0gICAgICAgICAgICAg ICAgeGVuX2RvbWlkLCBlbnRyaWVzW2ldKTsKLSAgICAgICAgcGh5c21hcC0+bmFtZSA9IHhzX3Jl YWQoc3RhdGUtPnhlbnN0b3JlLCAwLCBwYXRoLCAmbGVuKTsKLQotICAgICAgICBRTElTVF9JTlNF UlRfSEVBRCgmc3RhdGUtPnBoeXNtYXAsIHBoeXNtYXAsIGxpc3QpOwotICAgIH0KLSAgICBmcmVl KGVudHJpZXMpOwotfQotCiBzdGF0aWMgdm9pZCB4ZW5fd2FrZXVwX25vdGlmaWVyKE5vdGlmaWVy ICpub3RpZmllciwgdm9pZCAqZGF0YSkKIHsKICAgICB4Y19zZXRfaHZtX3BhcmFtKHhlbl94Yywg eGVuX2RvbWlkLCBIVk1fUEFSQU1fQUNQSV9TX1NUQVRFLCAwKTsKQEAgLTEzMzksNyArMTI3NCw2 IEBAIHZvaWQgeGVuX2h2bV9pbml0KFBDTWFjaGluZVN0YXRlICpwY21zLCBNZW1vcnlSZWdpb24g KipyYW1fbWVtb3J5KQogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgeGVuX2JlX3JlZ2lz dGVyX2NvbW1vbigpOwotICAgIHhlbl9yZWFkX3BoeXNtYXAoc3RhdGUpOwogCiAgICAgLyogRGlz YWJsZSBBQ1BJIGJ1aWxkIGJlY2F1c2UgWGVuIGhhbmRsZXMgaXQgKi8KICAgICBwY21zLT5hY3Bp X2J1aWxkX2VuYWJsZWQgPSBmYWxzZTsKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==