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 21:57:28 -0400 Message-ID: <20160405015728.GA8449@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> <20160404194444.GA4474@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1anGFh-000885-Lz for xen-devel@lists.xenproject.org; Tue, 05 Apr 2016 01:57:57 +0000 Content-Disposition: inline In-Reply-To: <20160404194444.GA4474@char.us.oracle.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 T24gTW9uLCBBcHIgMDQsIDIwMTYgYXQgMDM6NDQ6NDRQTSAtMDQwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIEZyaSwgQXByIDAxLCAyMDE2IGF0IDAzOjE4OjQ1QU0gLTA2MDAs IEphbiBCZXVsaWNoIHdyb3RlOgo+ID4gPj4+IE9uIDMxLjAzLjE2IGF0IDIzOjI2LCA8a29ucmFk QGRhcm5vay5vcmc+IHdyb3RlOgo+ID4gPj4gIEFsc28gLSBob3cgd2VsbCB3aWxsIHRoaXMgTyhu XjIpIGxvb2t1cCB3b3JrIG9uY2UgdGhlcmUgYXJlIGVub3VnaAo+ID4gPj4gcGF5bG9hZHM/IEkg dGhpbmsgdGhpcyBjYWxscyBmb3IgdGhlIGFsdGVybmF0aXZlIHZtYXAoKSBleHRlbnNpb24gSSd2 ZQo+ID4gPj4gYmVlbiBzdWdnZXN0aW5nIGVhcmxpZXIuCj4gPiA+IAo+ID4gPiBDb3VsZCB5b3Ug ZWxhYm9yYXRlIG9uIHRoZSB2bWFwIGV4dGVuc2lvbiBhIGJpdCBwbGVhc2U/Cj4gPiA+IAo+ID4g PiBZb3VyIGVhcmxpZXIgZW1haWwgc2VlbXMgdG8gc2F5OiBkcm9wIHRoZSB2bWFwIEFQSSBhbmQg anVzdCAKPiA+ID4gYWxsb2NhdGUgdGhlIHVuZGVybGF5aW5nIHBhZ2VzIHlvdXJzZWxmLgo+ID4g Cj4gPiBBY3R1YWxseSBJIGhhZCBhbHNvIHNhaWQgaW4gdGhhdCBlYXJsaWVyIG1haWw6ICJJZiwg b3RvaCwgeW91IGxlZnQgdGhhdAo+ID4gVkEgbWFuYWdlbWVudCB0byAoYW4gZXh0ZW5kZWQgdmVy c2lvbiBvZikgdm1hcCgpLCBieSBlLmcuCj4gPiBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIHJlcXVl c3QgYWxsb2NhdGlvbiBmcm9tIGEgZGlmZmVyZW50IFZBIHJhbmdlCj4gPiAobXVjaCBsaWtlIGlp cmMgeDg2LTY0IExpbnV4IGhhbmRsZXMgaXRzIG1vZHVsZXMgYWRkcmVzcyByYW5nZQo+ID4gYWxs b2NhdGlvbiksIHRoaW5ncyB3b3VsZCBiZSBkaWZmZXJlbnQuIEFmdGVyIGFsbCB0aGUgVkEKPiA+ IG1hbmFnZW1lbnQgaXMgdGhlIGltcG9ydGFudCBwYXJ0IGhlcmUsIHdoaWxlIHRoZSBiYWNraW5n Cj4gPiBtZW1vcnkgYWxsb2NhdGlvbiBpcyBqdXN0IGEgdHJpdmlhbCBhdXhpbGlhcnkgb3BlcmF0 aW9uLiIKPiA+IAo+ID4gSS5lLiBlbGFib3JhdGlvbiBoZXJlIHJlYWxseSBqdXN0IGNvbnNpc3Rz IG9mIHRoZSByZWZlcnJhbCB0byB0aGUKPiA+IHJlc3BlY3RpdmUgTGludXggYXBwcm9hY2guCj4g Cj4gSSBhbSBpbiBuZWVkIGhlcmUgb2YgZ3VpZGFuY2UgSSBhbSBhZnJhaWQuCj4gCj4gTGV0IG1l IGV4cGxhaW4gKGRpZCB0aGlzIGluIElSQyBidXQgdGhpcyB3aWxsIGhhdmUgYSBicm9hZGVyIHNj b3BlKToKPiAKPiBJbiBMaW51eCB3ZSBoYXZlIHRoZSAnc3RydWN0IHZtX2FyZWEnIHdoaWNoIGlu dGVybmFsbHkgY29udGFpbnMgdGhlIHN0YXJ0Cj4gYW5kIGVuZCBhZGRyZXNzIChhbW9uZ3N0IG90 aGVyIHRoaW5ncykuIFRoZSBjYWxsZXJzIHVzdWFsbHkgdXNlIF9fdm1hbGxvY19ub2RlX3Jhbmdl Cj4gdG8gYW4gcHJvdmlkZSB0aG9zZSBhZGRyZXNzZXMuIEludGVybmFsbHkgdGhlIHZtYWxsb2Mg QVBJIGFsbG9jYXRlcyB0aGUKPiAnc3RydWN0IHZtX2FyZWEnIGZyb20gdGhlIG5vcm1hbCBTTEFC IGFsbG9jYXRvci4gVm1hbGxvYyBBUEkgYWxzbyBoYXMgYW4KPiB2bWFwIGJsb2NrIGFyZWEgKGFs bG9jYXRlZCB3aXRoaW4gdm1hbGxvYyBhcmVhKSB3aGljaCBpcyBhIHJlZCBhbmQgYmxhY2sgdHJl ZQo+IGZvciBhbGwgdGhlIHVzZXJzIG9mIGl0cyBBUEkuIFdoZW4gdm1fc2l6ZSgpIGlzIGNhbGxl ZCB0aGlzIHRyZWUgaXMgc2VhcmNoZWQKPiB0byBmaW5kIHRoZSAndm1fYXJlYScgZm9yIHRoZSBw cm92aWRlZCB2aXJ0dWFsIGFkZHJlc3MuIFRoZXJlIGlzIGEgbG90Cj4gb2YgY29kZSBpbiB0aGlz LiBDb3B5aW5nIGl0IGFuZCBqYW1taW5nIGRvZXMgbm90IGxvb2sgZWFzeSBzbyBpdCB3b3VsZCBi ZQo+IGJldHRlciB0byB0YWtlIGNvbmNlcHRzIG9mIHRoaXMgYW4gaW1wbGVtZW50IHRoaXMuLiAK PiAKPiAKPiBPbiBYZW4gd2Ugc2V0dXAgYSBiaXRtYXAgdGhhdCBjb3ZlcnMgdGhlIGZ1bGwgdm1h bGxvYyBhcmVhICgxMjhNQiBvbiBteQo+IDRHQiBib3gsIGJ1dCBjYW4gZ28gdXAgdG8gNjRHQikg LSB0aGUgMTI4TUIgdm1hbGxvYyBhcmVhIHJlcXVpcmVzIGFib3V0Cj4gMzJLIGJpdHMuCj4gCj4g Rm9yIGV2ZXJ5IGFsbG9jYXRpb24gIHdlICJ3YXN0ZSIgYW4gcGFnZSAoYW5kIGEgYml0KSBzbyB0 aGF0IHRoZXJlIGlzIGEgZ2FwLgo+IFRoaXMgZ2FwIGlzIG5lZWRlZCB3aGVuIHRyeWluZyB0byB0 byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRlZAo+IHJlZ2lvbiAtIHdoZW4gc2Nh bm5pbmcgdGhlIGJpdG1hcCB3ZSBjYW4gZWFzaWx5IGZpZ3VyZSBvdXQgdGhlIGNsZWFyZWQKPiBi aXQgd2hpY2ggaXMgYWtpbiB0byBhIGZlbmNlcG9zdC4KPiAKPiAKPiBUbyBtYWtlIFhlbidzIHZt YWxsb2MgQVBJIGJlIGdlbmVyaWMgSSBuZWVkIHRvIHdob2xlc2FsZSBtYWtlIGl0IGFibGUKPiB0 byBkZWFsIHdpdGggdmlydHVhbCBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgaXRzIHNw YWNlIChhcyBpbgo+IG5vdCBpbiBWTUFQX1ZJUlRfU1RBUlQgdG8gdm1fdG9wKS4gQXQgdGhlIHN0 YXJ0IEkgdGhlIGlucHV0IHRvIHZtX3NpemUoKQo+IG5lZWRzIHRvIGdldCB0aGUgc2l6ZSBvZiB0 aGUgdmlydHVhbCBhZGRyZXNzIChlaXRoZXIgdGhlIG9uZXMgZnJvbQo+IHRoZSB2bWFsbG9jIGFy ZWFzIG9yIHRoZSBvbmVzIHByb3ZpZGVkIGVhcmxpZXIgYnkgdm1hbGxvY19jYikuCj4gCj4gT25l IGVhc3kgbWVjaGFuaXNtIGlzIHRvIGVtYmVkZGVkIGFuIGFycmF5IG9mIHNpbXBsaWZpZWQgJ3N0 cnVjdCB2bV9hcmVhJyBzdHJ1Y3R1cmU6Cj4gCj4gc3RydWN0IHZtX2FyZWEgewo+IAl1bnNpZ25l ZCBsb25nIHZhOwo+IH0KPiAKPiBmb3IgZXZlcnkgc2xvdCBpbiB0aGUgVk1BUF9WSVJUX1NUQVJU IGFyZWEgKHRoYXQgaXMgaGF2ZSAzMksgZW50cmllcykuCj4gVGhlIHZtX3NpemUgYW5kIGFsbCB0 aGUgcmVzdCBjYW4gY2hlY2sgZm9yIHRoaXMgYXJyYXkgaWYgdGhlIHZpcnR1YWwKPiBhZGRyZXNz IHByb3ZpZGVkIGlzIG5vdCB3aXRoaW4gdGhlIHZtYWxsb2MgdmlydHVhbCBhZGRyZXNzZXMuIElm IHRoZXJlCj4gaXMgYSBtYXRjaCB3ZSBqdXN0IG5lZWQgdG8gY29uc3VsdCB0aGUgdm1fYml0bWFw IGF0IHRoZSBzYW1lIGluZGV4IGFuZAo+IGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGVtcHR5IGJpdCBp cyBzZXQuCj4gVGhlIGRvd25zaWRlIGlzIHRoYXQgSSd2ZSB0byB3YWxrIHRoZSBmdWxsIGFycmF5 ICgzMksgZW50cmllcykuCj4gCj4gQnV0IHdoZW4geW91IHRoaW5rIGFib3V0IGl0IC0gbW9zdCBv ZiB0aGUgdGltZSB3ZSB1c2Ugbm9ybWFsIHZtYWxsb2MgYWRkcmVzc2VzCj4gYW5kIG9ubHkgaW4g ZXhjZXB0aW9uYWwgY2FzZXMgZG8gd2UgbmVlZCB0aGUgYWx0ZXJuYXRlIG9uZXMuIEFuZCB0aGUg b25seSByZWFzb24KPiB0byBrZWVwIHRyYWNrIG9mIGl0IGlzIHRvIGtub3cgdGhlIHNpemUuCj4g Cj4gVGhlIGVhc2llciB3YXkgd291bGQgYmUgdG8gdHJhY2sgdGhlbSB2aWEgYSBsaW5rZWQgbGlz dDoKPiAKPiBzdHJ1Y3Qgdm1fYXJlYSB7Cj4gCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiAJdW5z aWduZWQgbG9uZyB2YTsKPiAJc2l6ZV90IG5yOwo+IH0KPiAKPiBBbmQgdm1fc2l6ZSwgdm1faW5k ZXgsIGV0YyB3b3VsZCBjb25zdWx0IHRoaXMgbGlzdCBmb3IgdGhlIHZpcnR1YWwgYWRkcmVzcyBh bmQKPiBjb3VsZCBnZXQgdGhlIHByb3BlciBpbmZvcm1hdGlvbi4gKFNlZSBpbmxpbmUgcGF0Y2gp Cj4gCj4gQnV0IGlmIHdlIGFyZSBkb2luZyB0aGF0IHRoaXMsIHRoZW4gd2h5IGV2ZW4gcHV0IGl0 IGluIHRoZSB2bWFsbG9jIEFQST8gV2h5IG5vdAo+IHRyYWNrIGFsbCBvZiB0aGlzIHdpdGggdGhl IHVzZXIgb2YgdGhpcz8gKGxpa2UgaXQgd2FzIGRvbmUgaW4gdjQgb2YgdGhpcyBwYXRjaCBzZXJp ZXM/KQo+IAo+IFBsZWFzZSBhZHZpc2UuCgpJIHJlLXJlYWQgeW91ciBwcmV2aW91cyBlbWFpbCBh bmQgSSB0aGluayB5b3Ugd2VyZSBsZWFuaW5nCnRvd2FyZHMgbm90IGV2ZW4gaGF2aW5nIGEgY2Fs bGJhY2sgYnV0IHJhdGhlciBzdXBwbHlpbmcKdGhlIHZpcnR1YWwgYWRkcmVzcyB0byB0aGUgdm1h bGxvYyBBUElzIGFuZCBpdCB0cmFja2luZwppdCBhZnRlcndhcmRzLiBMaWtlIHRoaXM6CgpGcm9t IDczOGVkMjQ3YmYyMTRhMDYxYzY4MjJhZDE4M2MzNjVhNGY1NzMxYjkgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xl LmNvbT4KRGF0ZTogTW9uLCAxNCBNYXIgMjAxNiAxMjowMjowNSAtMDQwMApTdWJqZWN0OiBbUEFU Q0hdIHZtYXA6IEFkZCB2bWFsbG9jX3JhbmdlCgpGb3IgdGhvc2UgdXNlcnMgd2hvIHdhbnQgdG8g c3VwcGx5IHRoZWlyIG93biB2aXJ0dWFsCmFkZHJlc3MgZm9yIHdoaWNoIHRvIGFsbG9jYXRlIHRo ZSB1bmRlcmxheWluZyBwYWdlcy4KClRoZSB2bWFwIEFQSSBhbHNvIGtlZXBzIHRyYWNrIG9mIHRo aXMgdmlydHVhbCBhZGRyZXNzIChhbG9uZwp3aXRoIHRoZSBzaXplKSBzbyB0aGF0IHZ1bm1hcCwg dm1fc2l6ZSwgYW5kIHZtX2ZyZWUgY2FuIG9wZXJhdGUKb24gdGhlc2UgdmlydHVhbCBhZGRyZXNz ZXMuCgpUaGlzIGFsbG93cyB1c2VycyAoc3VjaCBhcyB4U3BsaWNlKSB0byBwcm92aWRlIHRoZWly IG93bgptZWNoYW5pc20gdG8gY2hhbmdlIHRoZSB0aGUgcGFnZSBmbGFncywgYW5kIGFsc28gdXNl IHZpcnR1YWwKYWRkcmVzc2VzIGNsb3NlciB0byB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJl c3NlcyAoYXQgbGVhc3QKb24geDg2KSB3aGlsZSBub3QgaGF2aW5nIHRvIGRlYWwgd2l0aCB0aGUg YWxsb2NhdGlvbiBvZgpwYWdlcy4KCkZvciBleGFtcGxlIG9mIHVzZXJzLCBzZWUgcGF0Y2ggdGl0 bGVkICJ4c3BsaWNlOiBJbXBsZW1lbnQgcGF5bG9hZApsb2FkaW5nIi4KCk5vdGUgdGhhdCB0aGUg ZGlzcGxhY2VtZW50IG9mIHRoZSBoeXBlcnZpc29yIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHRoZQp2 bWFsbG9jIChvbiB4ODYpIGlzIG1vcmUgdGhhbiAzMi1iaXRzIC0gd2hpY2ggbWVhbnMgdGhhdCBF TEYgcmVsb2NhdGlvbnMKKHdoaWNoIGFyZSBsaW1pdGVkIHRvIDMyLWJpdHMpIC0gd29uJ3Qgd29y ayAod2UgdHJ1bmNhdGUgdGhlIDM0IGFuZCAzM3RoCmJpdCkuIEhlbmNlIHdlIGNhbm5vdCB1c2Ug b24gdm1hbGxvYyB2aXJ0dWFsIGFkZHJlc3NlcyBidXQgbXVzdApzdXBwbHkgb3VyIG93biByYW5n ZXMuCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+CgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29t PgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS2VpciBGcmFzZXIgPGtl aXJAeGVuLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgoKdjQ6IE5ldyBwYXRjaC4K djU6IFVwZGF0ZSBwZXIgSmFuJ3MgY29tbWVudHMuCnY2OiBEcm9wIHRoZSBzdHJheSBwYXJlbnRo ZXNlcyBvbiB0eXBlZGVmcy4KICAgIERpdGNoIHRoZSB2dW5tYXAgY2FsbGJhY2suIFN0YXNoIGF3 YXkgdGhlIHZpcnR1YWwgYWRkcmVzc2VzIGluIGxpc3RzLgogICAgRGl0Y2ggdGhlIHZtYXAgY2Fs bGJhY2suIEp1c3QgcHJvdmlkZSB2aXJ0dWFsIGFkZHJlc3MuCi0tLQotLS0KIHhlbi9jb21tb24v dm1hcC5jICAgICAgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL3ZtYXAuaCB8ICAxMCArKysrKwogMiBmaWxlcyBj aGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdm1hcC5j IGIveGVuL2NvbW1vbi92bWFwLmMKaW5kZXggMTM0ZWRhMC4uYjYzODg2YiAxMDA2NDQKLS0tIGEv eGVuL2NvbW1vbi92bWFwLmMKKysrIGIveGVuL2NvbW1vbi92bWFwLmMKQEAgLTE5LDYgKzE5LDEw IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSB2bV9lbmQ7CiAvKiBsb3dlc3Qg a25vd24gY2xlYXIgYml0IGluIHRoZSBiaXRtYXAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgdm1f bG93OwogCitzdGF0aWMgTElTVF9IRUFEKHZtX2FyZWFfbGlzdCk7CisKK3N0YXRpYyBERUZJTkVf U1BJTkxPQ0sodm1fYXJlYV9sb2NrKTsKKwogdm9pZCBfX2luaXQgdm1faW5pdCh2b2lkKQogewog ICAgIHVuc2lnbmVkIGludCBpLCBucjsKQEAgLTE0NiwxMiArMTUwLDM0IEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgdm1faW5kZXgoY29uc3Qgdm9pZCAqdmEpCiAgICAgICAgICAgIHRlc3RfYml0KGlk eCwgdm1fYml0bWFwKSA/IGlkeCA6IDA7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fYXJl YSAqdm1fZmluZChjb25zdCB2b2lkICp2YSkKK3sKKyAgICBjb25zdCBzdHJ1Y3Qgdm1fYXJlYSAq Zm91bmQgPSBOVUxMLCAqdm07CisKKyAgICBzcGluX2xvY2soJnZtX2FyZWFfbG9jayk7CisgICAg bGlzdF9mb3JfZWFjaF9lbnRyeSggdm0sICZ2bV9hcmVhX2xpc3QsIGxpc3QgKQorICAgIHsKKyAg ICAgICAgaWYgKCB2bS0+dmEgIT0gdmEgKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg IGZvdW5kID0gdm07CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBzcGluX3VubG9jaygmdm1f YXJlYV9sb2NrKTsKKworICAgIHJldHVybiBmb3VuZDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGlu dCB2bV9zaXplKGNvbnN0IHZvaWQgKnZhKQogewogICAgIHVuc2lnbmVkIGludCBzdGFydCA9IHZt X2luZGV4KHZhKSwgZW5kOwogCiAgICAgaWYgKCAhc3RhcnQgKQorICAgIHsKKyAgICAgICAgY29u c3Qgc3RydWN0IHZtX2FyZWEgKnZtID0gdm1fZmluZCh2YSk7CisgICAgICAgIGlmICggdm0gKQor ICAgICAgICAgICAgcmV0dXJuIHZtLT5wYWdlczsKICAgICAgICAgcmV0dXJuIDA7CisgICAgfQog CiAgICAgZW5kID0gZmluZF9uZXh0X3plcm9fYml0KHZtX2JpdG1hcCwgdm1fdG9wLCBzdGFydCAr IDEpOwogCkBAIC0xNjQsNiArMTkwLDE3IEBAIHZvaWQgdm1fZnJlZShjb25zdCB2b2lkICp2YSkK IAogICAgIGlmICggIWJpdCApCiAgICAgeworICAgICAgICBzdHJ1Y3Qgdm1fYXJlYSAqdm0gPSAo c3RydWN0IHZtX2FyZWEgKil2bV9maW5kKHZhKTsKKworICAgICAgICBpZiAoIHZtICkKKyAgICAg ICAgeworICAgICAgICAgICAgc3Bpbl9sb2NrKCZ2bV9hcmVhX2xvY2spOworICAgICAgICAgICAg bGlzdF9kZWwoJnZtLT5saXN0KTsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZ2bV9hcmVhX2xv Y2spOworICAgICAgICAgICAgeGZyZWUodm0tPm1mbik7CisgICAgICAgICAgICB4ZnJlZSh2bSk7 CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgV0FSTl9PTih2YSAhPSBO VUxMKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5OSw2ICsyMzYsMjMgQEAgdm9pZCAq X192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBncmFudWxhcml0eSwKICAgICBy ZXR1cm4gdmE7CiB9CiAKK3N0YXRpYyBib29sX3Qgdm1hcF9yYW5nZShjb25zdCBtZm5fdCAqbWZu LCB1bnNpZ25lZCBsb25nIHZhLCB1bnNpZ25lZCBpbnQgbnIpCit7CisgICAgdW5zaWduZWQgbG9u ZyBjdXIgPSB2YTsKKworICAgIGZvciAoIDsgdmEgJiYgbnItLTsgKyttZm4sIGN1ciArPSBQQUdF X1NJWkUgKQorICAgIHsKKyAgICAgICAgaWYgKCBtYXBfcGFnZXNfdG9feGVuKGN1ciwgbWZuX3go Km1mbiksIDEsIFBBR0VfSFlQRVJWSVNPUikgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo IGN1ciAhPSB2YSApCisgICAgICAgICAgICAgICAgZGVzdHJveV94ZW5fbWFwcGluZ3ModmEsIGN1 cik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy biAxOworfQorCiB2b2lkICp2bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBucikK IHsKICAgICByZXR1cm4gX192bWFwKG1mbiwgMSwgbnIsIDEsIFBBR0VfSFlQRVJWSVNPUik7CkBA IC0yMTYsNiArMjcwLDU2IEBAIHZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQogICAgIHZtX2Zy ZWUodmEpOwogfQogCitzdHJ1Y3Qgdm1fYXJlYSAqdm1hbGxvY19yYW5nZShzaXplX3Qgc2l6ZSwg dW5zaWduZWQgbG9uZyBzdGFydCkKK3sKKyAgICBtZm5fdCAqbWZuOworICAgIHNpemVfdCBwYWdl cywgaTsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKKyAgICBzdHJ1Y3Qgdm1fYXJlYSAqdm0g PSBOVUxMOworCisgICAgQVNTRVJUKHNpemUpOworCisgICAgcGFnZXMgPSBQRk5fVVAoc2l6ZSk7 CisgICAgbWZuID0geG1hbGxvY19hcnJheShtZm5fdCwgcGFnZXMpOworICAgIGlmICggbWZuID09 IE5VTEwgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZtID0geG1hbGxvYyhzdHJ1Y3Qg dm1fYXJlYSk7CisgICAgaWYgKCAhdm0gKQorICAgIHsKKyAgICAgICAgeGZyZWUobWZuKTsKKyAg ICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHZtLT5tZm4gPSBtZm47CisKKyAgICBmb3Ig KCBpID0gMDsgaSA8IHBhZ2VzOyBpKysgKQorICAgIHsKKyAgICAgICAgcGcgPSBhbGxvY19kb21o ZWFwX3BhZ2UoTlVMTCwgMCk7CisgICAgICAgIGlmICggcGcgPT0gTlVMTCApCisgICAgICAgICAg ICBnb3RvIGVycm9yOworICAgICAgICBtZm5baV0gPSBfbWZuKHBhZ2VfdG9fbWZuKHBnKSk7Cisg ICAgfQorCisgICAgaWYgKCAhdm1hcF9yYW5nZShtZm4sIHN0YXJ0LCBwYWdlcykgKQorICAgICAg ICBnb3RvIGVycm9yOworCisgICAgdm0tPnZhID0gKHZvaWQgKilzdGFydDsKKyAgICB2bS0+cGFn ZXMgPSBwYWdlczsKKworICAgIHNwaW5fbG9jaygmdm1fYXJlYV9sb2NrKTsKKyAgICBsaXN0X2Fk ZCgmdm0tPmxpc3QsICZ2bV9hcmVhX2xpc3QpOworICAgIHNwaW5fdW5sb2NrKCZ2bV9hcmVhX2xv Y2spOworCisgICAgcmV0dXJuIHZtOworCisgZXJyb3I6CisgICAgd2hpbGUgKCBpLS0gKQorICAg ICAgICBmcmVlX2RvbWhlYXBfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm5baV0pKSk7CisgICAg eGZyZWUodm0tPm1mbik7CisgICAgeGZyZWUodm0pOworICAgIHJldHVybiBOVUxMOworfQorCiB2 b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogewogICAgIG1mbl90ICptZm47CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oIGIveGVuL2luY2x1ZGUveGVuL3ZtYXAuaAppbmRleCA1 NjcxYWM4Li40YzlhMzUwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oCisrKyBi L3hlbi9pbmNsdWRlL3hlbi92bWFwLmgKQEAgLTEyLDYgKzEyLDE2IEBAIHZvaWQgKl9fdm1hcChj b25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksCiB2b2lkICp2bWFwKGNv bnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBucik7CiB2b2lkIHZ1bm1hcChjb25zdCB2b2lk ICopOwogdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSk7CisKK3N0cnVjdCB2bV9hcmVhIHsKKyAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgbWZuX3QgKm1mbjsKKyAgICB2b2lkICp2YTsK KyAgICB1bnNpZ25lZCBpbnQgcGFnZXM7Cit9OworCitzdHJ1Y3Qgdm1fYXJlYSAqdm1hbGxvY19y YW5nZShzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbG9uZyBzdGFydCk7CisKIHZvaWQgKnZ6YWxsb2Mo c2l6ZV90IHNpemUpOwogdm9pZCB2ZnJlZSh2b2lkICp2YSk7CiAKLS0gCjIuNS4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK