From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.skyhub.de ([2a01:4f8:120:8448::d00d]) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vlfmd-0004IT-RU for kexec@lists.infradead.org; Wed, 27 Nov 2013 14:08:06 +0000 Date: Wed, 27 Nov 2013 15:07:32 +0100 From: Borislav Petkov Subject: Re: [PATCH v4 07/12] efi: passing kexec necessary efi data via setup_data Message-ID: <20131127140732.GD32267@pd.tnic> References: <1385445477-9665-1-git-send-email-dyoung@redhat.com> <1385445477-9665-8-git-send-email-dyoung@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1385445477-9665-8-git-send-email-dyoung@redhat.com> 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: Dave Young Cc: mjg59@srcf.ucam.org, linux-efi@vger.kernel.org, toshi.kani@hp.com, matt@console-pimps.org, greg@kroah.com, x86@kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, James.Bottomley@HansenPartnership.com, horms@verge.net.au, ebiederm@xmission.com, hpa@zytor.com, vgoyal@redhat.com T24gVHVlLCBOb3YgMjYsIDIwMTMgYXQgMDE6NTc6NTJQTSArMDgwMCwgRGF2ZSBZb3VuZyB3cm90 ZToKPiBBZGQgYSBuZXcgc2V0dXBfZGF0YSB0eXBlIFNFVFVQX0VGSSBmb3Iga2V4ZWMgdXNlLgo+ IFBhc3NpbmcgdGhlIHNhdmVkIGZ3X3ZlbmRvciwgcnVudGltZSwgY29uZmlnIHRhYmxlcyBhbmQK PiBlZmkgcnVudGltZSBtYXBwaW5ncy4KPiAKPiBXaGVuIGVudGVyaW5nIHZpcnR1YWwgbW9kZSwg ZGlyZWN0bHkgbWFwcGluZyB0aGUgZWZpCj4gcnVudGltZSByYWdpb25zIHdoaWNoIHdlIHBhc3Nl ZCBpbiBwcmV2aW91c2x5LiBBbmQgc2tpcAo+IHRoZSBzdGVwIHRvIGNhbGwgU2V0VmlydHVhbEFk ZHJlc3NNYXAuCj4gCj4gU3BlY2lhbGx5IGZvciBIUCB6NDIwIHdvcmtzdGF0aW9uIGl0IG5lZWQg YW5vdGhlciB2YXJpYWJsZQo+IHNhdmluZywKCldoeSB0aGUgc3BlY2lhbCBoYW5kbGluZz8gRG9l cyB0aGF0IG1lYW4sIHRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGNhc2UKZm9yIG90aGVyIEhQIFVF RkkgaW1wbGVtZW50YXRpb25zIHRvbz8KCj4gaXQncyB0aGUgc21iaW9zIHBoeXNpY2FsIGFkZHJl c3MsIHRoZSBIUCBiaW9zCj4gYWxzbyB1cGRhdGUgdGhlIFNNQklPUyBhZGRyZXNzIGFmdGVyIGVu dGVyaW5nIHZpcnR1YWwgbW9kZQo+IGJlc2lkZXMgb2YgdGhlIHN0YW5kYXJkIGZ3X3ZlbmRvcixy dW50aW1lIGFuZCBjb25maWcgdGFibGUuCj4gCj4gVGVzdGVkIG9uIG92bWYrcWVtdSwgbGVub3Zv IHRoaW5rcGFkLCBhIGRlbGwgbGFwdG9wIGFuZCBhbgo+IEhQIHo0MjAgd29ya3N0YXRpb24uCj4g Cj4gdjI6IHJlZnJlc2ggYmFzZWQgb24gcHJldmlvdXMgcGF0Y2ggY2hhbmdlcywgY29kZSBjbGVh bnVwLgo+IHYzOiB1c2UgaW9yZW1hcCBpbnN0ZWFkIG9mIHBoeXNfdG9fdmlydCBmb3IgZXNkYXRh Cj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBZb3VuZyA8ZHlvdW5nQHJlZGhhdC5jb20+Cj4gLS0t Cj4gIGFyY2gveDg2L2luY2x1ZGUvYXNtL2VmaS5oICAgICAgICAgICAgfCAgMTIgKysrCj4gIGFy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmggfCAgIDEgKwo+ICBhcmNoL3g4Ni9r ZXJuZWwvc2V0dXAuYyAgICAgICAgICAgICAgIHwgICAzICsKPiAgYXJjaC94ODYvcGxhdGZvcm0v ZWZpL2VmaS5jICAgICAgICAgICB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTYwIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lZmkuaCBiL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2VmaS5oCj4gaW5kZXggOWZiYWViMi4uNzNkNTY0MyAxMDA2NDQKPiAtLS0g YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lZmkuaAo+ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNt L2VmaS5oCj4gQEAgLTEzMyw2ICsxMzMsMTggQEAgZXh0ZXJuIHZvaWQgZWZpX3N5bmNfbG93X2tl cm5lbF9tYXBwaW5ncyh2b2lkKTsKPiAgZXh0ZXJuIHZvaWQgZWZpX3NldHVwX3BhZ2VfdGFibGVz KHZvaWQpOwo+ICBleHRlcm4gdm9pZCBfX2luaXQgb2xkX21hcF9yZWdpb24oZWZpX21lbW9yeV9k ZXNjX3QgKm1kKTsKPiAgCj4gK3N0cnVjdCBlZmlfc2V0dXBfZGF0YSB7Cj4gKwl1NjQgZndfdmVu ZG9yOwo+ICsJdTY0IHJ1bnRpbWU7Cj4gKwl1NjQgdGFibGVzOwo+ICsJdTY0IHNtYmlvczsKPiAr CXU2NCByZXNlcnZlZFs4XTsKCldoYXQncyB0aGF0IGZvcj8KCj4gKwllZmlfbWVtb3J5X2Rlc2Nf dCBtYXBbMF07Cj4gK307Cj4gKwo+ICtleHRlcm4gdm9pZCBwYXJzZV9lZmlfc2V0dXAodTY0IHBo eXNfYWRkciwgdTMyIGRhdGFfbGVuKTsKPiArZXh0ZXJuIHN0cnVjdCBlZmlfc2V0dXBfZGF0YSAq ZXNkYXRhOwo+ICsKPiAgI2lmZGVmIENPTkZJR19FRkkKPiAgCj4gIHN0YXRpYyBpbmxpbmUgYm9v bCBlZmlfaXNfbmF0aXZlKHZvaWQpCgpbIOKApiBdCgo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9w bGF0Zm9ybS9lZmkvZWZpLmMgYi9hcmNoL3g4Ni9wbGF0Zm9ybS9lZmkvZWZpLmMKPiBpbmRleCBj M2EyYWFhLi5mYWZlYjQwIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmku Ywo+ICsrKyBiL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmkuYwo+IEBAIC01MDQsOCArNTMxLDEy IEBAIHN0YXRpYyBpbnQgX19pbml0IGVmaV9zeXN0YWJfaW5pdCh2b2lkICpwaHlzKQo+ICAJCX0K PiAgCj4gIAkJZWZpX3N5c3RhYi5oZHIgPSBzeXN0YWI2NC0+aGRyOwo+IC0JCWVmaV9zeXN0YWIu ZndfdmVuZG9yID0gc3lzdGFiNjQtPmZ3X3ZlbmRvcjsKPiAtCQl0bXAgfD0gc3lzdGFiNjQtPmZ3 X3ZlbmRvcjsKPiArCj4gKwkJaWYgKGVzZGF0YSkKPiArCQkJZWZpX3N5c3RhYi5md192ZW5kb3Ig PSAodW5zaWduZWQgbG9uZyllc2RhdGEtPmZ3X3ZlbmRvcjsKPiArCQllbHNlCj4gKwkJCWVmaV9z eXN0YWIuZndfdmVuZG9yID0gc3lzdGFiNjQtPmZ3X3ZlbmRvcjsKCgkJZWZpX3N5c3RhYi5md192 ZW5kb3IgPSBlc2RhdGEgPyAodW5zaWduZWQgbG9uZyllc2RhdGEtPmZ3X3ZlbmRvcgoJCQkJCSAg ICAgIDogc3lzdGFiNjQtPmZ3X3ZlbmRvcjsKCj4gKwkJdG1wIHw9IGVmaV9zeXN0YWIuZndfdmVu ZG9yOwo+ICAJCWVmaV9zeXN0YWIuZndfcmV2aXNpb24gPSBzeXN0YWI2NC0+ZndfcmV2aXNpb247 Cj4gIAkJZWZpX3N5c3RhYi5jb25faW5faGFuZGxlID0gc3lzdGFiNjQtPmNvbl9pbl9oYW5kbGU7 Cj4gIAkJdG1wIHw9IHN5c3RhYjY0LT5jb25faW5faGFuZGxlOwo+IEBAIC01MTksMTMgKzU1MCwy MSBAQCBzdGF0aWMgaW50IF9faW5pdCBlZmlfc3lzdGFiX2luaXQodm9pZCAqcGh5cykKPiAgCQl0 bXAgfD0gc3lzdGFiNjQtPnN0ZGVycl9oYW5kbGU7Cj4gIAkJZWZpX3N5c3RhYi5zdGRlcnIgPSBz eXN0YWI2NC0+c3RkZXJyOwo+ICAJCXRtcCB8PSBzeXN0YWI2NC0+c3RkZXJyOwo+IC0JCWVmaV9z eXN0YWIucnVudGltZSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpc3lzdGFiNjQtPnJ1bnRpbWU7 Cj4gLQkJdG1wIHw9IHN5c3RhYjY0LT5ydW50aW1lOwo+ICsJCWlmIChlc2RhdGEpCj4gKwkJCWVm aV9zeXN0YWIucnVudGltZSA9Cj4gKwkJCQkodm9pZCAqKSh1bnNpZ25lZCBsb25nKWVzZGF0YS0+ cnVudGltZTsKPiArCQllbHNlCj4gKwkJCWVmaV9zeXN0YWIucnVudGltZSA9Cj4gKwkJCQkodm9p ZCAqKSh1bnNpZ25lZCBsb25nKXN5c3RhYjY0LT5ydW50aW1lOwoKRGl0dG8uIFdoaWNoIHdvdWxk IHRha2UgY2FyZSBvZiB0aGVzZSBsaW5lYnJlYWtzIHdoaWNoIGFyZSB1Z2x5LgoKPiArCQl0bXAg fD0gKHVuc2lnbmVkIGxvbmcpZWZpX3N5c3RhYi5ydW50aW1lOwo+ICAJCWVmaV9zeXN0YWIuYm9v dHRpbWUgPSAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXN5c3RhYjY0LT5ib290dGltZTsKPiAgCQl0 bXAgfD0gc3lzdGFiNjQtPmJvb3R0aW1lOwo+ICAJCWVmaV9zeXN0YWIubnJfdGFibGVzID0gc3lz dGFiNjQtPm5yX3RhYmxlczsKPiAtCQllZmlfc3lzdGFiLnRhYmxlcyA9IHN5c3RhYjY0LT50YWJs ZXM7Cj4gLQkJdG1wIHw9IHN5c3RhYjY0LT50YWJsZXM7Cj4gKwkJaWYgKGVzZGF0YSkKPiArCQkJ ZWZpX3N5c3RhYi50YWJsZXMgPSAodW5zaWduZWQgbG9uZyllc2RhdGEtPnRhYmxlczsKPiArCQll bHNlCj4gKwkJCWVmaV9zeXN0YWIudGFibGVzID0gc3lzdGFiNjQtPnRhYmxlczsKCkRpdHRvLgoK PiArCQl0bXAgfD0gZWZpX3N5c3RhYi50YWJsZXM7Cj4gIAo+ICAJCWVhcmx5X2lvdW5tYXAoc3lz dGFiNjQsIHNpemVvZigqc3lzdGFiNjQpKTsKPiAgI2lmZGVmIENPTkZJR19YODZfMzIKPiBAQCAt NjMxLDYgKzY3MCw0MSBAQCBzdGF0aWMgaW50IF9faW5pdCBlZmlfbWVtbWFwX2luaXQodm9pZCkK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IF9faW5pdCBlZmlfcmV1c2VfY29u ZmlnKHU2NCB0YWJsZXMsIGludCBucl90YWJsZXMpCgpTdGF0aWMgZnVuY3Rpb24gLSBubyBuZWVk IGZvciAiZWZpXyIgcHJlZml4LgoKPiArewo+ICsJdm9pZCAqcCwgKnRhYmxlcDsKPiArCWludCBp LCBzejsKPiArCj4gKwlpZiAoIWVmaV9lbmFibGVkKEVGSV82NEJJVCkpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJc3ogPSBzaXplb2YoZWZpX2NvbmZpZ190YWJsZV82NF90KTsKPiArCj4gKwlwID0g dGFibGVwID0gZWFybHlfbWVtcmVtYXAodGFibGVzLCBucl90YWJsZXMgKiBzeik7Cj4gKwlpZiAo IXApIHsKPiArCQlwcl9lcnIoIkNvdWxkIG5vdCBtYXAgQ29uZmlndXJhdGlvbiB0YWJsZSFcbiIp Owo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBlZmku c3lzdGFiLT5ucl90YWJsZXM7IGkrKykgewo+ICsJCWVmaV9ndWlkX3QgZ3VpZDsKPiArCj4gKwkJ Z3VpZCA9ICgoZWZpX2NvbmZpZ190YWJsZV82NF90ICopcCktPmd1aWQ7Cj4gKwo+ICsJCS8qCj4g KwkJSFAgejQyMCB3b3Jrc3RhdGlvbiBzbWJpb3Mgd2lsbCBiZSBjb252ZXJ0IHRvCj4gKwkJdmly dHVhbCBhZGRyZXNzIGFmdGVyIGVudGVyIHZpcnR1YWwgbW9kZS4KPiArCQlUaHVzIGluIGNhc2Ug a2V4ZWMva2R1bXAgdGhlIHBoeXNpY2FsIGFkZHJlc3MKPiArCQl3aWxsIGJlIHBhc3NlZCBpbiBz ZXR1cF9kYXRhLgoKSXMgdGhhdCB3aGF0IHRoZSBjb21taXQgbWVzc2FnZSBhYm92ZSBzYXlzPyBJ J20gaGF2aW5nIGEgaGFyZCB0aW1lCnBhcnNpbmcgdGhpcyB0ZXh0LgoKPiArCQkqLwo+ICsJCWlm ICghZWZpX2d1aWRjbXAoZ3VpZCwgU01CSU9TX1RBQkxFX0dVSUQpKQo+ICsJCQkoKGVmaV9jb25m aWdfdGFibGVfNjRfdCAqKXApLT50YWJsZSA9IGVzZGF0YS0+c21iaW9zOwoKLi4uYW5kIHlldCB3 ZSBkbyB0aGlzIGZvciAqZXZlcnkqIFVFRkkgYm94LiBXaHkgbm90IEhQIG9ubHk/Cgo+ICsJCXAg Kz0gc3o7Cj4gKwl9Cj4gKwllYXJseV9pb3VubWFwKHRhYmxlcCwgbnJfdGFibGVzICogc3opOwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHZvaWQgX19pbml0IGVmaV9pbml0KHZvaWQpCj4gIHsK PiAgCWVmaV9jaGFyMTZfdCAqYzE2Owo+IEBAIC02NzYsNiArNzUwLDkgQEAgdm9pZCBfX2luaXQg ZWZpX2luaXQodm9pZCkKPiAgCQllZmkuc3lzdGFiLT5oZHIucmV2aXNpb24gPj4gMTYsCj4gIAkJ ZWZpLnN5c3RhYi0+aGRyLnJldmlzaW9uICYgMHhmZmZmLCB2ZW5kb3IpOwo+ICAKPiArCWlmIChl c2RhdGEgJiYgZXNkYXRhLT5zbWJpb3MpCj4gKwkJZWZpX3JldXNlX2NvbmZpZyhlZmkuc3lzdGFi LT50YWJsZXMsIGVmaS5zeXN0YWItPm5yX3RhYmxlcyk7Cj4gKwo+ICAJaWYgKGVmaV9jb25maWdf aW5pdChhcmNoX3RhYmxlcykpCj4gIAkJcmV0dXJuOwo+ICAKPiBAQCAtODg2LDYgKzk2Myw0MyBA QCByZXQ6Cj4gIH0KPiAgCj4gIC8qCj4gKyAqIG1hcCBlZmkgcmVnaW9ucyB3aGljaCB3YXMgcGFz c2VkIHZpYSBzZXR1cF9kYXRhCj4gKyAqIHRoZSB2aXJ0X2FkZHIgaXMgYSBmaXhlZCBhZGRyIHdo aWNoIHdhcyB1c2VkIGluCj4gKyAqIDFzdCBrZXJuZWwgb2Yga2V4ZWMgYm9vdC4KPiArICovCgpD b21tZW50IHRvIDgwIGNvbHMgcGxzLgoKPiArc3RhdGljIHZvaWQgX19pbml0IGVmaV9tYXBfcmVn aW9uc19maXhlZCh2b2lkKQoKQWxzbyBubyBuZWVkIGZvciAiZWZpXyIgcHJlZml4IGhlcmUuCgo+ ICt7Cj4gKwlpbnQgaTsKPiArCXVuc2lnbmVkIGxvbmcgc2l6ZTsKPiArCWVmaV9tZW1vcnlfZGVz Y190ICptZDsKPiArCXU2NCBlbmQsIHN5c3RhYjsKPiArCXZvaWQgKnA7Cj4gKwo+ICsJZWZpX3J1 bnRpbWVfbWFwID0ga3phbGxvYyhucl9lZmlfcnVudGltZV9tYXAgKiBtZW1tYXAuZGVzY19zaXpl LAo+ICsJCQkJR0ZQX0tFUk5FTCk7CgpBcmcgYWxpZ25tZW50LgoKPiArCWlmICghZWZpX3J1bnRp bWVfbWFwKQo+ICsJCXByX2VycigiT3V0IG9mIG1lbW9yeSwgRUZJIHJ1bnRpbWUgb24gbmVzdGVk IGtleGVjIG5vbi1mdW5jdGlvbmFsIVxuIik7Cj4gKwo+ICsJZm9yIChpID0gMCwgcCA9IGVmaV9y dW50aW1lX21hcDsgaSA8IG5yX2VmaV9ydW50aW1lX21hcDsgaSsrKSB7Cj4gKwkJbWQgPSBlc2Rh dGEtPm1hcCArIGk7Cj4gKwkJZWZpX21hcF9yZWdpb25fZml4ZWQobWQpOwoKR2FhaCwgdGhpcyBm dW5jdGlvbiBzaG91bGQgcHJvYmFibHkgaGF2ZSBhIHJldHZhbCB3aGljaCBzaWduYWxpemVzCnN1 Y2Nlc3MvZmFpbHVyZS4gRm9yIHRoYXQgSSBzaG91bGQgcHJvYmFibHkgdGVhY2ggX19tYXBfcmVn aW9uIHRvIGRvCnRoYXQgdG9vLiBPbiB0aGUgVE9ETyBsaXN0LgoKPiArCQlzaXplID0gbWQtPm51 bV9wYWdlcyA8PCBQQUdFX1NISUZUOwo+ICsJCWVuZCA9IG1kLT5waHlzX2FkZHIgKyBzaXplOwo+ ICsKPiArCQlzeXN0YWIgPSAodTY0KSAodW5zaWduZWQgbG9uZykgZWZpX3BoeXMuc3lzdGFiOwo+ ICsJCWlmIChtZC0+cGh5c19hZGRyIDw9IHN5c3RhYiAmJiBzeXN0YWIgPCBlbmQpIHsKPiArCQkJ c3lzdGFiICs9IG1kLT52aXJ0X2FkZHIgLSBtZC0+cGh5c19hZGRyOwo+ICsJCQllZmkuc3lzdGFi ID0KPiArCQkJCShlZmlfc3lzdGVtX3RhYmxlX3QgKikgKHVuc2lnbmVkIGxvbmcpIHN5c3RhYjsK CkNIRUNLOiBObyBzcGFjZSBpcyBuZWNlc3NhcnkgYWZ0ZXIgYSBjYXN0CiMyMTk6IEZJTEU6IGFy Y2gveDg2L3BsYXRmb3JtL2VmaS9lZmkuYzo5OTM6CisgICAgICAgICAgICAgICAgICAgICAgIGVm aS5zeXN0YWIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZmlfc3lzdGVtX3Rh YmxlX3QgKikgKHVuc2lnbmVkIGxvbmcpIHN5c3RhYjsKCgpBbmQgYWxzbywgdGhvc2UgYnJva2Vu IGxpbmVzIGFyZSB1Z2x5LiBKdXN0IGxldCBpdCBzdGljayBvdXQgb3ZlciA4MCBjb2xzLgoKPiAr CQl9Cj4gKwkJaWYgKGVmaV9ydW50aW1lX21hcCkgewo+ICsJCQltZW1jcHkocCwgbWQsIG1lbW1h cC5kZXNjX3NpemUpOwo+ICsJCQlwICs9IG1lbW1hcC5kZXNjX3NpemU7Cj4gKwkJfQo+ICsJfQo+ ICt9Cj4gKwo+ICsvKgo+ICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc3dpdGNoIHRoZSBFRkkgcnVu dGltZSBzZXJ2aWNlcyB0byB2aXJ0dWFsIG1vZGUuCj4gICAqIEVzc2VudGlhbGx5LCB3ZSBsb29r IHRocm91Z2ggdGhlIEVGSSBtZW1tYXAgYW5kIG1hcCBldmVyeSByZWdpb24gdGhhdAo+ICAgKiBo YXMgdGhlIHJ1bnRpbWUgYXR0cmlidXRlIGJpdCBzZXQgaW4gaXRzIG1lbW9yeSBkZXNjcmlwdG9y IGludG8gdGhlCj4gQEAgLTkwMSw2ICsxMDE1LDEwIEBAIHJldDoKPiAgICogc28gdGhhdCB3ZSdy ZSBpbiBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIHdoZW4gY2FsbGluZyBhIHJ1bnRpbWUKPiAg ICogZnVuY3Rpb24uIEZvciBmdW5jdGlvbiBhcmd1bWVudHMgcGFzc2luZyB3ZSBkbyBjb3B5IHRo ZSBQR0RzIG9mIHRoZQo+ICAgKiBrZXJuZWwgcGFnZSB0YWJsZSBpbnRvIC0+dHJhbXBvbGluZV9w Z2QgcHJpb3IgdG8gZWFjaCBjYWxsLgo+ICsgKgo+ICsgKiBTcGVjaWFsbHkgZm9yIGtleGVjIGJv b3QgZWZpIHJ1bnRpbWUgbWFwcyBpbiBwcmV2aW91cyBrZXJuZWwgc2hvdWxkCgoJCQkgIGJvb3Qs IC4uLgoKPiArICogYmUgcGFzc2VkIGluIHZpYSBzZXR1cF9kYXRhLiBJbiB0aGF0IGNhc2UgcnVu dGltZSByYW5nZXMgd2lsbCBiZSBtYXBwZWQKCgkJCQkJICAgY2FzZSwgLi4uCgo+ICsgKiB0byBm aXhlZCB2aXJ0dWFsIGFkZHJlc3NlcyBleGFjdGx5IHNhbWUgYXMgdGhlIG9uZXMgaW4gcHJldmlv dXMga2VybmVsLgoKIi4uLiB0byB0aGUgc2FtZSB2aXJ0dWFsIGFkZHJlc3NlcyBhcyB0aGUgZmly c3Qga2VybmVsLiIKCj4gICAqLwo+ICB2b2lkIF9faW5pdCBlZmlfZW50ZXJfdmlydHVhbF9tb2Rl KHZvaWQpCj4gIHsKPiBAQCAtOTE5LDEyICsxMDM3LDE1IEBAIHZvaWQgX19pbml0IGVmaV9lbnRl cl92aXJ0dWFsX21vZGUodm9pZCkKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JZWZpX21lcmdl X3JlZ2lvbnMoKTsKPiAtCj4gLQluZXdfbWVtbWFwID0gZWZpX21hcF9yZWdpb25zKCZjb3VudCk7 Cj4gLQlpZiAoIW5ld19tZW1tYXApIHsKPiAtCQlwcl9lcnIoIkVycm9yIHJlYWxsb2NhdGluZyBt ZW1vcnksIEVGSSBydW50aW1lIG5vbi1mdW5jdGlvbmFsIVxuIik7Cj4gLQkJcmV0dXJuOwo+ICsJ aWYgKGVzZGF0YSkKPiArCQllZmlfbWFwX3JlZ2lvbnNfZml4ZWQoKTsKPiArCWVsc2Ugewo+ICsJ CWVmaV9tZXJnZV9yZWdpb25zKCk7Cj4gKwkJbmV3X21lbW1hcCA9IGVmaV9tYXBfcmVnaW9ucygm Y291bnQpOwo+ICsJCWlmICghbmV3X21lbW1hcCkgewo+ICsJCQlwcl9lcnIoIkVycm9yIHJlYWxs b2NhdGluZyBtZW1vcnksIEVGSSBydW50aW1lIG5vbi1mdW5jdGlvbmFsIVxuIik7Cj4gKwkJCXJl dHVybjsKPiArCQl9CgpDSEVDSzogYnJhY2VzIHt9IHNob3VsZCBiZSB1c2VkIG9uIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMyNTM6IEZJTEU6IGFyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmku YzoxMDQwOgorICAgICAgIGlmIChlc2RhdGEpClsuLi5dCisgICAgICAgZWxzZSB7ClsuLi5dCgot LSAKUmVnYXJkcy9HcnVzcywKICAgIEJvcmlzLgoKU2VudCBmcm9tIGEgZmF0IGNyYXRlIHVuZGVy IG15IGRlc2suIEZvcm1hdHRpbmcgaXMgZmluZS4KLS0KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v a2V4ZWMK