From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH v5 09/28] xsplice: Add helper elf routines Date: Thu, 31 Mar 2016 06:03:27 -0600 Message-ID: <56FD2E2F02000078000E1BA2@prv-mh.provo.novell.com> References: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> <1458849640-22588-10-git-send-email-konrad.wilk@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 1albK2-0004nI-1G for xen-devel@lists.xenproject.org; Thu, 31 Mar 2016 12:03:34 +0000 In-Reply-To: <1458849640-22588-10-git-send-email-konrad.wilk@oracle.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: ross.lagerwall@citrix.com, Konrad Rzeszutek Wilk Cc: Keir Fraser , andrew.cooper3@citrix.com, Ian Jackson , Tim Deegan , mpohlack@amazon.de, sasha.levin@oracle.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org Pj4+IE9uIDI0LjAzLjE2IGF0IDIxOjAwLCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4gd3JvdGU6 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwo+IEBAIC0w LDAgKzEsMjk0IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVt cyBSJkQgTHRkLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KPiArI2luY2x1 ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgo+ICsjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KPiArCj4gK3N0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnhzcGxpY2Vf ZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1l KQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8 IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQoKVW5sZXNzIHlvdSBkbyBzb21ldGhpbmcgdW51c3Vh bCAod2hpY2ggd291bGQgYmUgdW5kZXNpcmFibGUpLAp1c2VmdWwgRUxGIHNlY3Rpb24gbnVtYmVy IHN0YXJ0IGZyb20gMS4KCj4gK3N0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbnMoc3RydWN0 IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpCj4gK3sKPiArICAgIHN0cnVjdCB4 c3BsaWNlX2VsZl9zZWMgKnNlYzsKPiArICAgIHVuc2lnbmVkIGludCBpOwo+ICsKPiArICAgIC8q IHhzcGxpY2VfZWxmX2xvYWQgc2FuaXR5IGNoZWNrZWQgZV9zaG51bSBjaGVja2VkLiAqLwoKcmVk dW5kYW50ICJjaGVja2VkIgoKPiArICAgIHNlYyA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxp Y2VfZWxmX3NlYywgZWxmLT5oZHItPmVfc2hudW0pOwo+ICsgICAgaWYgKCAhc2VjICkKPiArICAg IHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXMlczogQ291bGQgbm90IGFsbG9jYXRl IG1lbW9yeSBmb3Igc2VjdGlvbiB0YWJsZSFcbiIsCj4gKyAgICAgICAgICAgICAgIFhTUExJQ0Us IGVsZi0+bmFtZSk7Cj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gKyAgICB9Cj4gKwo+ICsg ICAgZWxmLT5zZWMgPSBzZWM7Cj4gKwo+ICsgICAgLyogTi5CLiBXZSBhbHNvIHdpbGwgaW5nZXN0 IFNITl9VTkRFRiBzZWN0aW9ucy4gKi8KCkJlY2F1c2Ugb2Y/IFRoZSBtZWFuaW5nIG9mIHRoZSBm aWVsZHMgaW4gdGhlIDAtdGggc2VjdGlvbiBoZWFkZXIgaXMKZGlmZmVyZW50IGZyb20gdGhhdCBv ZiBvcmRpbmFyeSBvbmVzLgoKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgZWxmLT5oZHItPmVfc2hu dW07IGkrKyApCj4gKyAgICB7Cj4gKyAgICAgICAgc3NpemVfdCBkZWx0YSA9IGVsZi0+aGRyLT5l X3Nob2ZmICsgaSAqIGVsZi0+aGRyLT5lX3NoZW50c2l6ZTsKCldoeSBzc2l6ZV90PyAoVGhpcyBh bnl3YXkgc2hvdWxkIGJlIGEgc3VpdGFibGUgRUxGIHR5cGUuKQoKPiArCj4gKyAgICAgICAgaWYg KCBkZWx0YSArIHNpemVvZihFbGZfU2hkcikgPiBlbGYtPmxlbiApCj4gKyAgICAgICAgewo+ICsg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFNlY3Rpb24gaGVhZGVyIFsl ZF0gaXMgcGFzdCBlbmQgb2YgcGF5bG9hZCFcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgWFNQ TElDRSwgZWxmLT5uYW1lLCBpKTsKClhTUExJQ0UgaXMgYSBzdHJpbmcgbGl0ZXJhbCwgc28gc2hv dWxkIGJlIHByZXBlbmRlZCB0byB0aGUgZm9ybWF0CnN0cmluZyBpbnN0ZWFkIG9mIGZvcmNlZCB0 aHJvdWdoICVzLiBBbmQgJXUgcGxlYXNlIGZvciB1bnNpZ25lZAphcmd1bWVudHMuCgpBbHNvIHRo aXMgY2hlY2sgZG9lc24ndCBuZWVkIGRvaW5nIGluc2lkZSB0aGUgbG9vcCAtIHlvdSBjYW4gc2lt cGx5CmNoZWNrIG9uY2UgKHVzaW5nIGVfc2hudW0pIHRoYXQgdGhlIGVudGlyZSBzZWN0aW9uIHRh YmxlIGlzIHZhbGlkLgoKPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICAg fQo+ICsKPiArICAgICAgICBzZWNbaV0uc2VjID0gKEVsZl9TaGRyICopKGRhdGEgKyBkZWx0YSk7 CgpQb2ludGxlc3MgY2FzdCBib2d1c2x5IGNhc3RpbmcgYXdheSBjb25zdG5lc3MuCgo+ICsgICAg ICAgIGRlbHRhID0gc2VjW2ldLnNlYy0+c2hfb2Zmc2V0Owo+ICsKPiArICAgICAgICBpZiAoIGRl bHRhID4gZWxmLT5sZW4gKQoKVGhpcyBpcyByZWxldmFudCBvbmx5IGZvciBzZWN0aW9ucyBoYXZp bmcgbm9uLXplcm8gc2l6ZS4gQW5kIHRoZW4geW91IG9mCmNvdXJzZSBuZWVkIHRvIHRha2Ugc2l6 ZSBpbnRvIGFjY291bnQgd2hlbiBkb25nIHRoZSBib3VuZHMgY2hlY2suCgo+ICsgICAgICAgIHsK PiArICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBTZWN0aW9uIFslZF0g ZGF0YSBpcyBwYXN0IGVuZCBvZiBwYXlsb2FkIVxuIiwKPiArICAgICAgICAgICAgICAgICAgICBY U1BMSUNFLCBlbGYtPm5hbWUsIGkpOwo+ICsgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAr ICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHNlY1tpXS5kYXRhID0gZGF0YSArIGRlbHRhOwo+ICsg ICAgICAgIC8qIE5hbWUgaXMgcG9wdWxhdGVkIGluIHhzcGxpY2VfZWxmX3NlY3Rpb25zX25hbWUu ICovCj4gKyAgICAgICAgc2VjW2ldLm5hbWUgPSBOVUxMOwo+ICsKPiArICAgICAgICBpZiAoIHNl Y1tpXS5zZWMtPnNoX3R5cGUgPT0gU0hUX1NZTVRBQiApCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICBpZiAoIGVsZi0+c3ltdGFiICkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAg ICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBNdWx0aXBsZSBzeW1ib2wgdGFibGVzIVxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lKTsKPiArICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwoKVGhlcmUncyBub3RoaW5nIGludmFsaWQgYWJv dXQgdGhpcywgaXQncyBzaW1wbHkgdW5zdXBwb3J0ZWQgYnkgdGhlCmltcGxlbWVudGF0aW9uIChy ZWFkOiBhIGJldHRlciBlcnJvciBjb2RlIHBsZWFzZSkuCgo+ICsgICAgICAgICAgICB9Cj4gKwo+ ICsgICAgICAgICAgICBlbGYtPnN5bXRhYiA9ICZzZWNbaV07Cj4gKwo+ICsgICAgICAgICAgICAv Kgo+ICsgICAgICAgICAgICAgKiBlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rIHdvdWxkIHBvaW50 IHRvIHRoZSByaWdodCBzZWN0aW9uCj4gKyAgICAgICAgICAgICAqIGJ1dCB3ZSBoYWRuJ3QgZmlu aXNoZWQgcGFyc2luZyBhbGwgdGhlIHNlY3Rpb25zLgo+ICsgICAgICAgICAgICAgKi8KPiArICAg ICAgICAgICAgaWYgKCBlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5rID4gZWxmLT5oZHItPmVfc2hu dW0gKQoKPj0KCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGRwcmludGsoWEVO TE9HX0RFQlVHLCAiJXMlczogU3ltYm9sIHRhYmxlIGlkeCAoJWQpIHRvIHN0cnRhYiBwYXN0IGVu ZCAoJWQpXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUs IGVsZi0+c3ltdGFiLT5zZWMtPnNoX2xpbmssCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVs Zi0+aGRyLT5lX3NobnVtKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsg ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICggIWVsZi0+ c3ltdGFiICkKPiArICAgIHsKPiArICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6 IE5vIHN5bWJvbCB0YWJsZSBmb3VuZCFcbiIsCj4gKyAgICAgICAgICAgICAgICBYU1BMSUNFLCBl bGYtPm5hbWUpOwo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgfQo+ICsKPiArICAg IC8qIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBTSFRfU1RSVEFCIHNvIHBpY2sgdGhlIHJpZ2h0IG9u ZS4gKi8KPiArICAgIGVsZi0+c3RydGFiID0gJnNlY1tlbGYtPnN5bXRhYi0+c2VjLT5zaF9saW5r XTsKCkhvdyBhYm91dCBjaGVja2luZyB0aGlzIHJlYWxseSBpcyBhIFNIVF9TVFJUQUIgc2VjdGlv bj8KCj4gKyAgICBpZiAoICFlbGYtPnN5bXRhYi0+c2VjLT5zaF9zaXplIHx8ICFlbGYtPnN5bXRh Yi0+c2VjLT5zaF9lbnRzaXplIHx8Cj4gKyAgICAgICAgIGVsZi0+c3ltdGFiLT5zZWMtPnNoX2Vu dHNpemUgIT0gc2l6ZW9mKEVsZl9TeW0pICkKClRoZSBmaXJzdCBzaF9lbnRzaXplIGNoZWNrIGlz IHJlZHVuZGFudCB3aXRoIHRoZSBzZWNvbmQsIGFuZCB0aGUKc2Vjb25kIGlzIHRvbyBzdHJpY3Qg KDwgc3VmZmljZXMpLgoKQWxzbyBzaG91bGRuJ3QgdGhlIHN0cmluZyB0YWJsZSBzZWN0aW9uIGFs c28gaGF2ZSBhdCBsZWFzdCBub24temVybwpzaXplPyBBbmQgaXRzIGZpcnN0IGFuZCBsYXN0IGJ5 dGVzIGJlIE5VTD8KCj4gK3N0YXRpYyBpbnQgZWxmX3Jlc29sdmVfc2VjdGlvbl9uYW1lcyhzdHJ1 Y3QgeHNwbGljZV9lbGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKPiArewo+ICsgICAgY29uc3Qg Y2hhciAqc2hzdHJ0YWI7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArICAgIHVuc2lnbmVkIGlu dCBvZmZzZXQsIGRlbHRhOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGUgZWxmLT5zZWNbMCAt PiBlX3NobnVtXSBzdHJ1Y3R1cmVzIGhhdmUgYmVlbiB2ZXJpZmllZCBieQo+ICsgICAgICogZWxm X3Jlc29sdmVfc2VjdGlvbnMuIEZpbmQgZmlsZSBvZmZzZXQgZm9yIHNlY3Rpb24gc3RyaW5nIHRh YmxlLgo+ICsgICAgICovCj4gKyAgICBvZmZzZXQgPSAgZWxmLT5zZWNbZWxmLT5oZHItPmVfc2hz dHJuZHhdLnNlYy0+c2hfb2Zmc2V0OwoKVHJ1bmNhdGluZyB0aGUgdmFsdWUgb24gNjQtYml0IEVM Ri4KCj4gKyAgICBpZiAoIG9mZnNldCA+IGVsZi0+bGVuICkKPiArICAgIHsKPiArICAgICAgICBk cHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IHNoc3RydGFiIHNlY3Rpb24gb2Zmc2V0ICgldSkg cGFzdCBlbmQgb2YgcGF5bG9hZCFcbiIsCj4gKyAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYt Pm5hbWUsIGVsZi0+aGRyLT5lX3Noc3RybmR4KTsKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiArICAgIH0KPiArCj4gKyAgICBzaHN0cnRhYiA9IChkYXRhICsgb2Zmc2V0KTsKClBvaW50bGVz cyBwYXJlbnRoZXNlcy4KCj4gKyAgICAvKiBXZSBjb3VsZCBpZ25vcmUgdGhlIGZpcnN0IGFzIGl0 IGlzIHJlc2VydmVkLi4gKi8KCkRvdWJsZSBmdWxsIHN0b3AuCgo+ICsgICAgZm9yICggaSA9IDA7 IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKPiArICAgIHsKPiArICAgICAgICBkZWx0YSA9 IGVsZi0+c2VjW2ldLnNlYy0+c2hfbmFtZTsKPiArCj4gKyAgICAgICAgaWYgKCBvZmZzZXQgKyBk ZWx0YSA+IGVsZi0+bGVuICkKClRoaXMgaXMgdG9vIHdlYWs6IEFmdGVyIGhhdmluZyBib3VuZHMg Y2hlY2tlZCB0aGUgc3RyaW5nIHRhYmxlIHNlY3Rpb24KdG8gYmUgaW5zaWRlIHRoZSBpbWFnZSwg eW91IG5vdyBuZWVkIHRvIGJvdW5kcyBjaGVjayB0aGUgc3RyaW5nIG9mZnNldAp0byBiZSBpbnNp ZGUgdGhlIHN0cmluZyB0YWJsZS4gQWxzbyBpdCBzZWVtcyAoanVzdCBsaWtlIGFib3ZlKSB5b3UK bm8td2hlcmUgY2hlY2sgdGhhdCB0aGUgcmVmZXJlbmNlZCBzZWN0aW9uIGFjdHVhbGx5IGlzIGEg c3RyaW5nIHRhYmxlLgoKPiArc3RhdGljIGludCBlbGZfZ2V0X3N5bShzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZiwgY29uc3Qgdm9pZCAqZGF0YSkKPiArewo+ICsgICAgc3RydWN0IHhzcGxpY2VfZWxm X3NlYyAqc3ltdGFiX3NlYywgKnN0cnRhYl9zZWM7Cj4gKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZf c3ltICpzeW07Cj4gKyAgICB1bnNpZ25lZCBpbnQgaSwgZGVsdGEsIG9mZnNldCwgbnN5bTsKPiAr Cj4gKyAgICBzeW10YWJfc2VjID0gZWxmLT5zeW10YWI7Cj4gKyAgICBzdHJ0YWJfc2VjID0gZWxm LT5zdHJ0YWI7Cj4gKwo+ICsgICAgLyogUG9pbnRlcnMgYXJpdGhtZXRpYyB0byBnZXQgZmlsZSBv ZmZzZXQuICovCj4gKyAgICBvZmZzZXQgPSBzdHJ0YWJfc2VjLT5kYXRhIC0gZGF0YTsKPiArCj4g KyAgICBBU1NFUlQob2Zmc2V0ID09IHN0cnRhYl9zZWMtPnNlYy0+c2hfb2Zmc2V0KTsKPiArCj4g KyAgICAvKiBzeW10YWJfc2VjLT5kYXRhIHdhcyBjb21wdXRlZCBpbiBlbGZfcmVzb2x2ZV9zZWN0 aW9ucy4gKi8KPiArICAgIEFTU0VSVCgoc3ltdGFiX3NlYy0+c2VjLT5zaF9vZmZzZXQgKyBkYXRh KSA9PSBzeW10YWJfc2VjLT5kYXRhKTsKPiArCj4gKyAgICAvKiBObyBuZWVkIHRvIGNoZWNrIHZh bHVlcyBhcyBlbGZfcmVzb2x2ZV9zZWN0aW9ucyBkaWQgaXQuICovCj4gKyAgICBuc3ltID0gc3lt dGFiX3NlYy0+c2VjLT5zaF9zaXplIC8gc3ltdGFiX3NlYy0+c2VjLT5zaF9lbnRzaXplOwo+ICsK PiArICAgIHN5bSA9IHhtYWxsb2NfYXJyYXkoc3RydWN0IHhzcGxpY2VfZWxmX3N5bSwgbnN5bSk7 Cj4gKyAgICBpZiAoICFzeW0gKQo+ICsgICAgewo+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJS ICIlcyVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzeW1ib2xzXG4iLAo+ICsgICAg ICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUpOwo+ICsgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ICsgICAgfQo+ICsKPiArICAgIC8qIFNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LiAqLwo+ICsg ICAgZWxmLT5zeW0gPSBzeW07Cj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IG5zeW07IGkrKyApCgpB cyB3aXRoIHNlY3Rpb25zLCB0aGUgMHRoIHN5bWJvbCB0YWJsZSBlbnRyeSBpcyBzcGVjaWFsIHRv by4KCj4gKyAgICB7Cj4gKyAgICAgICAgRWxmX1N5bSAqczsKPiArCj4gKyAgICAgICAgaWYgKCBp ICogc2l6ZW9mKEVsZl9TeW0pID4gZWxmLT5sZW4gKQoKQ29uc2lkZXJpbmcgdGhhdCB3ZSBrbm93 IHRoZSBzeW1ib2wgdGFibGUgc2VjdGlvbiBpcyB3aXRoaW4gYm91bmRzLApJIGRvbid0IHRoaW5r IHRoaXMgY2hlY2sgZG9lcyBhbnkgZ29vZC4gUGx1cyBpdCBvdWdodCB0byBiZSBhZGRpbmcgMQp0 byBpIGFuZCB0YWtlIHRoZSBzZWN0aW9uIGZpbGUgb2Zmc2V0IGludG8gYWNjb3VudC4KCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFN5bWJv bCBoZWFkZXIgWyVkXSBpcyBwYXN0IGVuZCBvZiAgcGF5bG9hZCFcbiIsCj4gKyAgICAgICAgICAg ICAgICAgICAgWFNQTElDRSwgZWxmLT5uYW1lLCBpKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzID0gJigoRWxmX1N5bSAqKXN5bXRh Yl9zZWMtPmRhdGEpW2ldOwo+ICsKPiArICAgICAgICAvKiBJZiBzdC0+bmFtZSBpcyBTVE5fVU5E RUYgaXMgemVybywgdGhlIGNoZWNrIHdpbGwgYWx3YXlzIGJlIHRydWUuICovCgpPZGQgZG91Ymxl IHVzZSBvZiAiaXMiLgoKPiArICAgICAgICBkZWx0YSA9IHMtPnN0X25hbWU7Cj4gKwo+ICsgICAg ICAgIC8qIE9mZnNldCBoYXMgYmVlbiBjb21wdXRlZCBlYXJsaWVyLiAqLwo+ICsgICAgICAgIGlm ICggb2Zmc2V0ICsgZGVsdGEgPiBlbGYtPmxlbiApCgpUaGlzIHNob3VsZCBhZ2FpbiBjaGVjayBh Z2FpbnN0IHRoZSBzdHJpbmcgdGFibGUgc2l6ZSBhbmQgYWdhaW4gdXNlID49IC4KCj4gKyAgICAg ICAgewo+ICsgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFN5bWJvbCBb JXVdIGRhdGEgaXMgcGFzdCBlbmQgb2YgcGF5bG9hZCFcbiIsCj4gKyAgICAgICAgICAgICAgICAg ICAgWFNQTElDRSwgZWxmLT5uYW1lLCBpKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzeW1baV0uc3ltID0gczsKPiArICAgICAgICBp ZiAoIHMtPnN0X25hbWUgPT0gU1ROX1VOREVGICkKPiArICAgICAgICAgICAgc3ltW2ldLm5hbWUg PSBOVUxMOwoKSSBkb24ndCB0aGluayB0aGlzIGlzIGEgZ29vZCBpZGVhIC0gc2luY2UgdGhlIGZp cnN0IGJ5dGUgb2YgYSBzdHJpbmcgdGFibGUKbmVlZHMgdG8gYmUgTlVMLCB5b3UgY2FuIGFzIHdl bGwganVzdCBwb2ludCB0aGVyZSAod2l0aG91dCBhbnkgbmVlZApmb3IgYSBjb25kaXRpb25hbCku Cgo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgc3ltW2ldLm5hbWUgPSBkYXRhICsgKCBk ZWx0YSArIG9mZnNldCApOwoKU3RyYXkgYmxhbmtzLgoKPiArc3RhdGljIGludCB4c3BsaWNlX2hl YWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKPiArewo+ICsgICAgaWYg KCBzaXplb2YoKmVsZi0+aGRyKSA+PSBlbGYtPmxlbiApCgpTdHJpY3RseSBzcGVha2luZyBqdXN0 ID4gLgoKPiArICAgIHsKPiArICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFNl Y3Rpb24gaGVhZGVyIGlzIGJpZ2dlciB0aGFuIHBheWxvYWQhXG4iLAo+ICsgICAgICAgICAgICAg ICAgWFNQTElDRSwgZWxmLT5uYW1lKTsKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAg IH0KPiArCj4gKyAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID09IFNITl9VTkRFRiApCj4g KyAgICB7Cj4gKyAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBTZWN0aW9uIG5h bWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLAo+ICsgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxm LT5uYW1lKTsKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgIH0KPiArCj4gKyAgICAv KiBDaGVjayB0aGF0IHNlY3Rpb24gbmFtZSBpbmRleCBpcyB3aXRoaW4gdGhlIHNlY3Rpb25zLiAq Lwo+ICsgICAgaWYgKCBlbGYtPmhkci0+ZV9zaHN0cm5keCA+IGVsZi0+aGRyLT5lX3NobnVtICkK Cj49Cgo+ICsgICAgewo+ICsgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogU2Vj dGlvbiBuYW1lIGlkeCAoJWQpIGlzIHBhc3QgZW5kIG9mICBzZWN0aW9ucyAoJWQpIVxuIiwKPiAr ICAgICAgICAgICAgICAgIFhTUExJQ0UsIGVsZi0+bmFtZSwgZWxmLT5oZHItPmVfc2hzdHJuZHgs IGVsZi0+aGRyLT5lX3NobnVtKTsKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgIH0K PiArCj4gKyAgICBpZiAoIGVsZi0+aGRyLT5lX3NobnVtID4gNjQgKQo+ICsgICAgewo+ICsgICAg ICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogVG9vIG1hbnkgKCVkKSBzZWN0aW9ucyFc biIsCj4gKyAgICAgICAgICAgICAgICBYU1BMSUNFLCBlbGYtPm5hbWUsIGVsZi0+aGRyLT5lX3No bnVtKTsKPiArICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgIH0KPiArCj4gKyAgICByZXR1 cm4gMDsKPiArfQoKQXNzdW1pbmcgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgY2hlY2tzIGhpZGRlbiBp biBvdGhlciBwYXRjaGVzLCBJJ20KYWZyYWlkIHRoZXJlJ3MgcXVpdGUgYSBiaXQgb2Ygc3R1ZmYg bWlzc2luZyAtIHRoZXJlIGFyZSBwbGVudHkgb2Ygb3RoZXIKaGVhZGVyIGZpZWxkcyBtb3N0IGlm IG5vdCBhbGwgb2Ygd2hpY2ggbmVlZCBzYW5pdHkgY2hlY2tpbmcuCgo+ICtpbnQgeHNwbGljZV9l bGZfbG9hZChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgdm9pZCAqZGF0YSkKPiArewo+ICsgICAg aW50IHJjOwo+ICsKPiArICAgIGVsZi0+aGRyID0gZGF0YTsKPiArCj4gKyAgICByYyA9IHhzcGxp Y2VfaGVhZGVyX2NoZWNrKGVsZik7Cj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICByZXR1cm4g cmM7Cj4gKwo+ICsgICAgcmMgPSBlbGZfcmVzb2x2ZV9zZWN0aW9ucyhlbGYsIGRhdGEpOwo+ICsg ICAgaWYgKCByYyApCj4gKyAgICAgICAgcmV0dXJuIHJjOwo+ICsKPiArICAgIHJjID0gZWxmX3Jl c29sdmVfc2VjdGlvbl9uYW1lcyhlbGYsIGRhdGEpOwo+ICsgICAgaWYgKCByYyApCj4gKyAgICAg ICAgcmV0dXJuIHJjOwo+ICsKPiArICAgIHJjID0gZWxmX2dldF9zeW0oZWxmLCBkYXRhKTsKPiAr ICAgIGlmICggcmMgKQo+ICsgICAgICAgIHJldHVybiByYzsKPiArCj4gKyAgICByZXR1cm4gMDsK PiArfQo+ICsKPiArdm9pZCB4c3BsaWNlX2VsZl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm KQo+ICt7Cj4gKyAgICB4ZnJlZShlbGYtPnNlYyk7Cj4gKyAgICBlbGYtPnNlYyA9IE5VTEw7Cj4g KyAgICB4ZnJlZShlbGYtPnN5bSk7Cj4gKyAgICBlbGYtPnN5bSA9IE5VTEw7Cj4gKyAgICBlbGYt Pm5zeW0gPSAwOwo+ICsgICAgZWxmLT5uYW1lID0gTlVMTDsKPiArICAgIGVsZi0+bGVuID0gMDsK PiArfQoKSW5zdGVhZCBvZiB6ZXJvaW5nIHRoZXNlIGZpZWxkcywgd291bGRuJ3QgaXQgbWFrZSBz ZW5zZSB0byBzaW1wbHkKeGZyZWUoZWxmKSBhcyB0aGUgbGFzdCBhY3Rpb24gaGVyZT8KCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oCj4gQEAgLTAs MCArMSw1MSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2l0cml4IFN5c3RlbXMg UiZEIEx0ZC4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9fWEVOX1hTUExJQ0VfRUxGX0hfXwo+ICsj ZGVmaW5lIF9fWEVOX1hTUExJQ0VfRUxGX0hfXwo+ICsKPiArI2luY2x1ZGUgPHhlbi90eXBlcy5o Pgo+ICsjaW5jbHVkZSA8eGVuL2VsZnN0cnVjdHMuaD4KPiArCj4gKy8qIFRoZSBmb2xsb3dpbmcg ZGVzY3JpYmVzIGFuIEVsZiBmaWxlIGFzIGNvbnN1bWVkIGJ5IHhTcGxpY2UuICovCj4gK3N0cnVj dCB4c3BsaWNlX2VsZl9zZWMgewo+ICsgICAgRWxmX1NoZHIgKnNlYzsgICAgICAgICAgICAgICAg IC8qIEhvb2tlZCB1cCBpbiBlbGZfcmVzb2x2ZV9zZWN0aW9ucy4gKi8KCmNvbnN0PwoKPiArICAg IGNvbnN0IGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAvKiBIdW1hbiByZWFkYWJsZSBuYW1lIGhv b2tlZCBpbgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNv bHZlX3NlY3Rpb25fbmFtZXMuICovCj4gKyAgICBjb25zdCB2b2lkICpkYXRhOyAgICAgICAgICAg ICAgLyogUG9pbnRlciB0byB0aGUgc2VjdGlvbiAoZG9uZSBieQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25zKS4gKi8KPiArfTsKPiAr Cj4gK3N0cnVjdCB4c3BsaWNlX2VsZl9zeW0gewo+ICsgICAgRWxmX1N5bSAqc3ltOwoKY29uc3Q/ Cgo+ICsgICAgY29uc3QgY2hhciAqbmFtZTsKPiArfTsKPiArCj4gK3N0cnVjdCB4c3BsaWNlX2Vs ZiB7Cj4gKyAgICBjb25zdCBjaGFyICpuYW1lOyAgICAgICAgICAgICAgLyogUG9pbnRlciB0byBw YXlsb2FkLT5uYW1lLiAqLwo+ICsgICAgc3NpemVfdCBsZW47ICAgICAgICAgICAgICAgICAgIC8q IExlbmd0aCBvZiB0aGUgRUxGIGZpbGUuICovCgpXaHkgc3NpemVfdD8KCj4gKyAgICBFbGZfRWhk ciAqaGRyOyAgICAgICAgICAgICAgICAgLyogRUxGIGZpbGUuICovCj4gKyAgICBzdHJ1Y3QgeHNw bGljZV9lbGZfc2VjICpzZWM7ICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRlZCBieSB1 cy4gKi8KPiArICAgIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gKnN5bTsgICAvKiBBcnJheSBvZiBz eW1ib2xzICwgYWxsb2NhdGVkIGJ5IHVzLiAqLwo+ICsgICAgdW5zaWduZWQgaW50IG5zeW07Cj4g KyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFi IHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAqLwo+ICsgICAgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc3RydGFiOy8qIFBvaW50ZXIgdG8gLnN0cnRhYiBzZWN0aW9uIC0gYWthIHRvIHNlY1t5XS4g Ki8KCk1hbnkgdGltZXMgLSBjb25zdD8KCj4gK307Cj4gKwo+ICtzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqbmFtZSk7Cgpjb25zdCAocmV0dXJuIHZhbHVlKT8KCj4gK2ludCB4c3BsaWNlX2Vs Zl9sb2FkKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCB2b2lkICpkYXRhKTsKCmNvbnN0IChzZWNv bmQgcGFyYW1ldGVyKT8KCkphbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK