From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v5 10/28] xsplice: Implement payload loading Date: Mon, 4 Apr 2016 15:44:44 -0400 Message-ID: <20160404194444.GA4474@char.us.oracle.com> References: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> <1458849640-22588-11-git-send-email-konrad.wilk@oracle.com> <56FD461602000078000E1C28@prv-mh.provo.novell.com> <20160331212604.GA24340@localhost.localdomain> <56FE591502000078000E1F2D@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1anAR3-0006F5-12 for xen-devel@lists.xenproject.org; Mon, 04 Apr 2016 19:45:17 +0000 Content-Disposition: inline In-Reply-To: <56FE591502000078000E1F2D@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Keir Fraser , andrew.cooper3@citrix.com, mpohlack@amazon.de, ross.lagerwall@citrix.com, Julien Grall , Stefano Stabellini , xen-devel@lists.xenproject.org, Konrad Rzeszutek Wilk , sasha.levin@oracle.com List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBBcHIgMDEsIDIwMTYgYXQgMDM6MTg6NDVBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDMxLjAzLjE2IGF0IDIzOjI2LCA8a29ucmFkQGRhcm5vay5vcmc+IHdyb3Rl Ogo+ID4+ICBBbHNvIC0gaG93IHdlbGwgd2lsbCB0aGlzIE8obl4yKSBsb29rdXAgd29yayBvbmNl IHRoZXJlIGFyZSBlbm91Z2gKPiA+PiBwYXlsb2Fkcz8gSSB0aGluayB0aGlzIGNhbGxzIGZvciB0 aGUgYWx0ZXJuYXRpdmUgdm1hcCgpIGV4dGVuc2lvbiBJJ3ZlCj4gPj4gYmVlbiBzdWdnZXN0aW5n IGVhcmxpZXIuCj4gPiAKPiA+IENvdWxkIHlvdSBlbGFib3JhdGUgb24gdGhlIHZtYXAgZXh0ZW5z aW9uIGEgYml0IHBsZWFzZT8KPiA+IAo+ID4gWW91ciBlYXJsaWVyIGVtYWlsIHNlZW1zIHRvIHNh eTogZHJvcCB0aGUgdm1hcCBBUEkgYW5kIGp1c3QgCj4gPiBhbGxvY2F0ZSB0aGUgdW5kZXJsYXlp bmcgcGFnZXMgeW91cnNlbGYuCj4gCj4gQWN0dWFsbHkgSSBoYWQgYWxzbyBzYWlkIGluIHRoYXQg ZWFybGllciBtYWlsOiAiSWYsIG90b2gsIHlvdSBsZWZ0IHRoYXQKPiBWQSBtYW5hZ2VtZW50IHRv IChhbiBleHRlbmRlZCB2ZXJzaW9uIG9mKSB2bWFwKCksIGJ5IGUuZy4KPiBhbGxvd2luZyB0aGUg Y2FsbGVyIHRvIHJlcXVlc3QgYWxsb2NhdGlvbiBmcm9tIGEgZGlmZmVyZW50IFZBIHJhbmdlCj4g KG11Y2ggbGlrZSBpaXJjIHg4Ni02NCBMaW51eCBoYW5kbGVzIGl0cyBtb2R1bGVzIGFkZHJlc3Mg cmFuZ2UKPiBhbGxvY2F0aW9uKSwgdGhpbmdzIHdvdWxkIGJlIGRpZmZlcmVudC4gQWZ0ZXIgYWxs IHRoZSBWQQo+IG1hbmFnZW1lbnQgaXMgdGhlIGltcG9ydGFudCBwYXJ0IGhlcmUsIHdoaWxlIHRo ZSBiYWNraW5nCj4gbWVtb3J5IGFsbG9jYXRpb24gaXMganVzdCBhIHRyaXZpYWwgYXV4aWxpYXJ5 IG9wZXJhdGlvbi4iCj4gCj4gSS5lLiBlbGFib3JhdGlvbiBoZXJlIHJlYWxseSBqdXN0IGNvbnNp c3RzIG9mIHRoZSByZWZlcnJhbCB0byB0aGUKPiByZXNwZWN0aXZlIExpbnV4IGFwcHJvYWNoLgoK SSBhbSBpbiBuZWVkIGhlcmUgb2YgZ3VpZGFuY2UgSSBhbSBhZnJhaWQuCgpMZXQgbWUgZXhwbGFp biAoZGlkIHRoaXMgaW4gSVJDIGJ1dCB0aGlzIHdpbGwgaGF2ZSBhIGJyb2FkZXIgc2NvcGUpOgoK SW4gTGludXggd2UgaGF2ZSB0aGUgJ3N0cnVjdCB2bV9hcmVhJyB3aGljaCBpbnRlcm5hbGx5IGNv bnRhaW5zIHRoZSBzdGFydAphbmQgZW5kIGFkZHJlc3MgKGFtb25nc3Qgb3RoZXIgdGhpbmdzKS4g VGhlIGNhbGxlcnMgdXN1YWxseSB1c2UgX192bWFsbG9jX25vZGVfcmFuZ2UKdG8gYW4gcHJvdmlk ZSB0aG9zZSBhZGRyZXNzZXMuIEludGVybmFsbHkgdGhlIHZtYWxsb2MgQVBJIGFsbG9jYXRlcyB0 aGUKJ3N0cnVjdCB2bV9hcmVhJyBmcm9tIHRoZSBub3JtYWwgU0xBQiBhbGxvY2F0b3IuIFZtYWxs b2MgQVBJIGFsc28gaGFzIGFuCnZtYXAgYmxvY2sgYXJlYSAoYWxsb2NhdGVkIHdpdGhpbiB2bWFs bG9jIGFyZWEpIHdoaWNoIGlzIGEgcmVkIGFuZCBibGFjayB0cmVlCmZvciBhbGwgdGhlIHVzZXJz IG9mIGl0cyBBUEkuIFdoZW4gdm1fc2l6ZSgpIGlzIGNhbGxlZCB0aGlzIHRyZWUgaXMgc2VhcmNo ZWQKdG8gZmluZCB0aGUgJ3ZtX2FyZWEnIGZvciB0aGUgcHJvdmlkZWQgdmlydHVhbCBhZGRyZXNz LiBUaGVyZSBpcyBhIGxvdApvZiBjb2RlIGluIHRoaXMuIENvcHlpbmcgaXQgYW5kIGphbW1pbmcg ZG9lcyBub3QgbG9vayBlYXN5IHNvIGl0IHdvdWxkIGJlCmJldHRlciB0byB0YWtlIGNvbmNlcHRz IG9mIHRoaXMgYW4gaW1wbGVtZW50IHRoaXMuLiAKCgpPbiBYZW4gd2Ugc2V0dXAgYSBiaXRtYXAg dGhhdCBjb3ZlcnMgdGhlIGZ1bGwgdm1hbGxvYyBhcmVhICgxMjhNQiBvbiBteQo0R0IgYm94LCBi dXQgY2FuIGdvIHVwIHRvIDY0R0IpIC0gdGhlIDEyOE1CIHZtYWxsb2MgYXJlYSByZXF1aXJlcyBh Ym91dAozMksgYml0cy4KCkZvciBldmVyeSBhbGxvY2F0aW9uICB3ZSAid2FzdGUiIGFuIHBhZ2Ug KGFuZCBhIGJpdCkgc28gdGhhdCB0aGVyZSBpcyBhIGdhcC4KVGhpcyBnYXAgaXMgbmVlZGVkIHdo ZW4gdHJ5aW5nIHRvIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgYWxsb2NhdGVkCnJlZ2lv biAtIHdoZW4gc2Nhbm5pbmcgdGhlIGJpdG1hcCB3ZSBjYW4gZWFzaWx5IGZpZ3VyZSBvdXQgdGhl IGNsZWFyZWQKYml0IHdoaWNoIGlzIGFraW4gdG8gYSBmZW5jZXBvc3QuCgoKVG8gbWFrZSBYZW4n cyB2bWFsbG9jIEFQSSBiZSBnZW5lcmljIEkgbmVlZCB0byB3aG9sZXNhbGUgbWFrZSBpdCBhYmxl CnRvIGRlYWwgd2l0aCB2aXJ0dWFsIGFkZHJlc3NlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBpdHMg c3BhY2UgKGFzIGluCm5vdCBpbiBWTUFQX1ZJUlRfU1RBUlQgdG8gdm1fdG9wKS4gQXQgdGhlIHN0 YXJ0IEkgdGhlIGlucHV0IHRvIHZtX3NpemUoKQpuZWVkcyB0byBnZXQgdGhlIHNpemUgb2YgdGhl IHZpcnR1YWwgYWRkcmVzcyAoZWl0aGVyIHRoZSBvbmVzIGZyb20KdGhlIHZtYWxsb2MgYXJlYXMg b3IgdGhlIG9uZXMgcHJvdmlkZWQgZWFybGllciBieSB2bWFsbG9jX2NiKS4KCk9uZSBlYXN5IG1l Y2hhbmlzbSBpcyB0byBlbWJlZGRlZCBhbiBhcnJheSBvZiBzaW1wbGlmaWVkICdzdHJ1Y3Qgdm1f YXJlYScgc3RydWN0dXJlOgoKc3RydWN0IHZtX2FyZWEgewoJdW5zaWduZWQgbG9uZyB2YTsKfQoK Zm9yIGV2ZXJ5IHNsb3QgaW4gdGhlIFZNQVBfVklSVF9TVEFSVCBhcmVhICh0aGF0IGlzIGhhdmUg MzJLIGVudHJpZXMpLgpUaGUgdm1fc2l6ZSBhbmQgYWxsIHRoZSByZXN0IGNhbiBjaGVjayBmb3Ig dGhpcyBhcnJheSBpZiB0aGUgdmlydHVhbAphZGRyZXNzIHByb3ZpZGVkIGlzIG5vdCB3aXRoaW4g dGhlIHZtYWxsb2MgdmlydHVhbCBhZGRyZXNzZXMuIElmIHRoZXJlCmlzIGEgbWF0Y2ggd2UganVz dCBuZWVkIHRvIGNvbnN1bHQgdGhlIHZtX2JpdG1hcCBhdCB0aGUgc2FtZSBpbmRleCBhbmQKZmln dXJlIG91dCB3aGVyZSB0aGUgZW1wdHkgYml0IGlzIHNldC4KVGhlIGRvd25zaWRlIGlzIHRoYXQg SSd2ZSB0byB3YWxrIHRoZSBmdWxsIGFycmF5ICgzMksgZW50cmllcykuCgpCdXQgd2hlbiB5b3Ug dGhpbmsgYWJvdXQgaXQgLSBtb3N0IG9mIHRoZSB0aW1lIHdlIHVzZSBub3JtYWwgdm1hbGxvYyBh ZGRyZXNzZXMKYW5kIG9ubHkgaW4gZXhjZXB0aW9uYWwgY2FzZXMgZG8gd2UgbmVlZCB0aGUgYWx0 ZXJuYXRlIG9uZXMuIEFuZCB0aGUgb25seSByZWFzb24KdG8ga2VlcCB0cmFjayBvZiBpdCBpcyB0 byBrbm93IHRoZSBzaXplLgoKVGhlIGVhc2llciB3YXkgd291bGQgYmUgdG8gdHJhY2sgdGhlbSB2 aWEgYSBsaW5rZWQgbGlzdDoKCnN0cnVjdCB2bV9hcmVhIHsKCXN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKCXVuc2lnbmVkIGxvbmcgdmE7CglzaXplX3QgbnI7Cn0KCkFuZCB2bV9zaXplLCB2bV9pbmRl eCwgZXRjIHdvdWxkIGNvbnN1bHQgdGhpcyBsaXN0IGZvciB0aGUgdmlydHVhbCBhZGRyZXNzIGFu ZApjb3VsZCBnZXQgdGhlIHByb3BlciBpbmZvcm1hdGlvbi4gKFNlZSBpbmxpbmUgcGF0Y2gpCgpC dXQgaWYgd2UgYXJlIGRvaW5nIHRoYXQgdGhpcywgdGhlbiB3aHkgZXZlbiBwdXQgaXQgaW4gdGhl IHZtYWxsb2MgQVBJPyBXaHkgbm90CnRyYWNrIGFsbCBvZiB0aGlzIHdpdGggdGhlIHVzZXIgb2Yg dGhpcz8gKGxpa2UgaXQgd2FzIGRvbmUgaW4gdjQgb2YgdGhpcyBwYXRjaCBzZXJpZXM/KQoKUGxl YXNlIGFkdmlzZS4KCkZyb20gYTBlMzAxNWJiZjRkOTlmYzhlNTQyODYzNGRjM2IyODFjZjhlZWRi NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgpEYXRlOiBNb24sIDE0IE1hciAyMDE2IDEyOjAyOjA1IC0w NDAwClN1YmplY3Q6IFtQQVRDSF0gdm1hcDogQWRkIHZtYWxsb2NfY2IKCkZvciB0aG9zZSB1c2Vy cyB3aG8gd2FudCB0byBzdXBwbHkgdGhlaXIgb3duIHZtYXAgY2FsbGJhY2suClRoaXMgY2FsbGJh Y2sgd2lsbCBiZSBjYWxsZWQgX2FmdGVyXyB0aGUgcGFnZXMgaGF2ZSBiZWVuCmFsbG9jYXRlZCBh bmQgaW5zdGVhZCBvZiB1c2luZyB0aGUgdm1hcCBpbnRlcm5hbCBBUEksIGl0IHdpbGwKY2FsbCB0 aGUgY2FsbGJhY2sgd2hpY2ggd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZQp2 aXJ0dWFsIGFkZHJlc3Nlcy4KClRoZSB2bWFwIEFQSSBhbHNvIGtlZXBzIHRyYWNrIG9mIHRoaXMg dmlydHVhbCBhZGRyZXNzIChhbG9uZwp3aXRoIHRoZSBzaXplKSBzbyB0aGF0IHZ1bm1hcCwgdm1f c2l6ZSwgYW5kIHZtX2ZyZWUgY2FuIG9wZXJhdGUKb24gdGhlc2UgdmlydHVhbCBhZGRyZXNzZXMu CgpUaGlzIGFsbG93cyB1c2VycyAoc3VjaCBhcyB4U3BsaWNlKSB0byBwcm92aWRlIHRoZWlyIG93 bgptZWNoYW5pc20gdG8gY2hhbmdlIHRoZSB0aGUgcGFnZSBmbGFncywgYW5kIGFsc28gdXNlIHZp cnR1YWwKYWRkcmVzc2VzIGNsb3NlciB0byB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3Nl cyAoYXQgbGVhc3QKb24geDg2KS4KClRoZSB1c2VycyAoc3VjaCBhcyBwYXRjaCB0aXRsZWQgInhz cGxpY2U6IEltcGxlbWVudCBwYXlsb2FkCmxvYWRpbmciKSBjYW4gd3JhcCB0aGUgY2FsbHMgdG8g X192bWFwIGZvciB0aGlzLgoKTm90ZSB0aGF0IHRoZSBkaXNwbGFjZW1lbnQgb2YgdGhlIGh5cGVy dmlzb3IgdmlydHVhbCBhZGRyZXNzZXMgdG8gdGhlCnZtYWxsb2MgKG9uIHg4NikgaXMgbW9yZSB0 aGFuIDMyLWJpdHMgLSB3aGljaCBtZWFucyB0aGF0IEVMRiByZWxvY2F0aW9ucwood2hpY2ggYXJl IGxpbWl0ZWQgdG8gMzItYml0cykgLSB3b24ndCB3b3JrICh3ZSB0cnVuY2F0ZSB0aGUgMzQgYW5k IDMzdGgKYml0KS4gSGVuY2Ugd2UgY2Fubm90IHVzZSBvbiB2bWFsbG9jIHZpcnR1YWwgYWRkcmVz c2VzIGJ1dCBtdXN0CnN1cHBseSBvdXIgb3duIHJhbmdlcy4KClNpZ25lZC1vZmYtYnk6IEtvbnJh ZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KCi0tLQpDYzogSWFuIEph Y2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogVGltIERlZWdh biA8dGltQHhlbi5vcmc+Cgp2NDogTmV3IHBhdGNoLgp2NTogVXBkYXRlIHBlciBKYW4ncyBjb21t ZW50cy4KdjY6IERyb3AgdGhlIHN0cmF5IHBhcmVudGhlc2VzIG9uIHR5cGVkZWZzLgogICAgRGl0 Y2ggdGhlIHZ1bm1hcCBjYWxsYmFjay4gU3Rhc2ggYXdheSB0aGUgdmlydHVhbCBhZGRyZXNzZXMg aW4gbGlzdHMuCi0tLQotLS0KIHhlbi9jb21tb24vdm1hcC5jICAgICAgfCA4MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogeGVuL2luY2x1ZGUveGVu L3ZtYXAuaCB8ICA1ICsrKysKIDIgZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtYXAuYyBiL3hlbi9jb21tb24v dm1hcC5jCmluZGV4IDEzNGVkYTAuLjAyODllMjIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdm1h cC5jCisrKyBiL3hlbi9jb21tb24vdm1hcC5jCkBAIC0xOSw2ICsxOSwxNiBAQCBzdGF0aWMgdW5z aWduZWQgaW50IF9fcmVhZF9tb3N0bHkgdm1fZW5kOwogLyogbG93ZXN0IGtub3duIGNsZWFyIGJp dCBpbiB0aGUgYml0bWFwICovCiBzdGF0aWMgdW5zaWduZWQgaW50IHZtX2xvdzsKIAorc3RhdGlj IExJU1RfSEVBRCh2bV9hcmVhX2xpc3QpOworCitzdHJ1Y3Qgdm1fYXJlYSB7CisgICAgc3RydWN0 IGxpc3RfaGVhZCBsaXN0OworICAgIHZvaWQgKnZhOworICAgIHVuc2lnbmVkIGludCBwYWdlczsK K307CisKK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0sodm1fYXJlYV9sb2NrKTsKKwogdm9pZCBfX2lu aXQgdm1faW5pdCh2b2lkKQogewogICAgIHVuc2lnbmVkIGludCBpLCBucjsKQEAgLTE0NiwxMiAr MTU2LDM0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgdm1faW5kZXgoY29uc3Qgdm9pZCAqdmEpCiAg ICAgICAgICAgIHRlc3RfYml0KGlkeCwgdm1fYml0bWFwKSA/IGlkeCA6IDA7CiB9CiAKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgdm1fYXJlYSAqdm1fZmluZChjb25zdCB2b2lkICp2YSkKK3sKKyAgICBj b25zdCBzdHJ1Y3Qgdm1fYXJlYSAqZm91bmQgPSBOVUxMLCAqdm07CisKKyAgICBzcGluX2xvY2so JnZtX2FyZWFfbG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggdm0sICZ2bV9hcmVhX2xp c3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAgaWYgKCB2bS0+dmEgIT0gdmEgKQorICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIGZvdW5kID0gdm07CisgICAgICAgIGJyZWFrOworICAgIH0K KyAgICBzcGluX3VubG9jaygmdm1fYXJlYV9sb2NrKTsKKworICAgIHJldHVybiBmb3VuZDsKK30K Kwogc3RhdGljIHVuc2lnbmVkIGludCB2bV9zaXplKGNvbnN0IHZvaWQgKnZhKQogewogICAgIHVu c2lnbmVkIGludCBzdGFydCA9IHZtX2luZGV4KHZhKSwgZW5kOwogCiAgICAgaWYgKCAhc3RhcnQg KQorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHZtX2FyZWEgKnZtID0gdm1fZmluZCh2YSk7 CisgICAgICAgIGlmICggdm0gKQorICAgICAgICAgICAgcmV0dXJuIHZtLT5wYWdlczsKICAgICAg ICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgZW5kID0gZmluZF9uZXh0X3plcm9fYml0KHZtX2Jp dG1hcCwgdm1fdG9wLCBzdGFydCArIDEpOwogCkBAIC0xNjQsNiArMTk2LDE2IEBAIHZvaWQgdm1f ZnJlZShjb25zdCB2b2lkICp2YSkKIAogICAgIGlmICggIWJpdCApCiAgICAgeworICAgICAgICBz dHJ1Y3Qgdm1fYXJlYSAqdm0gPSAoc3RydWN0IHZtX2FyZWEgKil2bV9maW5kKHZhKTsKKworICAg ICAgICBpZiAoIHZtICkKKyAgICAgICAgeworICAgICAgICAgICAgc3Bpbl9sb2NrKCZ2bV9hcmVh X2xvY2spOworICAgICAgICAgICAgbGlzdF9kZWwoJnZtLT5saXN0KTsKKyAgICAgICAgICAgIHNw aW5fdW5sb2NrKCZ2bV9hcmVhX2xvY2spOworICAgICAgICAgICAgeGZyZWUodm0pOworICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIFdBUk5fT04odmEgIT0gTlVMTCk7CiAg ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTYsMTIgKzI1OCwxMyBAQCB2b2lkIHZ1bm1hcChj b25zdCB2b2lkICp2YSkKICAgICB2bV9mcmVlKHZhKTsKIH0KIAotdm9pZCAqdm1hbGxvYyhzaXpl X3Qgc2l6ZSkKK3ZvaWQgKnZtYWxsb2NfY2Ioc2l6ZV90IHNpemUsIHZtYXBfY2JfdCAqdm1hcF9j YiwgbWZuX3QgKiptZm5fYXJyYXkpCiB7CiAgICAgbWZuX3QgKm1mbjsKICAgICBzaXplX3QgcGFn ZXMsIGk7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAgICAgdm9pZCAqdmE7CisgICAgc3Ry dWN0IHZtX2FyZWEgKnZtID0gTlVMTDsKIAogICAgIEFTU0VSVChzaXplKTsKIApAQCAtMjMwLDYg KzI3MywxNyBAQCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgIGlmICggbWZuID09IE5V TEwgKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmICggdm1hcF9jYiApCisgICAgewor ICAgICAgICB2bSA9IHhtYWxsb2Moc3RydWN0IHZtX2FyZWEpOworCisgICAgICAgIGlmICggIXZt ICkKKyAgICAgICAgeworICAgICAgICAgICAgeGZyZWUobWZuKTsKKyAgICAgICAgICAgIHJldHVy biBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgZm9yICggaSA9IDA7IGkgPCBwYWdlczsg aSsrICkKICAgICB7CiAgICAgICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdlKE5VTEwsIDApOwpA QCAtMjM4LDIwICsyOTIsNDAgQEAgdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkKICAgICAgICAg bWZuW2ldID0gX21mbihwYWdlX3RvX21mbihwZykpOwogICAgIH0KIAotICAgIHZhID0gdm1hcCht Zm4sIHBhZ2VzKTsKKyAgICB2YSA9IHZtYXBfY2IgPyB2bWFwX2NiKG1mbiwgcGFnZXMpIDogdm1h cChtZm4sIHBhZ2VzKTsKICAgICBpZiAoIHZhID09IE5VTEwgKQogICAgICAgICBnb3RvIGVycm9y OwogCi0gICAgeGZyZWUobWZuKTsKKyAgICBpZiAoIHZtICkKKyAgICB7CisgICAgICAgIHZtLT52 YSA9IHZhOworICAgICAgICB2bS0+cGFnZXMgPSBwYWdlczsKKworICAgICAgICBzcGluX2xvY2so JnZtX2FyZWFfbG9jayk7CisgICAgICAgIGxpc3RfYWRkKCZ2bS0+bGlzdCwgJnZtX2FyZWFfbGlz dCk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZ2bV9hcmVhX2xvY2spOworICAgIH0KKyAgICBpZiAo IG1mbl9hcnJheSApCisgICAgICAgICptZm5fYXJyYXkgPSBtZm47CisgICAgZWxzZQorICAgICAg ICB4ZnJlZShtZm4pOworCiAgICAgcmV0dXJuIHZhOwogCiAgZXJyb3I6CiAgICAgd2hpbGUgKCBp LS0gKQogICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm5baV0p KSk7CiAgICAgeGZyZWUobWZuKTsKKyAgICBpZiAoIHZtICkKKyAgICAgICAgeGZyZWUodm0pOwog ICAgIHJldHVybiBOVUxMOwogfQogCit2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQoreworICAg IHJldHVybiB2bWFsbG9jX2NiKHNpemUsIE5VTEwsIE5VTEwpOworfQorCiB2b2lkICp2emFsbG9j KHNpemVfdCBzaXplKQogewogICAgIHZvaWQgKnAgPSB2bWFsbG9jKHNpemUpOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUveGVuL3ZtYXAuaCBiL3hlbi9pbmNsdWRlL3hlbi92bWFwLmgKaW5kZXgg NTY3MWFjOC4uNmNkMDcwNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3ZtYXAuaAorKysg Yi94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oCkBAIC0xMiw2ICsxMiwxMSBAQCB2b2lkICpfX3ZtYXAo Y29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IGdyYW51bGFyaXR5LAogdm9pZCAqdm1hcChj b25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgbnIpOwogdm9pZCB2dW5tYXAoY29uc3Qgdm9p ZCAqKTsKIHZvaWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpOworCisvKiBDYWxsYmFjayBmb3Igdm1h bGxvY19jYiB0byB1c2Ugd2hlbiB2bWFwLWluZy4gKi8KK3R5cGVkZWYgdm9pZCAqdm1hcF9jYl90 KGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBwYWdlcyk7Cit2b2lkICp2bWFsbG9jX2Ni KHNpemVfdCBzaXplLCB2bWFwX2NiX3QgKnZtYXBfY2IsIG1mbl90ICoqKTsKKwogdm9pZCAqdnph bGxvYyhzaXplX3Qgc2l6ZSk7CiB2b2lkIHZmcmVlKHZvaWQgKnZhKTsKIAotLSAKMi41LjAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=