From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v4] xmalloc: add support for checking the pool integrity Date: Wed, 7 Jan 2015 19:20:38 +0000 Message-ID: <54AD8706.5020802@citrix.com> References: <1418758405-32200-1-git-send-email-mdontu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1418758405-32200-1-git-send-email-mdontu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: =?UTF-8?B?TWloYWkgRG9uyJt1?= , xen-devel@lists.xen.org Cc: ian.jackson@eu.citrix.com, keir@xen.org, ian.campbell@citrix.com, jbeulich@suse.com, tim@xen.org List-Id: xen-devel@lists.xenproject.org T24gMTYvMTIvMTQgMTk6MzMsIE1paGFpIERvbsibdSB3cm90ZToKPiBJbXBsZW1lbnRlZCB4bWVt X3Bvb2xfY2hlY2soKSwgeG1lbV9wb29sX2NoZWNrX2xvY2tlZCgpIGFuZAo+IHhtZW1fcG9vbF9j aGVja191bmxvY2tlZCgpIHRvIHZlcml0eSB0aGUgaW50ZWdyaXR5IG9mIHRoZSBUTFNGIG1hdHJp eC4KPgo+IFNpZ25lZC1vZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNv bT4KClRoaXMgcmV2aWV3IHN1cGVyc2VkZXMgKGFuZCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseSBm b3IpIHRoZSB0d28KZGlzY3Vzc2lvbiB0aHJlYWRzIHdoaWNoIGhhcHBlbmVkIG9mZiBteSBmaXJz dCByZXZpZXcuCgo+Cj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiAgLSB0cnkgaGFyZGVyIHRv IHJlc3BlY3QgdGhlIDgwIGNvbHVtbiBsaW1pdAo+ICAtIHVzZSAndW5zaWduZWQgaW50JyBpbnN0 ZWFkIG9mICdpbnQnIHdoZXJlIHBvc3NpYmxlCj4gIC0gbWFkZSB0aGUgbG9nZ2VkIG1lc3NhZ2Vz IGV2ZW4gc2hvcnRlcgo+ICAtIGRyb3BwZWQgdGhlIHVzZSBvZiBnb3RvIChkaWRuJ3QgcmVhbGx5 IG1ha2Ugc2Vuc2UpCj4KPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ICAtIHByaW50IHRoZSBuYW1lIG9m IHRoZSBjb3JydXB0ZWQgcG9vbAo+ICAtIGFkanVzdGVkIHRoZSBtZXNzYWdlcyB0byBiZXR0ZXIg Zml0IHdpdGhpbiA4MCBjb2x1bW5zCj4gIC0gbWlub3Igc3R5bGUgY2hhbmdlIChhID8gYSA6IGIg LT4gYSA/OiBiKQo+Cj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAgLSBmaXhlZCB0aGUgY29kaW5nc3R5 bGUKPiAgLSBzd2FwZWQgX2xvY2tlZC9fdW5sb2NrZWQgbmFtaW5nCj4gIC0gcmV3b3JrZWQgX194 bWVtX3Bvb2xfY2hlY2tfbG9ja2VkKCkgYSBiaXQKPiAgLSB1c2VkIGJvb2xfdCB3aGVyZSBhcHBy b3ByaWF0ZQo+ICAtIG1hZGUgeG1lbV9wb29sX2NoZWNrKCkgdGFrZSBhIHBvb2wgYXJndW1lbnQg d2hpY2ggY2FuIGJlIE5VTEwKPiAtLS0KPiAgeGVuL2NvbW1vbi94bWFsbG9jX3Rsc2YuYyB8IDEy MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIHhlbi9p bmNsdWRlL3hlbi94bWFsbG9jLmggfCAgIDcgKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTI2IGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94 bWFsbG9jX3Rsc2YuYyBiL3hlbi9jb21tb24veG1hbGxvY190bHNmLmMKPiBpbmRleCBhNTc2OWM5 Li5lY2E0ZjFjIDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24veG1hbGxvY190bHNmLmMKPiArKysg Yi94ZW4vY29tbW9uL3htYWxsb2NfdGxzZi5jCj4gQEAgLTEyMCw5ICsxMjAsMTIyIEBAIHN0cnVj dCB4bWVtX3Bvb2wgewo+ICAgICAgY2hhciBuYW1lW01BWF9QT09MX05BTUVfTEVOXTsKPiAgfTsK PiAgCj4gK3N0YXRpYyBzdHJ1Y3QgeG1lbV9wb29sICp4ZW5wb29sOwo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIE1BUFBJTkdfSU5TRVJUKHVuc2lnbmVkIGxvbmcgciwgaW50ICpmbCwgaW50ICpz bCk7Cj4gKwo+ICAvKgo+ICAgKiBIZWxwaW5nIGZ1bmN0aW9ucwo+ICAgKi8KPiArI2lmbmRlZiBO REVCVUcKPiArc3RhdGljIGJvb2xfdCB4bWVtX3Bvb2xfY2hlY2tfc2l6ZShjb25zdCBzdHJ1Y3Qg eG1lbV9wb29sICpwb29sLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBmbCwgaW50IHNsKQo+ICt7Cj4gKyAgICBjb25zdCBzdHJ1Y3QgYmhkciAqYiA9IHBvb2wtPm1h dHJpeFtmbF1bc2xdOwo+ICsKPiArICAgIHdoaWxlICggYiApCj4gKyAgICB7Cj4gKyAgICAgICAg aW50IF9fZmw7Cj4gKyAgICAgICAgaW50IF9fc2w7Cj4gKwo+ICsgICAgICAgIE1BUFBJTkdfSU5T RVJUKGItPnNpemUsICZfX2ZsLCAmX19zbCk7Cj4gKyAgICAgICAgaWYgKCBfX2ZsICE9IGZsIHx8 IF9fc2wgIT0gc2wgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19F UlIKPiArICAgICAgICAgICAgICAgICAgICJ4bWVtX3Bvb2w6ICVzOiBtaXNwbGFjZWQgYmxvY2sg JXA6JXUgKHslZCwlZH0gLT4geyVkLCVkfSlcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBwb29s LT5uYW1lLCBiLCBiLT5zaXplLCBmbCwgc2wsIF9fZmwsIF9fc2wpOwoKSXMgaXQgbGlhYmxlIHRv IGdldCBjb25mdXNpbmcgd2l0aCBhIGhleCBudW1iZXIgYW5kIGEgZGVjaW1hbCBudW1iZXIKY29t YmluZWQgd2l0aCBqdXN0IGEgY29sb24/CgpJcyBiIGV2ZW4gYSB1c2VmdWwgcG9pbnRlciB0byBw cmludD8gWW91IGhhdmUgdGhlIHBvb2wgbmFtZSwgaW5kaWNpZXMKYW5kIHNpemUgd2hpY2ggc2Vl bSB0byBiZSB0aGUgc2FsaWVudCBpbmZvcm1hdGlvbi4KCj4gKyAgICAgICAgICAgIHJldHVybiAw Owo+ICsgICAgICAgIH0KPiArICAgICAgICBiID0gYi0+cHRyLmZyZWVfcHRyLm5leHQ7Cj4gKyAg ICB9Cj4gKyAgICByZXR1cm4gMTsKPiArfQo+ICsKPiArLyoKPiArICogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCBmcm9tIGEgY29udGV4dCB3aGVyZSBwb29sLT5sb2NrIGlzCj4gKyAqIGFs cmVhZHkgYWNxdWlyZWQuCj4gKyAqCj4gKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9vbCBoYXMg YmVlbiBjb3JydXB0ZWQsIGZhbHNlIG90aGVyd2lzZQo+ICsgKi8KPiArI2RlZmluZSB4bWVtX3Bv b2xfY2hlY2tfbG9ja2VkKHBvb2wpIFwKPiArICAgIF9feG1lbV9wb29sX2NoZWNrX2xvY2tlZChf X0ZJTEVfXywgX19MSU5FX18sIHBvb2wpCj4gK3N0YXRpYyBib29sX3QgX194bWVtX3Bvb2xfY2hl Y2tfbG9ja2VkKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeG1lbV9wb29sICpwb29sKQo+ICt7 Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArICAgIHN0YXRpYyBib29sX3Qgb25jZSA9IDE7Cj4g Kwo+ICsgICAgaWYgKCAhb25jZSApCj4gKyAgICAgICAgcmV0dXJuIDE7Cj4gKyAgICBmb3IgKCBp ID0gMDsgaSA8IFJFQUxfRkxJOyBpKysgKQo+ICsgICAgewo+ICsgICAgICAgIGludCBmbCA9IChw b29sLT5mbF9iaXRtYXAgJiAoMSA8PCBpKSkgPyBpIDogLTE7Cj4gKwo+ICsgICAgICAgIGlmICgg ZmwgPj0gMCApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICB1bnNpZ25lZCBpbnQgajsKPiAr Cj4gKyAgICAgICAgICAgIGlmICggIXBvb2wtPnNsX2JpdG1hcFtmbF0gKQo+ICsgICAgICAgICAg ICB7Cj4gKyAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgo+ICsgICAgICAgICAgICAg ICAgICAgICAgICJ4bWVtX3Bvb2w6ICVzOiBUTFNGIGJpdG1hcCBjb3JydXB0ICghZW1wdHkgRkws IGVtcHR5IFNMKVxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICBwb29sLT5uYW1lKTsKPiAr ICAgICAgICAgICAgICAgIF9fd2FybihmaWxlLCBsaW5lKTsKPiArICAgICAgICAgICAgICAgIG9u Y2UgPSAwOwo+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgIH0KPiArICAg ICAgICAgICAgZm9yICggaiA9IDA7IGogPCBNQVhfU0xJOyBqKysgKQo+ICsgICAgICAgICAgICB7 Cj4gKyAgICAgICAgICAgICAgICBpbnQgc2wgPSAocG9vbC0+c2xfYml0bWFwW2ZsXSAmICgxIDw8 IGopKSA/IGogOiAtMTsKPiArCj4gKyAgICAgICAgICAgICAgICBpZiAoIHNsIDwgMCApCj4gKyAg ICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgICAgICBpZiAoICFwb29s LT5tYXRyaXhbZmxdW3NsXSApCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAg ICAgICAgcHJpbnRrKFhFTkxPR19FUlIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgInht ZW1fcG9vbDogJXM6IFRMU0YgYml0bWFwIGNvcnJ1cHQgKCFtYXRyaXhbJWRdWyVkXSlcbiIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wtPm5hbWUsIGZsLCBzbCk7Cj4gKyAgICAg ICAgICAgICAgICAgICAgX193YXJuKGZpbGUsIGxpbmUpOwo+ICsgICAgICAgICAgICAgICAgICAg IG9uY2UgPSAwOwo+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgaWYgKCAheG1lbV9wb29sX2NoZWNrX3NpemUocG9vbCwg ZmwsIHNsKSApCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICAgICAgcHJp bnRrKFhFTkxPR19FUlIgInhtZW1fcG9vbDogJXM6IFRMU0YgY2h1bmsgbWF0cml4IGNvcnJ1cHRc biIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wtPm5hbWUpOwo+ICsgICAgICAg ICAgICAgICAgICAgIF9fd2FybihmaWxlLCBsaW5lKTsKPiArICAgICAgICAgICAgICAgICAgICBv bmNlID0gMDsKPiArICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBpZiAoICFvbmNlICkKPiArICAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIHJldHVybiAhb25j ZTsKPiArfQoKSSB3YW50IHRvIHJlbW92ZSBfX2J1ZygpIGFuZCBfX3dhcm4oKSBiZWNhdXNlIHRo ZXkgYXJlIGN1cnJlbnRseSB1bnVzZWQKaW4gdGhlIGNvZGUsIGFuZCBhcmUgYSBjbHVkZ2Ugb24g QVJNIChsYWNrIG9mIHdvcmtpbmcKcnVuX2luX2V4Y2VwdGlvbl9oYW5kbGVyKCkpLiAgWW91IGNh biB1c2UgQlVHKCkvV0FSTigpIGluc3RlYWQsIHdoaWNoCndpbGwgd29yayBhcyBleHBlY3RlZCBB Uk0uCgpIb3dldmVyLCBvbmNlIG1lbW9yeSBjb3JydXB0aW9uIGhhcyBiZWVuIGRldGVjdGVkLCBh bGwgYmV0cyBhcmUgb2ZmCnJlZ2FyZGluZyBjb3JyZWN0IGZ1bmN0aW9uaW5nIG9mIHRoZSBob3N0 LiAgSSB3b3VsZCBzdWdnZXN0IHByaW50aW5nIGFzCm11Y2ggZXJyb3IgaW5mb3JtYXRpb24gYXMg cG9zc2libGUgYW5kIHVzaW5nIEJVRygpIHRvIGJyaW5nIFhlbiBkb3duLiAKVGhpcyBhbGxvd3Mg eW91IHRvIHJlbW92ZSAnb25jZScgKGR1YmlvdXMgYmVpbmcgc3RhdGljLCB5ZXQgYXBwbHlpbmcg dG8KYXJiaXRyYXJ5IHhtZW0gcG9vbHMpLCBhbmQgdG8gY2hhbmdlIHRoZSBmdW5jdGlvbiB0byBi ZSB2b2lkLgoKPiArCj4gKyNkZWZpbmUgeG1lbV9wb29sX2NoZWNrX3VubG9ja2VkKHBvb2wpIFwK PiArICAgIF9feG1lbV9wb29sX2NoZWNrX3VubG9ja2VkKF9fRklMRV9fLCBfX0xJTkVfXywgcG9v bCkKPiArc3RhdGljIGJvb2xfdCBfX3htZW1fcG9vbF9jaGVja191bmxvY2tlZChjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgeG1lbV9wb29sICpwb29sKQo+ICt7Cj4gKyAgICBib29sX3Qgb29wczsKPiAr Cj4gKyAgICBzcGluX2xvY2soJnBvb2wtPmxvY2spOwo+ICsgICAgb29wcyA9IF9feG1lbV9wb29s X2NoZWNrX2xvY2tlZChmaWxlLCBsaW5lLCBwb29sKTsKPiArICAgIHNwaW5fdW5sb2NrKCZwb29s LT5sb2NrKTsKPiArICAgIHJldHVybiBvb3BzOwo+ICt9Cj4gKwo+ICtib29sX3QgX194bWVtX3Bv b2xfY2hlY2soY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIHN0cnVjdCB4bWVtX3Bvb2wgKnBv b2wpCj4gK3sKPiArICAgIHJldHVybiBfX3htZW1fcG9vbF9jaGVja191bmxvY2tlZChmaWxlLCBs aW5lLCBwb29sID86IHhlbnBvb2wpOwo+ICt9Cj4gKyNlbHNlCj4gKyNkZWZpbmUgeG1lbV9wb29s X2NoZWNrX2xvY2tlZChwb29sKSAoKHZvaWQpKHBvb2wpKQo+ICsjZGVmaW5lIHhtZW1fcG9vbF9j aGVja191bmxvY2tlZChwb29sKSAoKHZvaWQpKHBvb2wpKQo+ICsjZW5kaWYKPiAgCj4gIC8qKgo+ ICAgKiBSZXR1cm5zIGluZGV4ZXMgKGZsLCBzbCkgb2YgdGhlIGxpc3QgdXNlZCB0byBzZXJ2ZSBy ZXF1ZXN0IG9mIHNpemUgcgo+IEBAIC0zODEsNiArNDk0LDggQEAgdm9pZCAqeG1lbV9wb29sX2Fs bG9jKHVuc2lnbmVkIGxvbmcgc2l6ZSwgc3RydWN0IHhtZW1fcG9vbCAqcG9vbCkKPiAgICAgIGlu dCBmbCwgc2w7Cj4gICAgICB1bnNpZ25lZCBsb25nIHRtcF9zaXplOwo+ICAKPiArICAgIHhtZW1f cG9vbF9jaGVja191bmxvY2tlZChwb29sKTsKPiArCj4gICAgICBpZiAoIHBvb2wtPmluaXRfcmVn aW9uID09IE5VTEwgKQo+ICAgICAgewo+ICAgICAgICAgIGlmICggKHJlZ2lvbiA9IHBvb2wtPmdl dF9tZW0ocG9vbC0+aW5pdF9zaXplKSkgPT0gTlVMTCApCj4gQEAgLTQ0MiwxMSArNTU3LDEzIEBA IHZvaWQgKnhtZW1fcG9vbF9hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCB4bWVtX3Bv b2wgKnBvb2wpCj4gIAo+ICAgICAgcG9vbC0+dXNlZF9zaXplICs9IChiLT5zaXplICYgQkxPQ0tf U0laRV9NQVNLKSArIEJIRFJfT1ZFUkhFQUQ7Cj4gIAo+ICsgICAgeG1lbV9wb29sX2NoZWNrX2xv Y2tlZChwb29sKTsKPiAgICAgIHNwaW5fdW5sb2NrKCZwb29sLT5sb2NrKTsKPiAgICAgIHJldHVy biAodm9pZCAqKWItPnB0ci5idWZmZXI7Cj4gIAo+ICAgICAgLyogRmFpbGVkIGFsbG9jICovCj4g ICBvdXRfbG9ja2VkOgo+ICsgICAgeG1lbV9wb29sX2NoZWNrX2xvY2tlZChwb29sKTsKPiAgICAg IHNwaW5fdW5sb2NrKCZwb29sLT5sb2NrKTsKPiAgCj4gICBvdXQ6Cj4gQEAgLTQ2NCw2ICs1ODEs NyBAQCB2b2lkIHhtZW1fcG9vbF9mcmVlKHZvaWQgKnB0ciwgc3RydWN0IHhtZW1fcG9vbCAqcG9v bCkKPiAgICAgIGIgPSAoc3RydWN0IGJoZHIgKikoKGNoYXIgKikgcHRyIC0gQkhEUl9PVkVSSEVB RCk7Cj4gIAo+ICAgICAgc3Bpbl9sb2NrKCZwb29sLT5sb2NrKTsKPiArICAgIHhtZW1fcG9vbF9j aGVja19sb2NrZWQocG9vbCk7Cj4gICAgICBiLT5zaXplIHw9IEZSRUVfQkxPQ0s7Cj4gICAgICBw b29sLT51c2VkX3NpemUgLT0gKGItPnNpemUgJiBCTE9DS19TSVpFX01BU0spICsgQkhEUl9PVkVS SEVBRDsKPiAgICAgIGItPnB0ci5mcmVlX3B0ciA9IChzdHJ1Y3QgZnJlZV9wdHIpIHsgTlVMTCwg TlVMTH07Cj4gQEAgLTUwMCw2ICs2MTgsNyBAQCB2b2lkIHhtZW1fcG9vbF9mcmVlKHZvaWQgKnB0 ciwgc3RydWN0IHhtZW1fcG9vbCAqcG9vbCkKPiAgICAgIHRtcF9iLT5zaXplIHw9IFBSRVZfRlJF RTsKPiAgICAgIHRtcF9iLT5wcmV2X2hkciA9IGI7Cj4gICBvdXQ6Cj4gKyAgICB4bWVtX3Bvb2xf Y2hlY2tfbG9ja2VkKHBvb2wpOwo+ICAgICAgc3Bpbl91bmxvY2soJnBvb2wtPmxvY2spOwo+ICB9 Cj4gIAo+IEBAIC01MTIsOCArNjMxLDYgQEAgaW50IHhtZW1fcG9vbF9tYXhhbGxvYyhzdHJ1Y3Qg eG1lbV9wb29sICpwb29sKQo+ICAgKiBHbHVlIGZvciB4bWFsbG9jKCkuCj4gICAqLwo+ICAKPiAt c3RhdGljIHN0cnVjdCB4bWVtX3Bvb2wgKnhlbnBvb2w7Cj4gLQo+ICBzdGF0aWMgdm9pZCAqeG1h bGxvY19wb29sX2dldCh1bnNpZ25lZCBsb25nIHNpemUpCj4gIHsKPiAgICAgIEFTU0VSVChzaXpl ID09IFBBR0VfU0laRSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94bWFsbG9jLmgg Yi94ZW4vaW5jbHVkZS94ZW4veG1hbGxvYy5oCj4gaW5kZXggMjRhOTlhYy4uYWQ0ODkzMCAxMDA2 NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4veG1hbGxvYy5oCj4gKysrIGIveGVuL2luY2x1ZGUv eGVuL3htYWxsb2MuaAo+IEBAIC0xMjMsNCArMTIzLDExIEBAIHVuc2lnbmVkIGxvbmcgeG1lbV9w b29sX2dldF91c2VkX3NpemUoc3RydWN0IHhtZW1fcG9vbCAqcG9vbCk7Cj4gICAqLwo+ICB1bnNp Z25lZCBsb25nIHhtZW1fcG9vbF9nZXRfdG90YWxfc2l6ZShzdHJ1Y3QgeG1lbV9wb29sICpwb29s KTsKPiAgCj4gKyNpZm5kZWYgTkRFQlVHCj4gKyNkZWZpbmUgeG1lbV9wb29sX2NoZWNrKHBvb2wp IF9feG1lbV9wb29sX2NoZWNrKF9fRklMRV9fLCBfX0xJTkVfXywgcG9vbCkKPiArYm9vbF90IF9f eG1lbV9wb29sX2NoZWNrKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBzdHJ1Y3QgeG1lbV9w b29sICpwb29sKTsKPiArI2Vsc2UKPiArI2RlZmluZSB4bWVtX3Bvb2xfY2hlY2socG9vbCkgKCh2 b2lkKTApCgpUaGlzIG5lZWRzIHRvIGJlICgodm9pZCkocG9vbCkpIHRvIGV2YWx1YXRlIHRoZSBw b3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCldoYXQgYXJlIHRoZSBvdmVyaGVhZHMgb2YgcG9vbCBj b25zaXN0ZW5jeSBjaGVja2luZz8gIEl0IGxvb2tzIHRvIGJlCm1vZGVyYXRlbHkgaGlnaCwgZ2l2 ZW4gYSBmdWxsIGluc3BlY3Rpb24gb2YgdGhlIG1hdHJpeCBvbiBlYWNoCmFsbG9jYXRpb24gYW5k IGZyZWUuICBXb3VsZCBpdCBiZSBwb3NzaWJsZSB0byBoYXZlIG9uZSBlYXNpZXItdG8tYWx0ZXIK Y29tcGlsZSB0aW1lIGtub2Igc28gdGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gaW4gYSBz aW5nbGUgbG9jYXRpb24/CgpQZXJoYXBzIHNvbWV0aGluZyBsaWtlOgoKI2lmbmRlZiBOREVCVUcK I2RlZmluZSBYTUVNX1BPT0xfQ0hFQ0tTCiNlbmRpZgoKI2lmZGVmIFhNRU1fUE9PTF9DSEVDS1MK Li4uCiNlbHNlCi4uLgojZW5kaWYKCn5BbmRyZXcKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=