From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E59C1C001DF for ; Fri, 20 Oct 2023 20:36:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+nFtH4GeCFMJSg2su9sLCHCa32aN9x7xniPIlSKnaNE=; b=BsFCbbjJCtu1UX VmNfq3bhwdrr0Iz2g74A5KFlDo1fi/zOWl2U15qg4sFmrj8M0oXN/1lfQf8JPaVAOi+LZTke9qvp1 q2GPrtpb3UZgUVH9O/TQRD0WLbwcVuNkpfSCNh/21GuJ+If0dhoXnyrNQn3IufSPvGcaG/PuBOO+/ PydBTjEkDiNck+0q+tMKlFaVgNqL416wfPokxxMcX448y1GA9B1/p1ySE5bPCFHNHfByj0xTfc5wL 2DAl2b4Gnr1xExoYwb9GXtJiF3E0kj9WJMdRO2L03HoEM/NoJyelFlMJZ4hRFwTrdnWJPruo6Ywti S0WYiWCj5Vbgv1Tuq91Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtwEo-002zP0-1Q; Fri, 20 Oct 2023 20:36:54 +0000 Received: from linux.microsoft.com ([13.77.154.182]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtwEl-002zOg-11 for kexec@lists.infradead.org; Fri, 20 Oct 2023 20:36:53 +0000 Received: from [192.168.86.69] (unknown [50.46.228.62]) by linux.microsoft.com (Postfix) with ESMTPSA id 9EBEA20B74C2; Fri, 20 Oct 2023 13:36:50 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 9EBEA20B74C2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1697834210; bh=XyjdTx7sau1XzVkUYbHGoZYHMZjzWbRRvE35OpWVGx4=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=KXoYI7cZoOIA942OyXk3pv1dVP81sgSugIhclBEg5If/CLT7mwvsXGOsMxVuFQG+A crGJXGyFG8SAGLx2hoJATR+Hp3XDuW65EWEsati3ZbLlXTgSzzsS6uu1BwbaOOUQeI ey9jxSr+VY4b6sZ7N0uN89ARb14x/9nOw0qVel6o= Message-ID: <9e58b07b-29db-eddf-9263-41bcea4771db@linux.microsoft.com> Date: Fri, 20 Oct 2023 13:36:50 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 3/7] ima: kexec: map source pages containing IMA buffer to image post kexec load Content-Language: en-US To: Stefan Berger , zohar@linux.ibm.com, ebiederm@xmission.com, noodles@fb.com, bauermann@kolabnow.com, kexec@lists.infradead.org, linux-integrity@vger.kernel.org Cc: code@tyhicks.com, nramas@linux.microsoft.com, paul@paul-moore.com References: <20231005182602.634615-1-tusharsu@linux.microsoft.com> <20231005182602.634615-4-tusharsu@linux.microsoft.com> <5098dd7c-70b5-f2ed-0fa6-0f0081f89df6@linux.ibm.com> From: Tushar Sugandhi In-Reply-To: <5098dd7c-70b5-f2ed-0fa6-0f0081f89df6@linux.ibm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231020_133651_397757_958C2E74 X-CRM114-Status: GOOD ( 34.62 ) X-BeenThere: kexec@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "kexec" Errors-To: kexec-bounces+kexec=archiver.kernel.org@lists.infradead.org CgpPbiAxMC8xMi8yMyAxNzoyOSwgU3RlZmFuIEJlcmdlciB3cm90ZToKPiAKPiBPbiAxMC81LzIz IDE0OjI1LCBUdXNoYXIgU3VnYW5kaGkgd3JvdGU6Cj4+IEN1cnJlbnRseSwgdGhlIG1lY2hhbmlz bSB0byBtYXAgYW5kIHVubWFwIHNlZ21lbnRzIHRvIHRoZSBraW1hZ2UKPj4gc3RydWN0dXJlIGlz IG5vdCBhdmFpbGFibGUgdG8gdGhlIHN1YnN5c3RlbXMgb3V0c2lkZSBvZiBrZXhlYy7CoCBUaGlz Cj4+IGZ1bmN0aW9uYWxpdHkgaXMgbmVlZGVkIHdoZW4gSU1BIGlzIGFsbG9jYXRpbmcgdGhlIG1l bW9yeSBzZWdtZW50cwo+PiBkdXJpbmcga2V4ZWMgJ2xvYWQnIG9wZXJhdGlvbi4KPj4KPj4gSW1w bGVtZW50IGtpbWFnZV9tYXBfc2VnbWVudCgpIHdoaWNoIHRha2VzIGEga2ltYWdlIHBvaW50ZXIs IGFuIGFkZHJlc3MsCj4+IGFuZCBhIHNpemUuwqAgRW5zdXJlIHRoYXQgdGhlIGVudGlyZSBzZWdt ZW50IGlzIGJlaW5nIG1hcHBlZCBieSBjb21wYXJpbmcKPj4gdGhlIGdpdmVuIGFkZHJlc3MgYW5k IHNpemUgdG8gZWFjaCBzZWdtZW50IGluIHRoZSBraW1hZ2UncyBzZWdtZW50IGFycmF5Lgo+PiBD b2xsZWN0IHRoZSBzb3VyY2UgcGFnZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBnaXZlbiBhZGRy ZXNzIHJhbmdlLAo+PiBhbGxvY2F0ZSBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGVzZSBwYWdl cywgYW5kIG1hcCB0aGVtIHRvIGEKPj4gY29udGlndW91cyByYW5nZSBvZiB2aXJ0dWFsIGFkZHJl c3Nlcy7CoCBJZiB0aGUgbWFwcGluZyBvcGVyYXRpb24gaXMKPj4gc3VjY2Vzc2Z1bCwgdGhlIGZ1 bmN0aW9uIHJldHVybnMgdGhlIHN0YXJ0IG9mIHRoaXMgcmFuZ2UuwqAgT3RoZXJ3aXNlLCBpdAo+ PiBmcmVlcyB0aGUgcGFnZSBwb2ludGVyIGFycmF5IGFuZCByZXR1cm5zIE5VTEwuCj4+Cj4+IElt cGxlbWVudCBraW1hZ2VfdW5tYXBfc2VnbWVudCgpIHRoYXQgdGFrZXMgYSBwb2ludGVyIHRvIGEg c2VnbWVudCBidWZmZXIKPj4gYW5kIHVubWFwcyBpdCB1c2luZyB2dW5tYXAoKS4KPj4KPj4gSW1w bGVtZW50IGZ1bmN0aW9uIGltYV9rZXhlY19wb3N0X2xvYWQoKSwgdG8gYmUgY2FsbGVkIGJ5IElN QSBhZnRlciBrZXhlYwo+PiBsb2FkcyB0aGUgbmV3IEtlcm5lbCBpbWFnZS7CoCBpbWFfa2V4ZWNf cG9zdF9sb2FkKCkgd291bGQgbWFwIHRoZSBJTUEKPj4gYnVmZmVyIGFsbG9jYXRlZCBkdXJpbmcg a2V4ZWMgJ2xvYWQnIHRvIGEgc2VnbWVudCBpbiB0aGUgbG9hZGVkIGltYWdlLgo+Pgo+PiBGaW5h bGx5LCBtb3ZlIGZvcl9lYWNoX2tpbWFnZV9lbnRyeSgpIG1hY3JvIGZyb20ga2V4ZWNfY29yZS5j IHRvIGtleGVjLmguCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFR1c2hhciBTdWdhbmRoaTx0dXNoYXJz dUBsaW51eC5taWNyb3NvZnQuY29tPgo+PiAtLS0KPj4gwqAgaW5jbHVkZS9saW51eC9pbWEuaMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMyArKwo+PiDCoCBpbmNsdWRlL2xpbnV4 L2tleGVjLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEzICsrKysrKwo+PiDCoCBrZXJu ZWwva2V4ZWNfY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNzMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCj4+IMKgIHNlY3VyaXR5L2ludGVncml0eS9pbWEvaW1h X2tleGVjLmMgfCAzMiArKysrKysrKysrKysrCj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMTE2IGlu c2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2ltYS5oIGIvaW5jbHVkZS9saW51eC9pbWEuaAo+PiBpbmRleCA4NmI1Nzc1N2M3YjEuLjAw NmRiMjBmODUyZCAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9saW51eC9pbWEuaAo+PiArKysgYi9p bmNsdWRlL2xpbnV4L2ltYS5oCj4+IEBAIC00OSw2ICs0OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpbWFfYXBwcmFpc2VfcGFyc2VfY21kbGluZSh2b2lkKSB7fQo+PiDCoCAjaWZkZWYgQ09ORklH X0lNQV9LRVhFQwo+PiDCoCBleHRlcm4gdm9pZCBpbWFfYWRkX2tleGVjX2J1ZmZlcihzdHJ1Y3Qg a2ltYWdlICppbWFnZSk7Cj4+ICtleHRlcm4gdm9pZCBpbWFfa2V4ZWNfcG9zdF9sb2FkKHN0cnVj dCBraW1hZ2UgKmltYWdlKTsKPj4gKyNlbHNlCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW1hX2tl eGVjX3Bvc3RfbG9hZChzdHJ1Y3Qga2ltYWdlICppbWFnZSkge30KPj4gwqAgI2VuZGlmCj4+IMKg ICNlbHNlCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleGVjLmggYi9pbmNsdWRlL2xp bnV4L2tleGVjLmgKPj4gaW5kZXggMjJiNWNkMjRmNTgxLi5lMDBiODEwMWI1M2IgMTAwNjQ0Cj4+ IC0tLSBhL2luY2x1ZGUvbGludXgva2V4ZWMuaAo+PiArKysgYi9pbmNsdWRlL2xpbnV4L2tleGVj LmgKPj4gQEAgLTQ5MCw2ICs0OTAsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgCj4+IGFyY2hfa2V4 ZWNfcG9zdF9hbGxvY19wYWdlcyh2b2lkICp2YWRkciwgdW5zaWduZWQgaW50IHBhZ2VzLCBnCj4+ IMKgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2tleGVjX3ByZV9mcmVlX3BhZ2VzKHZvaWQgKnZh ZGRyLCB1bnNpZ25lZCAKPj4gaW50IHBhZ2VzKSB7IH0KPj4gwqAgI2VuZGlmCj4+ICsjZGVmaW5l IGZvcl9lYWNoX2tpbWFnZV9lbnRyeShpbWFnZSwgcHRyLCBlbnRyeSkgXAo+PiArwqDCoMKgIGZv ciAocHRyID0gJmltYWdlLT5oZWFkOyAoZW50cnkgPSAqcHRyKSAmJiAhKGVudHJ5ICYgSU5EX0RP TkUpOyBcCj4+ICvCoMKgwqDCoMKgwqDCoCBwdHIgPSAoZW50cnkgJiBJTkRfSU5ESVJFQ1RJT04p ID8gXAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib290X3BoeXNfdG9fdmlydCgoZW50cnkg JiBQQUdFX01BU0spKSA6IHB0ciArIDEpCj4+ICsKPj4gK2V4dGVybiB2b2lkICpraW1hZ2VfbWFw X3NlZ21lbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpOwo+PiArZXh0 ZXJuIHZvaWQga2ltYWdlX3VubWFwX3NlZ21lbnQodm9pZCAqYnVmZmVyKTsKPj4gKwo+PiDCoCAj ZWxzZSAvKiAhQ09ORklHX0tFWEVDX0NPUkUgKi8KPj4gwqAgc3RydWN0IHB0X3JlZ3M7Cj4+IMKg IHN0cnVjdCB0YXNrX3N0cnVjdDsKPj4gQEAgLTQ5Nyw2ICs1MDYsMTAgQEAgc3RhdGljIGlubGlu ZSB2b2lkIF9fY3Jhc2hfa2V4ZWMoc3RydWN0IHB0X3JlZ3MgCj4+ICpyZWdzKSB7IH0KPj4gwqAg c3RhdGljIGlubGluZSB2b2lkIGNyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKSB7IH0K Pj4gwqAgc3RhdGljIGlubGluZSBpbnQga2V4ZWNfc2hvdWxkX2NyYXNoKHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCkgeyByZXR1cm4gCj4+IDA7IH0KPj4gwqAgc3RhdGljIGlubGluZSBpbnQga2V4ZWNf Y3Jhc2hfbG9hZGVkKHZvaWQpIHsgcmV0dXJuIDA7IH0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCAq a2ltYWdlX21hcF9zZWdtZW50KHN0cnVjdCBraW1hZ2UgKmltYWdlLAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNp Z25lZCBsb25nIHNpemUpCj4+ICt7IHJldHVybiBOVUxMOyB9Cj4+ICtzdGF0aWMgaW5saW5lIHZv aWQga2ltYWdlX3VubWFwX3NlZ21lbnQodm9pZCAqYnVmZmVyKSB7IH0KPj4gwqAgI2RlZmluZSBr ZXhlY19pbl9wcm9ncmVzcyBmYWxzZQo+PiDCoCAjZW5kaWYgLyogQ09ORklHX0tFWEVDX0NPUkUg Ki8KPj4gZGlmZiAtLWdpdCBhL2tlcm5lbC9rZXhlY19jb3JlLmMgYi9rZXJuZWwva2V4ZWNfY29y ZS5jCj4+IGluZGV4IDNkNTc4YzZmZWZlZS4uZTAxMTU2ZjNjNDA0IDEwMDY0NAo+PiAtLS0gYS9r ZXJuZWwva2V4ZWNfY29yZS5jCj4+ICsrKyBiL2tlcm5lbC9rZXhlY19jb3JlLmMKPj4gQEAgLTU5 NCwxMSArNTk0LDYgQEAgdm9pZCBraW1hZ2VfdGVybWluYXRlKHN0cnVjdCBraW1hZ2UgKmltYWdl KQo+PiDCoMKgwqDCoMKgICppbWFnZS0+ZW50cnkgPSBJTkRfRE9ORTsKPj4gwqAgfQo+PiAtI2Rl ZmluZSBmb3JfZWFjaF9raW1hZ2VfZW50cnkoaW1hZ2UsIHB0ciwgZW50cnkpIFwKPj4gLcKgwqDC oCBmb3IgKHB0ciA9ICZpbWFnZS0+aGVhZDsgKGVudHJ5ID0gKnB0cikgJiYgIShlbnRyeSAmIElO RF9ET05FKTsgXAo+PiAtwqDCoMKgwqDCoMKgwqAgcHRyID0gKGVudHJ5ICYgSU5EX0lORElSRUNU SU9OKSA/IFwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vdF9waHlzX3RvX3ZpcnQoKGVu dHJ5ICYgUEFHRV9NQVNLKSkgOiBwdHIgKyAxKQo+PiAtCj4+IMKgIHN0YXRpYyB2b2lkIGtpbWFn ZV9mcmVlX2VudHJ5KGtpbWFnZV9lbnRyeV90IGVudHJ5KQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAg c3RydWN0IHBhZ2UgKnBhZ2U7Cj4+IEBAIC05MjEsNiArOTE2LDc0IEBAIGludCBraW1hZ2VfbG9h ZF9zZWdtZW50KHN0cnVjdCBraW1hZ2UgKmltYWdlLAo+PiDCoMKgwqDCoMKgIHJldHVybiByZXN1 bHQ7Cj4+IMKgIH0KPj4gK3ZvaWQgKmtpbWFnZV9tYXBfc2VnbWVudChzdHJ1Y3Qga2ltYWdlICpp bWFnZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGFkZHIsIHVu c2lnbmVkIGxvbmcgc2l6ZSkKPj4gK3sKPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGVhZGRyID0g YWRkciArIHNpemU7Cj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBzcmNfcGFnZV9hZGRyLCBkZXN0 X3BhZ2VfYWRkcjsKPj4gK8KgwqDCoCBzdHJ1Y3QgcGFnZSAqKnNyY19wYWdlczsKPj4gK8KgwqDC oCBpbnQgaSwgbnBhZ2VzOwo+PiArwqDCoMKgIGtpbWFnZV9lbnRyeV90ICpwdHIsIGVudHJ5Owo+ PiArwqDCoMKgIHZvaWQgKnZhZGRyID0gTlVMTDsKPj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKg wqDCoCAqIE1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBtYXBwaW5nIGEgd2hvbGUgc2VnbWVudC4KPj4g K8KgwqDCoMKgICovCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGltYWdlLT5ucl9zZWdtZW50 czsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYWRkciA9PSBpbWFnZS0+c2VnbWVudFtp XS5tZW0gJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZSA9PSBpbWFnZS0+c2VnbWVu dFtpXS5tZW1zeikgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDC oMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4gCj4gSSB3b25kZXIgd2hldGhlciB0aGlzIGRpc3Ry dXN0IGluIHRoZSBzZWdtZW50cyBvciBpbiB0aGUgcGFzc2VkIAo+IHBvaW50ZXImc2l6ZSBhcmUg anVzdGlmeWFibGUgc2luY2UgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiBsaWtlIHRoaXM6Cj4gCj4g IMKgwqDCoMKgwqDCoMKgIGltYV9rZXhlY19idWZmZXIgPSBraW1hZ2VfbWFwX3NlZ21lbnQoaW1h Z2UsCj4gaW1hZ2UtPmltYV9idWZmZXJfYWRkciwKPiBpbWFnZS0+aW1hX2J1ZmZlcl9zaXplKTsK PiAKPiBhbmQgcHJldmlvdXNseSBrZXhlY19hZGRfYnVmZmVyKCkgd2FzIGFsc28gY2FsbGVkOgo+ IAo+ICDCoMKgwqDCoMKgwqDCoCBrYnVmLmJ1ZmZlciA9IGtleGVjX2J1ZmZlcjsKPiAgwqDCoMKg wqDCoMKgwqAga2J1Zi5idWZzeiA9IGtleGVjX2J1ZmZlcl9zaXplOwo+ICDCoMKgwqDCoMKgwqDC oCBrYnVmLm1lbXN6ID0ga2V4ZWNfc2VnbWVudF9zaXplOwo+ICDCoMKgwqDCoMKgwqDCoCByZXQg PSBrZXhlY19hZGRfYnVmZmVyKCZrYnVmKTsKPiAgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkgewo+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJFcnJvciBwYXNzaW5nIG92 ZXIga2V4ZWMgbWVhc3VyZW1lbnQgYnVmZmVyLlxuIik7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB2ZnJlZShrZXhlY19idWZmZXIpOwo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuOwo+ICDCoMKgwqDCoMKgwqDCoCB9Cj4gCj4gIMKgwqDCoMKgwqDCoMKg IGltYWdlLT5pbWFfYnVmZmVyX2FkZHIgPSBrYnVmLm1lbTsKPiAgwqDCoMKgwqDCoMKgwqAgaW1h Z2UtPmltYV9idWZmZXJfc2l6ZSA9IGtleGVjX3NlZ21lbnRfc2l6ZTsKPiAKPiBTbyB0aGUgb25l IHNlZ21lbnQgc2hvdWxkIGJlIG1hdGNoaW5nIHRoZXNlIGFkZHJlc3Nlcy4KPiAKPiAKWWVoLiBU aGlzIGNoZWNrIGlzIGFuIG92ZXJraWxsIGF0IHRoaXMgcG9pbnQuCkkgYWdyZWUuIEkgd2lsbCBy ZW1vdmUgdGhpcyBleHRyYSBjaGVjay4KPj4gKwo+PiArwqDCoMKgIGlmIChpID09IGltYWdlLT5u cl9zZWdtZW50cykgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczogTm8gc2VnbWVudCBt YXRjaGluZyBbJWx4LCAlbHgpXG4iLCBfX2Z1bmNfXywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYWRkciwgZWFkZHIpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgLyoKPj4gK8KgwqDCoMKgICogQ29sbGVjdCB0aGUg c291cmNlIHBhZ2VzIGFuZCBtYXAgdGhlbSBpbiBhIGNvbnRpZ3VvdXMgVkEgcmFuZ2UuCj4+ICvC oMKgwqDCoCAqLwo+PiArwqDCoMKgIG5wYWdlcyA9IFBGTl9VUChlYWRkcikgLSBQRk5fRE9XTihh ZGRyKTsKPj4gK8KgwqDCoCBzcmNfcGFnZXMgPSBrbWFsbG9jKHNpemVvZigqc3JjX3BhZ2VzKSAq IG5wYWdlcywgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqAgaWYgKCFzcmNfcGFnZXMpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgIHByX2VycigiJXM6IENvdWxkIG5vdCBhbGxvY2F0ZSBpbWEgcGFnZXMgYXJy YXkuXG4iLCBfX2Z1bmNfXyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gK8Kg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpID0gMDsKPj4gK8KgwqDCoCBmb3JfZWFjaF9raW1hZ2Vf ZW50cnkoaW1hZ2UsIHB0ciwgZW50cnkpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlbnRyeSAm IElORF9ERVNUSU5BVElPTikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzdF9wYWdlX2Fk ZHIgPSBlbnRyeSAmIFBBR0VfTUFTSzsKPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGVudHJ5 ICYgSU5EX1NPVVJDRSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZGVzdF9wYWdl X2FkZHIgPj0gYWRkciAmJiBkZXN0X3BhZ2VfYWRkciA8IGVhZGRyKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3JjX3BhZ2VfYWRkciA9IGVudHJ5ICYgUEFHRV9NQVNLOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyY19wYWdlc1tpKytdID0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZpcnRfdG9fcGFnZShfX3ZhKHNy Y19wYWdlX2FkZHIpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaSA9 PSBucGFnZXMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXN0X3BhZ2VfYWRkciArPSBQ QUdFX1NJWkU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKg IH0KPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCAvKiBTYW5pdHkgY2hlY2suICovCj4+ICvC oMKgwqAgV0FSTl9PTihpIDwgbnBhZ2VzKTsKPj4gKwo+PiArwqDCoMKgIHZhZGRyID0gdm1hcChz cmNfcGFnZXMsIG5wYWdlcywgVk1fTUFQLCBQQUdFX0tFUk5FTCk7Cj4gT24gZWl0aGVyIHN1Y2Nl c3Mgb3IgZmFpbHVyZSBrZnJlZShzZWNfcGFnZXMpOyBzaG91bGQgZ28gcmlnaHQgaGVyZSB0byAK PiBub3QgaGF2ZSBhIG1lbW9yeSBsZWFrLgpXaWxsIGRvLgoKflR1c2hhcgo+PiArwqDCoMKgIGlm ICghdmFkZHIpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHByX2VycigiJXM6IENvdWxkIG5vdCBtYXAg aW1hcCBidWZmZXIuXG4iLCBfX2Z1bmNfXyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBrZnJlZShzcmNf cGFnZXMpOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDCoCByZXR1cm4gdmFkZHI7Cj4+ICt9Cj4+ICsK Pj4gK3ZvaWQga2ltYWdlX3VubWFwX3NlZ21lbnQodm9pZCAqc2VnbWVudF9idWZmZXIpCj4+ICt7 Cj4+ICvCoMKgwqAgdnVubWFwKHNlZ21lbnRfYnVmZmVyKTsKPj4gK30KPj4gKwo+PiDCoCBzdHJ1 Y3Qga2V4ZWNfbG9hZF9saW1pdCB7Cj4+IMKgwqDCoMKgwqAgLyogTXV0ZXggcHJvdGVjdHMgdGhl IGxpbWl0IGNvdW50LiAqLwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBtdXRleCBtdXRleDsKPj4gZGlm ZiAtLWdpdCBhL3NlY3VyaXR5L2ludGVncml0eS9pbWEvaW1hX2tleGVjLmMgCj4+IGIvc2VjdXJp dHkvaW50ZWdyaXR5L2ltYS9pbWFfa2V4ZWMuYwo+PiBpbmRleCAyYzExYmJlNmVmZWYuLjEzZmJi YjkwMzE5YiAxMDA2NDQKPj4gLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfa2V4ZWMu Ywo+PiArKysgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9rZXhlYy5jCj4+IEBAIC0xMiw2 ICsxMiw4IEBACj4+IMKgICNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPgo+PiDCoCAjaW5jbHVkZSA8 bGludXgvb2YuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2ltYS5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L3JlYm9vdC5oPgo+PiArI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4+IMKgICNpbmNsdWRlICJp bWEuaCIKPj4gwqAgI2lmZGVmIENPTkZJR19JTUFfS0VYRUMKPj4gQEAgLTE5LDYgKzIxLDcgQEAg c3RydWN0IHNlcV9maWxlIGltYV9rZXhlY19maWxlOwo+PiDCoCBzdHJ1Y3QgaW1hX2tleGVjX2hk ciBpbWFfa2hkcjsKPj4gwqAgc3RhdGljIHZvaWQgKmltYV9rZXhlY19idWZmZXI7Cj4+IMKgIHN0 YXRpYyBzaXplX3Qga2V4ZWNfc2VnbWVudF9zaXplOwo+PiArc3RhdGljIGJvb2wgaW1hX2tleGVj X3VwZGF0ZV9yZWdpc3RlcmVkOwo+PiDCoCB2b2lkIGltYV9jbGVhcl9rZXhlY19maWxlKHZvaWQp Cj4+IMKgIHsKPj4gQEAgLTIyMSw2ICsyMjQsNyBAQCBzdGF0aWMgaW50IGltYV91cGRhdGVfa2V4 ZWNfYnVmZmVyKHN0cnVjdCAKPj4gbm90aWZpZXJfYmxvY2sgKnNlbGYsCj4+IMKgwqDCoMKgwqAg fQo+PiDCoMKgwqDCoMKgIG1lbWNweShpbWFfa2V4ZWNfYnVmZmVyLCBidWYsIGJ1Zl9zaXplKTsK Pj4gwqAgb3V0Ogo+PiArwqDCoMKgIGtpbWFnZV91bm1hcF9zZWdtZW50KGltYV9rZXhlY19idWZm ZXIpOwo+PiDCoMKgwqDCoMKgIGltYV9rZXhlY19idWZmZXIgPSBOVUxMOwo+PiDCoMKgwqDCoMKg IGlmIChyZXN1bWUpCj4+IEBAIC0yMzIsNiArMjM2LDM0IEBAIHN0cnVjdCBub3RpZmllcl9ibG9j ayB1cGRhdGVfYnVmZmVyX25iID0gewo+PiDCoMKgwqDCoMKgIC5ub3RpZmllcl9jYWxsID0gaW1h X3VwZGF0ZV9rZXhlY19idWZmZXIsCj4+IMKgIH07Cj4+ICsvKgo+PiArICogQ3JlYXRlIGEgbWFw cGluZyBmb3IgdGhlIHNvdXJjZSBwYWdlcyB0aGF0IGNvbnRhaW4gdGhlIElNQSBidWZmZXIKPj4g KyAqIHNvIHdlIGNhbiB1cGRhdGUgaXQgbGF0ZXIuCj4+ICsgKi8KPj4gK3ZvaWQgaW1hX2tleGVj X3Bvc3RfbG9hZChzdHJ1Y3Qga2ltYWdlICppbWFnZSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoaW1h X2tleGVjX2J1ZmZlcikgewo+PiArwqDCoMKgwqDCoMKgwqAga2ltYWdlX3VubWFwX3NlZ21lbnQo aW1hX2tleGVjX2J1ZmZlcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbWFfa2V4ZWNfYnVmZmVyID0g TlVMTDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIWltYWdlLT5pbWFfYnVmZmVy X2FkZHIpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICsKPj4gK8KgwqDCoCBpbWFfa2V4 ZWNfYnVmZmVyID0ga2ltYWdlX21hcF9zZWdtZW50KGltYWdlLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW1hZ2UtPmltYV9idWZmZXJfYWRk ciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGltYWdlLT5pbWFfYnVmZmVyX3NpemUpOwo+PiArwqDCoMKgIGlmICghaW1hX2tleGVjX2J1ZmZl cikgewo+PiArwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczogQ291bGQgbm90IG1hcCBtZWFzdXJl bWVudHMgYnVmZmVyLlxuIiwgX19mdW5jX18pOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+ PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmICghaW1hX2tleGVjX3VwZGF0ZV9yZWdpc3Rl cmVkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnVwZGF0 ZV9idWZmZXJfbmIpOwo+PiArwqDCoMKgwqDCoMKgwqAgaW1hX2tleGVjX3VwZGF0ZV9yZWdpc3Rl cmVkID0gdHJ1ZTsKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gwqAgI2VuZGlmIC8qIElNQV9L RVhFQyAqLwo+PiDCoCAvKgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18Ka2V4ZWMgbWFpbGluZyBsaXN0CmtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXhlYwo=