From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UcrMh-0008IC-RR for kexec@lists.infradead.org; Thu, 16 May 2013 06:08:38 +0000 Message-ID: <5194758D.90502@cn.fujitsu.com> Date: Thu, 16 May 2013 13:58:37 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH v6 2/8] vmcore: allocate buffer for ELF headers on page-size alignment References: <20130515090507.28109.28956.stgit@localhost6.localdomain6> <20130515090551.28109.73350.stgit@localhost6.localdomain6> In-Reply-To: <20130515090551.28109.73350.stgit@localhost6.localdomain6> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=twosheds.infradead.org@lists.infradead.org To: HATAYAMA Daisuke Cc: riel@redhat.com, hughd@google.com, jingbai.ma@hp.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, lisa.mitchell@hp.com, linux-mm@kvack.org, kumagai-atsushi@mxc.nes.nec.co.jp, ebiederm@xmission.com, kosaki.motohiro@jp.fujitsu.com, akpm@linux-foundation.org, walken@google.com, cpw@sgi.com, vgoyal@redhat.com 5LqOIDIwMTPlubQwNeaciDE15pelIDE3OjA1LCBIQVRBWUFNQSBEYWlzdWtlIOWGmemBkzoKPiBB bGxvY2F0ZSBFTEYgaGVhZGVycyBvbiBwYWdlLXNpemUgYm91bmRhcnkgdXNpbmcgX19nZXRfZnJl ZV9wYWdlcygpCj4gaW5zdGVhZCBvZiBrbWFsbG9jKCkuCj4gCj4gTGF0ZXIgcGF0Y2ggd2lsbCBt ZXJnZSBQVF9OT1RFIGVudHJpZXMgaW50byBhIHNpbmdsZSB1bmlxdWUgb25lIGFuZAo+IGRlY3Jl YXNlIHRoZSBidWZmZXIgc2l6ZSBhY3R1YWxseSB1c2VkLiBLZWVwIG9yaWdpbmFsIGJ1ZmZlciBz aXplIGluCj4gdmFyaWFibGUgZWxmY29yZWJ1Zl9zel9vcmlnIHRvIGtmcmVlIHRoZSBidWZmZXIg bGF0ZXIgYW5kIGFjdHVhbGx5Cj4gdXNlZCBidWZmZXIgc2l6ZSB3aXRoIHJvdW5kZWQgdXAgdG8g cGFnZS1zaXplIGJvdW5kYXJ5IGluIHZhcmlhYmxlCj4gZWxmY29yZWJ1Zl9zeiBzZXBhcmF0ZWx5 Lgo+IAo+IFRoZSBzaXplIG9mIHBhcnQgb2YgdGhlIEVMRiBidWZmZXIgZXhwb3J0ZWQgZnJvbSAv cHJvYy92bWNvcmUgaXMKPiBlbGZjb3JlYnVmX3N6Lgo+IAo+IFRoZSBtZXJnZWQsIHJlbW92ZWQg UFRfTk9URSBlbnRyaWVzLCBpLmUuIHRoZSByYW5nZSBbZWxmY29yZWJ1Zl9zeiwKPiBlbGZjb3Jl YnVmX3N6X29yaWddLCBpcyBmaWxsZWQgd2l0aCAwLgo+IAo+IFVzZSBzaXplIG9mIHRoZSBFTEYg aGVhZGVycyBhcyBhbiBpbml0aWFsIG9mZnNldCB2YWx1ZSBpbgo+IHNldF92bWNvcmVfbGlzdF9v ZmZzZXRzX2VsZns2NCwzMn0gYW5kCj4gcHJvY2Vzc19wdGxvYWRfcHJvZ3JhbV9oZWFkZXJzX2Vs Zns2NCwzMn0gaW4gb3JkZXIgdG8gaW5kaWNhdGUgdGhhdAo+IHRoZSBvZmZzZXQgaW5jbHVkZXMg dGhlIGhvbGVzIHRvd2FyZHMgdGhlIHBhZ2UgYm91bmRhcnkuCj4gCj4gU2lnbmVkLW9mZi1ieTog SEFUQVlBTUEgRGFpc3VrZSA8ZC5oYXRheWFtYUBqcC5mdWppdHN1LmNvbT4KPiAtLS0KCkFja2Vk LWJ5OiBaaGFuZyBZYW5mZWkgPHpoYW5neWFuZmVpQGNuLmZ1aml0c3UuY29tPgoKPiAKPiAgZnMv cHJvYy92bWNvcmUuYyB8ICAgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwg MzUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2ZzL3Byb2Mvdm1jb3JlLmMgYi9mcy9w cm9jL3ZtY29yZS5jCj4gaW5kZXggYWIwYzkyZS4uNDg4ODZlNiAxMDA2NDQKPiAtLS0gYS9mcy9w cm9jL3ZtY29yZS5jCj4gKysrIGIvZnMvcHJvYy92bWNvcmUuYwo+IEBAIC0zMiw2ICszMiw3IEBA IHN0YXRpYyBMSVNUX0hFQUQodm1jb3JlX2xpc3QpOwo+ICAvKiBTdG9yZXMgdGhlIHBvaW50ZXIg dG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIGtlcm5lbCBlbGYgY29yZSBoZWFkZXJzLiAqLwo+ICBz dGF0aWMgY2hhciAqZWxmY29yZWJ1ZjsKPiAgc3RhdGljIHNpemVfdCBlbGZjb3JlYnVmX3N6Owo+ ICtzdGF0aWMgc2l6ZV90IGVsZmNvcmVidWZfc3pfb3JpZzsKPiAgCj4gIC8qIFRvdGFsIHNpemUg b2Ygdm1jb3JlIGZpbGUuICovCj4gIHN0YXRpYyB1NjQgdm1jb3JlX3NpemU7Cj4gQEAgLTE4Niw3 ICsxODcsNyBAQCBzdGF0aWMgc3RydWN0IHZtY29yZSogX19pbml0IGdldF9uZXdfZWxlbWVudCh2 b2lkKQo+ICAJcmV0dXJuIGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2bWNvcmUpLCBHRlBfS0VSTkVM KTsKPiAgfQo+ICAKPiAtc3RhdGljIHU2NCBfX2luaXQgZ2V0X3ZtY29yZV9zaXplX2VsZjY0KGNo YXIgKmVsZnB0cikKPiArc3RhdGljIHU2NCBfX2luaXQgZ2V0X3ZtY29yZV9zaXplX2VsZjY0KGNo YXIgKmVsZnB0ciwgc2l6ZV90IGVsZnN6KQo+ICB7Cj4gIAlpbnQgaTsKPiAgCXU2NCBzaXplOwo+ IEBAIC0xOTUsNyArMTk2LDcgQEAgc3RhdGljIHU2NCBfX2luaXQgZ2V0X3ZtY29yZV9zaXplX2Vs ZjY0KGNoYXIgKmVsZnB0cikKPiAgCj4gIAllaGRyX3B0ciA9IChFbGY2NF9FaGRyICopZWxmcHRy Owo+ICAJcGhkcl9wdHIgPSAoRWxmNjRfUGhkciopKGVsZnB0ciArIHNpemVvZihFbGY2NF9FaGRy KSk7Cj4gLQlzaXplID0gc2l6ZW9mKEVsZjY0X0VoZHIpICsgKChlaGRyX3B0ci0+ZV9waG51bSkg KiBzaXplb2YoRWxmNjRfUGhkcikpOwo+ICsJc2l6ZSA9IGVsZnN6Owo+ICAJZm9yIChpID0gMDsg aSA8IGVoZHJfcHRyLT5lX3BobnVtOyBpKyspIHsKPiAgCQlzaXplICs9IHBoZHJfcHRyLT5wX21l bXN6Owo+ICAJCXBoZHJfcHRyKys7Cj4gQEAgLTIwMyw3ICsyMDQsNyBAQCBzdGF0aWMgdTY0IF9f aW5pdCBnZXRfdm1jb3JlX3NpemVfZWxmNjQoY2hhciAqZWxmcHRyKQo+ICAJcmV0dXJuIHNpemU7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB1NjQgX19pbml0IGdldF92bWNvcmVfc2l6ZV9lbGYzMihjaGFy ICplbGZwdHIpCj4gK3N0YXRpYyB1NjQgX19pbml0IGdldF92bWNvcmVfc2l6ZV9lbGYzMihjaGFy ICplbGZwdHIsIHNpemVfdCBlbGZzeikKPiAgewo+ICAJaW50IGk7Cj4gIAl1NjQgc2l6ZTsKPiBA QCAtMjEyLDcgKzIxMyw3IEBAIHN0YXRpYyB1NjQgX19pbml0IGdldF92bWNvcmVfc2l6ZV9lbGYz MihjaGFyICplbGZwdHIpCj4gIAo+ICAJZWhkcl9wdHIgPSAoRWxmMzJfRWhkciAqKWVsZnB0cjsK PiAgCXBoZHJfcHRyID0gKEVsZjMyX1BoZHIqKShlbGZwdHIgKyBzaXplb2YoRWxmMzJfRWhkcikp Owo+IC0Jc2l6ZSA9IHNpemVvZihFbGYzMl9FaGRyKSArICgoZWhkcl9wdHItPmVfcGhudW0pICog c2l6ZW9mKEVsZjMyX1BoZHIpKTsKPiArCXNpemUgPSBlbGZzejsKPiAgCWZvciAoaSA9IDA7IGkg PCBlaGRyX3B0ci0+ZV9waG51bTsgaSsrKSB7Cj4gIAkJc2l6ZSArPSBwaGRyX3B0ci0+cF9tZW1z ejsKPiAgCQlwaGRyX3B0cisrOwo+IEBAIC0yODAsNyArMjgxLDcgQEAgc3RhdGljIGludCBfX2lu aXQgbWVyZ2Vfbm90ZV9oZWFkZXJzX2VsZjY0KGNoYXIgKmVsZnB0ciwgc2l6ZV90ICplbGZzeiwK PiAgCXBoZHIucF9mbGFncyAgID0gMDsKPiAgCW5vdGVfb2ZmID0gc2l6ZW9mKEVsZjY0X0VoZHIp ICsKPiAgCQkJKGVoZHJfcHRyLT5lX3BobnVtIC0gbnJfcHRub3RlICsxKSAqIHNpemVvZihFbGY2 NF9QaGRyKTsKPiAtCXBoZHIucF9vZmZzZXQgID0gbm90ZV9vZmY7Cj4gKwlwaGRyLnBfb2Zmc2V0 ICA9IHJvdW5kdXAobm90ZV9vZmYsIFBBR0VfU0laRSk7Cj4gIAlwaGRyLnBfdmFkZHIgICA9IHBo ZHIucF9wYWRkciA9IDA7Cj4gIAlwaGRyLnBfZmlsZXN6ICA9IHBoZHIucF9tZW1zeiA9IHBoZHJf c3o7Cj4gIAlwaGRyLnBfYWxpZ24gICA9IDA7Cj4gQEAgLTI5NCw2ICsyOTUsOCBAQCBzdGF0aWMg aW50IF9faW5pdCBtZXJnZV9ub3RlX2hlYWRlcnNfZWxmNjQoY2hhciAqZWxmcHRyLCBzaXplX3Qg KmVsZnN6LAo+ICAJaSA9IChucl9wdG5vdGUgLSAxKSAqIHNpemVvZihFbGY2NF9QaGRyKTsKPiAg CSplbGZzeiA9ICplbGZzeiAtIGk7Cj4gIAltZW1tb3ZlKHRtcCwgdG1wK2ksICgoKmVsZnN6KS1z aXplb2YoRWxmNjRfRWhkciktc2l6ZW9mKEVsZjY0X1BoZHIpKSk7Cj4gKwltZW1zZXQoZWxmcHRy ICsgKmVsZnN6LCAwLCBpKTsKPiArCSplbGZzeiA9IHJvdW5kdXAoKmVsZnN6LCBQQUdFX1NJWkUp Owo+ICAKPiAgCS8qIE1vZGlmeSBlX3BobnVtIHRvIHJlZmxlY3QgbWVyZ2VkIGhlYWRlcnMuICov Cj4gIAllaGRyX3B0ci0+ZV9waG51bSA9IGVoZHJfcHRyLT5lX3BobnVtIC0gbnJfcHRub3RlICsg MTsKPiBAQCAtMzYxLDcgKzM2NCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IG1lcmdlX25vdGVfaGVh ZGVyc19lbGYzMihjaGFyICplbGZwdHIsIHNpemVfdCAqZWxmc3osCj4gIAlwaGRyLnBfZmxhZ3Mg ICA9IDA7Cj4gIAlub3RlX29mZiA9IHNpemVvZihFbGYzMl9FaGRyKSArCj4gIAkJCShlaGRyX3B0 ci0+ZV9waG51bSAtIG5yX3B0bm90ZSArMSkgKiBzaXplb2YoRWxmMzJfUGhkcik7Cj4gLQlwaGRy LnBfb2Zmc2V0ICA9IG5vdGVfb2ZmOwo+ICsJcGhkci5wX29mZnNldCAgPSByb3VuZHVwKG5vdGVf b2ZmLCBQQUdFX1NJWkUpOwo+ICAJcGhkci5wX3ZhZGRyICAgPSBwaGRyLnBfcGFkZHIgPSAwOwo+ ICAJcGhkci5wX2ZpbGVzeiAgPSBwaGRyLnBfbWVtc3ogPSBwaGRyX3N6Owo+ICAJcGhkci5wX2Fs aWduICAgPSAwOwo+IEBAIC0zNzUsNiArMzc4LDggQEAgc3RhdGljIGludCBfX2luaXQgbWVyZ2Vf bm90ZV9oZWFkZXJzX2VsZjMyKGNoYXIgKmVsZnB0ciwgc2l6ZV90ICplbGZzeiwKPiAgCWkgPSAo bnJfcHRub3RlIC0gMSkgKiBzaXplb2YoRWxmMzJfUGhkcik7Cj4gIAkqZWxmc3ogPSAqZWxmc3og LSBpOwo+ICAJbWVtbW92ZSh0bXAsIHRtcCtpLCAoKCplbGZzeiktc2l6ZW9mKEVsZjMyX0VoZHIp LXNpemVvZihFbGYzMl9QaGRyKSkpOwo+ICsJbWVtc2V0KGVsZnB0ciArICplbGZzeiwgMCwgaSk7 Cj4gKwkqZWxmc3ogPSByb3VuZHVwKCplbGZzeiwgUEFHRV9TSVpFKTsKPiAgCj4gIAkvKiBNb2Rp ZnkgZV9waG51bSB0byByZWZsZWN0IG1lcmdlZCBoZWFkZXJzLiAqLwo+ICAJZWhkcl9wdHItPmVf cGhudW0gPSBlaGRyX3B0ci0+ZV9waG51bSAtIG5yX3B0bm90ZSArIDE7Cj4gQEAgLTM5OCw5ICs0 MDMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwcm9jZXNzX3B0bG9hZF9wcm9ncmFtX2hlYWRlcnNf ZWxmNjQoY2hhciAqZWxmcHRyLAo+ICAJcGhkcl9wdHIgPSAoRWxmNjRfUGhkciopKGVsZnB0ciAr IHNpemVvZihFbGY2NF9FaGRyKSk7IC8qIFBUX05PVEUgaGRyICovCj4gIAo+ICAJLyogRmlyc3Qg cHJvZ3JhbSBoZWFkZXIgaXMgUFRfTk9URSBoZWFkZXIuICovCj4gLQl2bWNvcmVfb2ZmID0gc2l6 ZW9mKEVsZjY0X0VoZHIpICsKPiAtCQkJKGVoZHJfcHRyLT5lX3BobnVtKSAqIHNpemVvZihFbGY2 NF9QaGRyKSArCj4gLQkJCXBoZHJfcHRyLT5wX21lbXN6OyAvKiBOb3RlIHNlY3Rpb25zICovCj4g Kwl2bWNvcmVfb2ZmID0gZWxmc3ogKyByb3VuZHVwKHBoZHJfcHRyLT5wX21lbXN6LCBQQUdFX1NJ WkUpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBlaGRyX3B0ci0+ZV9waG51bTsgaSsrLCBwaGRy X3B0cisrKSB7Cj4gIAkJaWYgKHBoZHJfcHRyLT5wX3R5cGUgIT0gUFRfTE9BRCkKPiBAQCAtNDM1 LDkgKzQzOCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHByb2Nlc3NfcHRsb2FkX3Byb2dyYW1faGVh ZGVyc19lbGYzMihjaGFyICplbGZwdHIsCj4gIAlwaGRyX3B0ciA9IChFbGYzMl9QaGRyKikoZWxm cHRyICsgc2l6ZW9mKEVsZjMyX0VoZHIpKTsgLyogUFRfTk9URSBoZHIgKi8KPiAgCj4gIAkvKiBG aXJzdCBwcm9ncmFtIGhlYWRlciBpcyBQVF9OT1RFIGhlYWRlci4gKi8KPiAtCXZtY29yZV9vZmYg PSBzaXplb2YoRWxmMzJfRWhkcikgKwo+IC0JCQkoZWhkcl9wdHItPmVfcGhudW0pICogc2l6ZW9m KEVsZjMyX1BoZHIpICsKPiAtCQkJcGhkcl9wdHItPnBfbWVtc3o7IC8qIE5vdGUgc2VjdGlvbnMg Ki8KPiArCXZtY29yZV9vZmYgPSBlbGZzeiArIHJvdW5kdXAocGhkcl9wdHItPnBfbWVtc3osIFBB R0VfU0laRSk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGVoZHJfcHRyLT5lX3BobnVtOyBpKyss IHBoZHJfcHRyKyspIHsKPiAgCQlpZiAocGhkcl9wdHItPnBfdHlwZSAhPSBQVF9MT0FEKQo+IEBA IC00NTksNyArNDYwLDcgQEAgc3RhdGljIGludCBfX2luaXQgcHJvY2Vzc19wdGxvYWRfcHJvZ3Jh bV9oZWFkZXJzX2VsZjMyKGNoYXIgKmVsZnB0ciwKPiAgfQo+ICAKPiAgLyogU2V0cyBvZmZzZXQg ZmllbGRzIG9mIHZtY29yZSBlbGVtZW50cy4gKi8KPiAtc3RhdGljIHZvaWQgX19pbml0IHNldF92 bWNvcmVfbGlzdF9vZmZzZXRzX2VsZjY0KGNoYXIgKmVsZnB0ciwKPiArc3RhdGljIHZvaWQgX19p bml0IHNldF92bWNvcmVfbGlzdF9vZmZzZXRzX2VsZjY0KGNoYXIgKmVsZnB0ciwgc2l6ZV90IGVs ZnN6LAo+ICAJCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICp2Y19saXN0KQo+ICB7Cj4gIAlsb2ZmX3Qg dm1jb3JlX29mZjsKPiBAQCAtNDY5LDggKzQ3MCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzZXRf dm1jb3JlX2xpc3Rfb2Zmc2V0c19lbGY2NChjaGFyICplbGZwdHIsCj4gIAllaGRyX3B0ciA9IChF bGY2NF9FaGRyICopZWxmcHRyOwo+ICAKPiAgCS8qIFNraXAgRWxmIGhlYWRlciBhbmQgcHJvZ3Jh bSBoZWFkZXJzLiAqLwo+IC0Jdm1jb3JlX29mZiA9IHNpemVvZihFbGY2NF9FaGRyKSArCj4gLQkJ CShlaGRyX3B0ci0+ZV9waG51bSkgKiBzaXplb2YoRWxmNjRfUGhkcik7Cj4gKwl2bWNvcmVfb2Zm ID0gZWxmc3o7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShtLCB2Y19saXN0LCBsaXN0KSB7 Cj4gIAkJbS0+b2Zmc2V0ID0gdm1jb3JlX29mZjsKPiBAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRp YyB2b2lkIF9faW5pdCBzZXRfdm1jb3JlX2xpc3Rfb2Zmc2V0c19lbGY2NChjaGFyICplbGZwdHIs Cj4gIH0KPiAgCj4gIC8qIFNldHMgb2Zmc2V0IGZpZWxkcyBvZiB2bWNvcmUgZWxlbWVudHMuICov Cj4gLXN0YXRpYyB2b2lkIF9faW5pdCBzZXRfdm1jb3JlX2xpc3Rfb2Zmc2V0c19lbGYzMihjaGFy ICplbGZwdHIsCj4gK3N0YXRpYyB2b2lkIF9faW5pdCBzZXRfdm1jb3JlX2xpc3Rfb2Zmc2V0c19l bGYzMihjaGFyICplbGZwdHIsIHNpemVfdCBlbGZzeiwKPiAgCQkJCQkJc3RydWN0IGxpc3RfaGVh ZCAqdmNfbGlzdCkKPiAgewo+ICAJbG9mZl90IHZtY29yZV9vZmY7Cj4gQEAgLTQ4OSw4ICs0ODks NyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc2V0X3ZtY29yZV9saXN0X29mZnNldHNfZWxmMzIoY2hh ciAqZWxmcHRyLAo+ICAJZWhkcl9wdHIgPSAoRWxmMzJfRWhkciAqKWVsZnB0cjsKPiAgCj4gIAkv KiBTa2lwIEVsZiBoZWFkZXIgYW5kIHByb2dyYW0gaGVhZGVycy4gKi8KPiAtCXZtY29yZV9vZmYg PSBzaXplb2YoRWxmMzJfRWhkcikgKwo+IC0JCQkoZWhkcl9wdHItPmVfcGhudW0pICogc2l6ZW9m KEVsZjMyX1BoZHIpOwo+ICsJdm1jb3JlX29mZiA9IGVsZnN6Owo+ICAKPiAgCWxpc3RfZm9yX2Vh Y2hfZW50cnkobSwgdmNfbGlzdCwgbGlzdCkgewo+ICAJCW0tPm9mZnNldCA9IHZtY29yZV9vZmY7 Cj4gQEAgLTUyNiwzMCArNTI1LDM1IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX2NyYXNoX2Vs ZjY0X2hlYWRlcnModm9pZCkKPiAgCX0KPiAgCj4gIAkvKiBSZWFkIGluIGFsbCBlbGYgaGVhZGVy cy4gKi8KPiAtCWVsZmNvcmVidWZfc3ogPSBzaXplb2YoRWxmNjRfRWhkcikgKyBlaGRyLmVfcGhu dW0gKiBzaXplb2YoRWxmNjRfUGhkcik7Cj4gLQllbGZjb3JlYnVmID0ga21hbGxvYyhlbGZjb3Jl YnVmX3N6LCBHRlBfS0VSTkVMKTsKPiArCWVsZmNvcmVidWZfc3pfb3JpZyA9IHNpemVvZihFbGY2 NF9FaGRyKSArIGVoZHIuZV9waG51bSAqIHNpemVvZihFbGY2NF9QaGRyKTsKPiArCWVsZmNvcmVi dWZfc3ogPSBlbGZjb3JlYnVmX3N6X29yaWc7Cj4gKwllbGZjb3JlYnVmID0gKHZvaWQgKikgX19n ZXRfZnJlZV9wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTywKPiArCQkJCQkgICAgICAgZ2V0 X29yZGVyKGVsZmNvcmVidWZfc3pfb3JpZykpOwo+ICAJaWYgKCFlbGZjb3JlYnVmKQo+ICAJCXJl dHVybiAtRU5PTUVNOwo+ICAJYWRkciA9IGVsZmNvcmVoZHJfYWRkcjsKPiAtCXJjID0gcmVhZF9m cm9tX29sZG1lbShlbGZjb3JlYnVmLCBlbGZjb3JlYnVmX3N6LCAmYWRkciwgMCk7Cj4gKwlyYyA9 IHJlYWRfZnJvbV9vbGRtZW0oZWxmY29yZWJ1ZiwgZWxmY29yZWJ1Zl9zel9vcmlnLCAmYWRkciwg MCk7Cj4gIAlpZiAocmMgPCAwKSB7Cj4gLQkJa2ZyZWUoZWxmY29yZWJ1Zik7Cj4gKwkJZnJlZV9w YWdlcygodW5zaWduZWQgbG9uZyllbGZjb3JlYnVmLAo+ICsJCQkgICBnZXRfb3JkZXIoZWxmY29y ZWJ1Zl9zel9vcmlnKSk7Cj4gIAkJcmV0dXJuIHJjOwo+ICAJfQo+ICAKPiAgCS8qIE1lcmdlIGFs bCBQVF9OT1RFIGhlYWRlcnMgaW50byBvbmUuICovCj4gIAlyYyA9IG1lcmdlX25vdGVfaGVhZGVy c19lbGY2NChlbGZjb3JlYnVmLCAmZWxmY29yZWJ1Zl9zeiwgJnZtY29yZV9saXN0KTsKPiAgCWlm IChyYykgewo+IC0JCWtmcmVlKGVsZmNvcmVidWYpOwo+ICsJCWZyZWVfcGFnZXMoKHVuc2lnbmVk IGxvbmcpZWxmY29yZWJ1ZiwKPiArCQkJICAgZ2V0X29yZGVyKGVsZmNvcmVidWZfc3pfb3JpZykp Owo+ICAJCXJldHVybiByYzsKPiAgCX0KPiAgCXJjID0gcHJvY2Vzc19wdGxvYWRfcHJvZ3JhbV9o ZWFkZXJzX2VsZjY0KGVsZmNvcmVidWYsIGVsZmNvcmVidWZfc3osCj4gIAkJCQkJCQkmdm1jb3Jl X2xpc3QpOwo+ICAJaWYgKHJjKSB7Cj4gLQkJa2ZyZWUoZWxmY29yZWJ1Zik7Cj4gKwkJZnJlZV9w YWdlcygodW5zaWduZWQgbG9uZyllbGZjb3JlYnVmLAo+ICsJCQkgICBnZXRfb3JkZXIoZWxmY29y ZWJ1Zl9zel9vcmlnKSk7Cj4gIAkJcmV0dXJuIHJjOwo+ICAJfQo+IC0Jc2V0X3ZtY29yZV9saXN0 X29mZnNldHNfZWxmNjQoZWxmY29yZWJ1ZiwgJnZtY29yZV9saXN0KTsKPiArCXNldF92bWNvcmVf bGlzdF9vZmZzZXRzX2VsZjY0KGVsZmNvcmVidWYsIGVsZmNvcmVidWZfc3osICZ2bWNvcmVfbGlz dCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtNTgxLDMwICs1ODUsMzUgQEAgc3RhdGlj IGludCBfX2luaXQgcGFyc2VfY3Jhc2hfZWxmMzJfaGVhZGVycyh2b2lkKQo+ICAJfQo+ICAKPiAg CS8qIFJlYWQgaW4gYWxsIGVsZiBoZWFkZXJzLiAqLwo+IC0JZWxmY29yZWJ1Zl9zeiA9IHNpemVv ZihFbGYzMl9FaGRyKSArIGVoZHIuZV9waG51bSAqIHNpemVvZihFbGYzMl9QaGRyKTsKPiAtCWVs ZmNvcmVidWYgPSBrbWFsbG9jKGVsZmNvcmVidWZfc3osIEdGUF9LRVJORUwpOwo+ICsJZWxmY29y ZWJ1Zl9zel9vcmlnID0gc2l6ZW9mKEVsZjMyX0VoZHIpICsgZWhkci5lX3BobnVtICogc2l6ZW9m KEVsZjMyX1BoZHIpOwo+ICsJZWxmY29yZWJ1Zl9zeiA9IGVsZmNvcmVidWZfc3pfb3JpZzsKPiAr CWVsZmNvcmVidWYgPSAodm9pZCAqKSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dG UF9aRVJPLAo+ICsJCQkJCSAgICAgICBnZXRfb3JkZXIoZWxmY29yZWJ1Zl9zel9vcmlnKSk7Cj4g IAlpZiAoIWVsZmNvcmVidWYpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAlhZGRyID0gZWxmY29y ZWhkcl9hZGRyOwo+IC0JcmMgPSByZWFkX2Zyb21fb2xkbWVtKGVsZmNvcmVidWYsIGVsZmNvcmVi dWZfc3osICZhZGRyLCAwKTsKPiArCXJjID0gcmVhZF9mcm9tX29sZG1lbShlbGZjb3JlYnVmLCBl bGZjb3JlYnVmX3N6X29yaWcsICZhZGRyLCAwKTsKPiAgCWlmIChyYyA8IDApIHsKPiAtCQlrZnJl ZShlbGZjb3JlYnVmKTsKPiArCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWVsZmNvcmVidWYs Cj4gKwkJCSAgIGdldF9vcmRlcihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCQlyZXR1cm4gcmM7 Cj4gIAl9Cj4gIAo+ICAJLyogTWVyZ2UgYWxsIFBUX05PVEUgaGVhZGVycyBpbnRvIG9uZS4gKi8K PiAgCXJjID0gbWVyZ2Vfbm90ZV9oZWFkZXJzX2VsZjMyKGVsZmNvcmVidWYsICZlbGZjb3JlYnVm X3N6LCAmdm1jb3JlX2xpc3QpOwo+ICAJaWYgKHJjKSB7Cj4gLQkJa2ZyZWUoZWxmY29yZWJ1Zik7 Cj4gKwkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyllbGZjb3JlYnVmLAo+ICsJCQkgICBnZXRf b3JkZXIoZWxmY29yZWJ1Zl9zel9vcmlnKSk7Cj4gIAkJcmV0dXJuIHJjOwo+ICAJfQo+ICAJcmMg PSBwcm9jZXNzX3B0bG9hZF9wcm9ncmFtX2hlYWRlcnNfZWxmMzIoZWxmY29yZWJ1ZiwgZWxmY29y ZWJ1Zl9zeiwKPiAgCQkJCQkJCQkmdm1jb3JlX2xpc3QpOwo+ICAJaWYgKHJjKSB7Cj4gLQkJa2Zy ZWUoZWxmY29yZWJ1Zik7Cj4gKwkJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyllbGZjb3JlYnVm LAo+ICsJCQkgICBnZXRfb3JkZXIoZWxmY29yZWJ1Zl9zel9vcmlnKSk7Cj4gIAkJcmV0dXJuIHJj Owo+ICAJfQo+IC0Jc2V0X3ZtY29yZV9saXN0X29mZnNldHNfZWxmMzIoZWxmY29yZWJ1ZiwgJnZt Y29yZV9saXN0KTsKPiArCXNldF92bWNvcmVfbGlzdF9vZmZzZXRzX2VsZjMyKGVsZmNvcmVidWYs IGVsZmNvcmVidWZfc3osICZ2bWNvcmVfbGlzdCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBA QCAtNjI5LDE0ICs2MzgsMTQgQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfY3Jhc2hfZWxmX2hl YWRlcnModm9pZCkKPiAgCQkJcmV0dXJuIHJjOwo+ICAKPiAgCQkvKiBEZXRlcm1pbmUgdm1jb3Jl IHNpemUuICovCj4gLQkJdm1jb3JlX3NpemUgPSBnZXRfdm1jb3JlX3NpemVfZWxmNjQoZWxmY29y ZWJ1Zik7Cj4gKwkJdm1jb3JlX3NpemUgPSBnZXRfdm1jb3JlX3NpemVfZWxmNjQoZWxmY29yZWJ1 ZiwgZWxmY29yZWJ1Zl9zeik7Cj4gIAl9IGVsc2UgaWYgKGVfaWRlbnRbRUlfQ0xBU1NdID09IEVM RkNMQVNTMzIpIHsKPiAgCQlyYyA9IHBhcnNlX2NyYXNoX2VsZjMyX2hlYWRlcnMoKTsKPiAgCQlp ZiAocmMpCj4gIAkJCXJldHVybiByYzsKPiAgCj4gIAkJLyogRGV0ZXJtaW5lIHZtY29yZSBzaXpl LiAqLwo+IC0JCXZtY29yZV9zaXplID0gZ2V0X3ZtY29yZV9zaXplX2VsZjMyKGVsZmNvcmVidWYp Owo+ICsJCXZtY29yZV9zaXplID0gZ2V0X3ZtY29yZV9zaXplX2VsZjMyKGVsZmNvcmVidWYsIGVs ZmNvcmVidWZfc3opOwo+ICAJfSBlbHNlIHsKPiAgCQlwcl93YXJuKCJXYXJuaW5nOiBDb3JlIGlt YWdlIGVsZiBoZWFkZXIgaXMgbm90IHNhbmVcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBA IC02ODMsNyArNjkyLDggQEAgdm9pZCB2bWNvcmVfY2xlYW51cCh2b2lkKQo+ICAJCWxpc3RfZGVs KCZtLT5saXN0KTsKPiAgCQlrZnJlZShtKTsKPiAgCX0KPiAtCWtmcmVlKGVsZmNvcmVidWYpOwo+ ICsJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyllbGZjb3JlYnVmLAo+ICsJCSAgIGdldF9vcmRl cihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCWVsZmNvcmVidWYgPSBOVUxMOwo+ICB9Cj4gIEVY UE9SVF9TWU1CT0xfR1BMKHZtY29yZV9jbGVhbnVwKTsKPiAKPiAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2tleGVjCg==