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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 584FFC433EF for ; Sun, 31 Oct 2021 22:46:09 +0000 (UTC) Received: from mail.server123.net (mail.server123.net [78.46.64.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 61B4260F22 for ; Sun, 31 Oct 2021 22:46:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 61B4260F22 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=o2.pl Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=saout.de X-Virus-Scanned: amavisd-new at saout.de Authentication-Results: mail.server123.net (amavisd-new); dkim=pass (1024-bit key) header.d=o2.pl Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=193.222.135.142; helo=mx-out.tlen.pl; envelope-from=mat.jonczyk@o2.pl; receiver= X-Greylist: delayed 400 seconds by postgrey-1.37 at siona; Sun, 31 Oct 2021 23:43:14 CET Received: from mx-out.tlen.pl (mx-out.tlen.pl [193.222.135.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.server123.net (Postfix) with ESMTPS for ; Sun, 31 Oct 2021 23:43:13 +0100 (CET) Received: (wp-smtpd smtp.tlen.pl 27200 invoked from network); 31 Oct 2021 23:36:30 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=o2.pl; s=1024a; t=1635719791; bh=cejeKqdfIySfB3eosgVY1vqNQLzG6foWPcXeFdqIIyc=; h=From:To:Cc:Subject; b=GYlEI5eeS+PDmMZiL16qK29NAynHlEnD6zoHkauywXEybEt8nkh6T16v77aBORZ6h +47yJLvH2TkACFSiHySn8tqBQSU7jWcES6l+gD++RrZlxCGqMATS2E9cb/oeYpEHU7 zVNpAe8tmBkHHV6DManK1Dx5sEAjdiWbAEFIJs/Y= Received: from ablz112.neoplus.adsl.tpnet.pl (HELO localhost.localdomain) (mat.jonczyk@o2.pl@[83.7.219.112]) (envelope-sender ) by smtp.tlen.pl (WP-SMTPD) with SMTP for ; 31 Oct 2021 23:36:30 +0100 From: =?UTF-8?q?Mateusz=20Jo=C5=84czyk?= To: dm-crypt@saout.de Date: Sun, 31 Oct 2021 23:36:17 +0100 Message-Id: <20211031223617.37401-1-mat.jonczyk@o2.pl> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-WP-DKIM-Status: good (id: o2.pl) X-WP-MailID: e421e50226e843d015c7381f7a664e2e X-WP-AV: skaner antywirusowy Poczty o2 X-WP-SPAM: NO 0000008 [oetR] Message-ID-Hash: AF2LVSB5IGY64EBMXHJRYL3FIJ5ZNKUC X-Message-ID-Hash: AF2LVSB5IGY64EBMXHJRYL3FIJ5ZNKUC X-MailFrom: mat.jonczyk@o2.pl X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-dm-crypt.saout.de-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: =?UTF-8?q?Mateusz=20Jo=C5=84czyk?= X-Mailman-Version: 3.3.2 Precedence: list Subject: [dm-crypt] [RFC] Partial support for reading DiskCryptor volumes List-Id: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8sDQoNCkJhY2sgaW4gSnVuZSwgSSB3cm90ZSB0byB0aGUgbWFpbGluZyBsaXN0IHNlZWtp bmcgc29tZSBoZWxwIHdpdGgNCnJldmVyc2UtZW5naW5lZXJpbmcgdGhlIERpc2tDcnlwdG9yIHZv bHVtZSBmb3JtYXQgWzFdLg0KDQpTaW5jZSB0aGVuLCBJIGhhdmUgaW1wbGVtZW50ZWQgZGVjcnlw dGlvbiBvZiB0aGUgdm9sdW1lIGhlYWRlciAoZm9yIGFsbA0KY2lwaGVyIGNvbWJpbmF0aW9ucywg d2l0aCBhdXRvZGV0ZWN0aW9uKSBhbmQgd291bGQgbGlrZSB0byBrbm93IHdoZXRoZXINCnlvdSB3 b3VsZCBiZSBpbnRlcmVzdGVkIGluIG1lcmdpbmcgc3VwcG9ydCBmb3Igb3BlbmluZyBEaXNrQ3J5 cHRvcg0Kdm9sdW1lcyBvbmNlIGl0IGlzIHJlYWR5Lg0KDQpUaGUgRGlza0NyeXB0b3IgZGV2ZWxv cG1lbnQgaGFzIGxhcmdlbHkgc3RhbGxlZCwgd2l0aCB0aGUgbGFzdCBiZXRhDQpyZWxlYXNlIGlu IEFwcmlsIDIwMjAuIFJlbGVhc2VzIGJ5IERhdmlkWGFuYXRvcyBoYXZlIHRoZSBmb2xsb3dpbmcN CnByb2JsZW0gWzNdOg0KDQo+ICAgICAgICBUaGUgRGlzayBDcnlwdG9yIGRyaXZlciBuZWVkZWQg dG8gYmUgdXBkYXRlZCwgYW5kIHNpbmNlIHRoZQ0KPiAgICAgICAgUmVhY3RPUyBmb3VuZGF0aW9u IG5vIGxvbmdlciBvZmZlciBhIGRyaXZlciBzaWduaW5nIHNlcnZpY2UsIEkNCj4gICAgICAgIGhl YWQgdG8gdXNlIGEgbGVha2VkIGNvZGUgc2lnbmluZyBjZXJ0aWZpY2F0ZSBJIGZvdW5kIGxheWlu Zw0KPiAgICAgICAgYXJvdW5kIHRoZSBJbnRlcm5ldHMuIFRoaXMgbWVhbnMgc29tZSBhbnRpIG1h bHdhcmUgYXBwbGljYXRpb25zDQo+ICAgICAgICBtYXkgd3JvbmdmdWxseSBmbGFnIGl0IGFzIHBv dGVudGlhbGx5IGRhbmdlcm91cy4NCg0KSSdtIGF0dGFjaGluZyBteSBjdXJyZW50IGNvZGUsIHdo aWNoIGNhbiBhbHNvIGJlIGJyb3dzZWQgb246DQpodHRwczovL2dpdGh1Yi5jb20vbWF0am9uL2Ny eXB0c2V0dXAvdHJlZS9kY3J5cHRvcl9zdXBwb3J0L2xpYi9kY3J5cHRvcg0KDQpUaGUgY29kZSBp cyBzb21ld2hhdCBzaW1pbGFyIHRvIC4vbGliL3RjcnlwdC90Y3J5cHQuYyBhcyBEaXNrQ3J5cHRv ciB3YXMNCmluc3BpcmVkIGJ5IFRydWVDcnlwdC4gSXQgdXNlcywgaG93ZXZlciwgYSBkaWZmZXJl bnQgdm9sdW1lIGxheW91dCAodGhlDQpmaXJzdCAyMDQ4IGJ5dGVzIG9mIHRoZSB1bmRlcmx5aW5n IGZpbGVzeXN0ZW0gYXJlIHJlbG9jYXRlZCB0byBhDQpkaWZmZXJlbnQgcGxhY2Ugb24gdGhlIHBh cnRpdGlvbiBbMl0pLg0KDQpHcmVldGluZ3MsDQpNYXRldXN6DQoNClsxXSBzZWUgdGhyZWFkIGZy b20gIlRodSwgMyBKdW4gMjAyMSAxMjowNToyOCArMDIwMCINCiAgIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2RtLWNyeXB0LzdkOTExZDg5LWFlYTgtNWQyYi02NWM0LTA1MWRlNmY1NDk1NUBvMi5w bC9ULw0KDQpbMl0gaHR0cHM6Ly9kaXNrY3J5cHRvci5vcmcvdm9sdW1lLw0KDQpbM10gaHR0cHM6 Ly9naXRodWIuY29tL0RhdmlkWGFuYXRvcy9EaXNrQ3J5cHRvci9yZWxlYXNlcw0KDQotLS0NCiBs aWIvTWFrZW1vZHVsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KIGxp Yi9kY3J5cHRvci9kY3J5cHRvci5jICAgICAgICAgICAgICAgICAgICAgICB8IDQyNCArKysrKysr KysrKysrKysrKysNCiBsaWIvZGNyeXB0b3IvZGNyeXB0b3IuaCAgICAgICAgICAgICAgICAgICAg ICAgfCAgNjYgKysrDQogbGliL2xpYmNyeXB0c2V0dXAuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIxICstDQogbGliL3NldHVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDc5ICsrKy0NCiBzcmMvY3J5cHRzZXR1cC5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNzEgKysrDQogdGVzdHMvZGlza2NyeXB0b3IvcGFzc3dvcmQudHh0ICAgICAgICAg ICAgICAgIHwgICAxICsNCiB0ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzLmJpbiAgICAgICAg ICAgICAgfCBCaW4gMCAtPiA4Mzg4NjA4IGJ5dGVzDQogdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1l X2Flc190d29maXNoLmJpbiAgICAgIHwgQmluIDAgLT4gODM4ODYwOCBieXRlcw0KIC4uLi92b2x1 bWVfYWVzX3R3b2Zpc2hfc2VycGVudC5iaW4gICAgICAgICAgICB8IEJpbiAwIC0+IDgzODg2MDgg Ynl0ZXMNCiB0ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfc2VycGVudC5iaW4gICAgICAgICAgfCBC aW4gMCAtPiA4Mzg4NjA4IGJ5dGVzDQogdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX3NlcnBlbnRf YWVzLmJpbiAgICAgIHwgQmluIDAgLT4gODM4ODYwOCBieXRlcw0KIHRlc3RzL2Rpc2tjcnlwdG9y L3ZvbHVtZV90d29maXNoLmJpbiAgICAgICAgICB8IEJpbiAwIC0+IDgzODg2MDggYnl0ZXMNCiB0 ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfdHdvZmlzaF9zZXJwZW50LmJpbiAgfCBCaW4gMCAtPiA4 Mzg4NjA4IGJ5dGVzDQogMTQgZmlsZXMgY2hhbmdlZCwgNjYyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kY3J5cHRvci9kY3J5cHRvci5jDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9kY3J5cHRvci9kY3J5cHRvci5oDQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRlc3RzL2Rpc2tjcnlwdG9yL3Bhc3N3b3JkLnR4dA0KIGNyZWF0ZSBtb2RlIDEwMDc1 NSB0ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzLmJpbg0KIGNyZWF0ZSBtb2RlIDEwMDc1NSB0 ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzX3R3b2Zpc2guYmluDQogY3JlYXRlIG1vZGUgMTAw NzU1IHRlc3RzL2Rpc2tjcnlwdG9yL3ZvbHVtZV9hZXNfdHdvZmlzaF9zZXJwZW50LmJpbg0KIGNy ZWF0ZSBtb2RlIDEwMDc1NSB0ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfc2VycGVudC5iaW4NCiBj cmVhdGUgbW9kZSAxMDA3NTUgdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX3NlcnBlbnRfYWVzLmJp bg0KIGNyZWF0ZSBtb2RlIDEwMDc1NSB0ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfdHdvZmlzaC5i aW4NCiBjcmVhdGUgbW9kZSAxMDA3NTUgdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX3R3b2Zpc2hf c2VycGVudC5iaW4NCg0KZGlmZiAtLWdpdCBhL2xpYi9NYWtlbW9kdWxlLmFtIGIvbGliL01ha2Vt b2R1bGUuYW0NCmluZGV4IGU5YjI1MGU3Li4zYjU1MjliNiAxMDA2NDQNCi0tLSBhL2xpYi9NYWtl bW9kdWxlLmFtDQorKysgYi9saWIvTWFrZW1vZHVsZS5hbQ0KQEAgLTc2LDYgKzc2LDggQEAgbGli Y3J5cHRzZXR1cF9sYV9TT1VSQ0VTID0gXA0KIAlsaWIvbG9vcGFlcy9sb29wYWVzLmMJCVwNCiAJ bGliL3RjcnlwdC90Y3J5cHQuaAkJXA0KIAlsaWIvdGNyeXB0L3RjcnlwdC5jCQlcDQorCWxpYi9k Y3J5cHRvci9kY3J5cHRvci5oCSAgICAgICAgXA0KKwlsaWIvZGNyeXB0b3IvZGNyeXB0b3IuYwkg ICAgICAgIFwNCiAJbGliL2x1a3MxL2FmLmgJCQlcDQogCWxpYi9sdWtzMS9hZi5jCQkJXA0KIAls aWIvbHVrczEva2V5ZW5jcnlwdGlvbi5jCVwNCmRpZmYgLS1naXQgYS9saWIvZGNyeXB0b3IvZGNy eXB0b3IuYyBiL2xpYi9kY3J5cHRvci9kY3J5cHRvci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAuLjVlMmRmOTdjDQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvZGNyeXB0 b3IvZGNyeXB0b3IuYw0KQEAgLTAsMCArMSw0MjQgQEANCisvKg0KKyAqIERpc2tDcnlwdG9yLWNv bXBhdGlibGUgdm9sdW1lIGhhbmRsaW5nDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWF0 ZXVzeiBKb8WEY3p5aw0KKyAqDQorICogVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4N CisgKg0KKyAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGZpbGU7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUNCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxh c3NlcnQuaD4NCisjaW5jbHVkZSA8Y3R5cGUuaD4NCisjaW5jbHVkZSA8ZXJybm8uaD4NCisjaW5j bHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkYm9vbC5oPg0KKyNpbmNsdWRlIDxzdGRsaWIu aD4NCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorDQorI2luY2x1ZGUgPGljb252Lmg+DQorDQorI2lu Y2x1ZGUgImxpYmNyeXB0c2V0dXAuaCINCisjaW5jbHVkZSAiZGNyeXB0b3IuaCINCisjaW5jbHVk ZSAiaW50ZXJuYWwuaCINCisNCisvLyBjb3BpZWQgZnJvbSBsaWIvYml0bGsvYml0bGsuYw0KK3N0 YXRpYyBpbnQgcGFzc3BocmFzZV90b191dGYxNihzdHJ1Y3QgY3J5cHRfZGV2aWNlICpjZCwgY2hh ciAqaW5wdXQsIHNpemVfdCBpbmxlbiwgY2hhciAqKm91dCkNCit7DQorCWNoYXIgKm91dGJ1ZiA9 IE5VTEw7DQorCWljb252X3QgaWM7DQorCXNpemVfdCBpY19pbmxlbiA9IGlubGVuOw0KKwlzaXpl X3QgaWNfb3V0bGVuID0gaW5sZW4gKiAyOw0KKwljaGFyICppY19vdXRidWYgPSBOVUxMOw0KKwlz aXplX3QgciA9IDA7DQorDQorCWlmIChpbmxlbiA9PSAwKQ0KKwkJcmV0dXJuIHI7DQorDQorCW91 dGJ1ZiA9IGNyeXB0X3NhZmVfYWxsb2MoaW5sZW4gKiAyKTsNCisJaWYgKG91dGJ1ZiA9PSBOVUxM KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCW1lbXNldChvdXRidWYsIDAsIGlubGVuICogMik7 DQorCWljX291dGJ1ZiA9IG91dGJ1ZjsNCisNCisJaWMgPSBpY29udl9vcGVuKCJVVEYtMTZMRSIs ICJVVEYtOCIpOw0KKwlyID0gaWNvbnYoaWMsICZpbnB1dCwgJmljX2lubGVuLCAmaWNfb3V0YnVm LCAmaWNfb3V0bGVuKTsNCisJaWNvbnZfY2xvc2UoaWMpOw0KKw0KKwlpZiAociA9PSAwKSB7DQor CQkqb3V0ID0gb3V0YnVmOw0KKwl9IGVsc2Ugew0KKwkJKm91dCA9IE5VTEw7DQorCQljcnlwdF9z YWZlX2ZyZWUob3V0YnVmKTsNCisJCWxvZ19kYmcoY2QsICJGYWlsZWQgdG8gY29udmVydCBwYXNz cGhyYXNlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7DQorCQlyID0gLWVycm5vOw0KKwl9DQorDQor CXJldHVybiByOw0KK30NCisNCisNCisvLyBUaGVzZSBzdHJ1Y3R1cmVzIGFuZCBsaXN0IGhlYXZp bHkgYnkgYSBzaW1pbGFyIGxpc3QgaW4gdGNyeXB0L3RjcnlwdC5jDQorc3RydWN0IGRjcnlwdG9y X2FsZyB7DQorCQljb25zdCBjaGFyICpuYW1lOw0KKwkJdW5zaWduZWQgaW50IGtleV9vZmZzZXQ7 DQorCQl1bnNpZ25lZCBpbnQgaXZfb2Zmc2V0Ow0KK307DQorDQorc3RydWN0IGRjcnlwdG9yX2Fs Z3Mgew0KKwl1aW50MzJfdCBhbGdfaWQ7ICAgICAgIC8vIGFzIHVzZWQgaW4gdGhlIHZvbHVtZSBo ZWFkZXINCisJdW5zaWduZWQgaW50IGNoYWluX2xlbmd0aDsNCisJY29uc3QgY2hhciAqbG9uZ19u YW1lOw0KKwlzdHJ1Y3QgZGNyeXB0b3JfYWxnIGNpcGhlclszXTsNCit9Ow0KKw0KK3N0YXRpYyBz dHJ1Y3QgZGNyeXB0b3JfYWxncyBkY3J5cHRvcl9jaXBoZXJbXSA9IHsNCisJeyAweDAsIDEsICJh ZXMiLA0KKwkJe3siYWVzIiwgICAgICAwLCAzMn19fSwNCisJeyAweDEsIDEsICJ0d29maXNoIiwN CisJCXt7InR3b2Zpc2giLCAgMCwgMzJ9fX0sDQorCXsgMHgyLCAxLCAic2VycGVudCIsDQorCQl7 eyJzZXJwZW50IiwgIDAsIDMyfX19LA0KKwl7IDB4MywgMiwgImFlcy10d29maXNoIiwNCisJCXt7 ImFlcyIsICAgICAzMiwgMzIqM30sDQorCQl7InR3b2Zpc2giLCAgIDAsIDMyKjJ9fX0sDQorCXsg MHg0LCAyLCAidHdvZmlzaC1zZXJwZW50IiwNCisJCXt7InR3b2Zpc2giLCAzMiwgMzIqM30sDQor CQl7InNlcnBlbnQiLCAgIDAsIDMyKjJ9fX0sDQorCXsgMHg1LCAyLCAic2VycGVudC1hZXMiLA0K KwkJe3sic2VycGVudCIsIDMyLCAzMiozfSwNCisJCXsiYWVzIiwgICAgICAgMCwgMzIqMn19fSwN CisJeyAweDYsIDMsICJhZXMtdHdvZmlzaC1zZXJwZW50Iiwgew0KKwkJeyJhZXMiLCAgICAzMioy LCAzMio1fSwNCisJCXsidHdvZmlzaCIsICAzMiwgMzIqNH0sDQorCQl7InNlcnBlbnQiLCAgIDAs IDMyKjN9LA0KKwkJfX0sDQorCXt9DQorfTsNCisNCitzdGF0aWMgdm9pZCBoZXhkdW1wX2J1ZmZl cihGSUxFICpzdHJlYW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwNCisJCXNpemVfdCBi dWZmZXJfc2l6ZSwgY29uc3QgaW50IGJ5dGVzX3Blcl9saW5lKQ0KK3sNCisJLy8gVE9ETzogbWFr ZSB0aGUgZnVuY3Rpb24gbW9yZSByZWFkYWJsZQ0KKwkvLyBUT0RPOiByZXBsYWNlIGZwcmludGYg d2l0aCBzb21ldGhpbmcgZmFzdGVyLCBsaWtlIHNwcmludGYNCisJZm9yIChzaXplX3QgaSA9IDA7 IGkgPCBidWZmZXJfc2l6ZTsgaSs9Ynl0ZXNfcGVyX2xpbmUpIHsNCisJCWZwcmludGYoc3RyZWFt LCAiJTA4eCAgIiwgKHVuc2lnbmVkIGludCkgaSk7DQorDQorCQlmb3IgKHNpemVfdCBqID0gaTsg aiA8IGkgKyBieXRlc19wZXJfbGluZSAmJiBqIDwgYnVmZmVyX3NpemU7IGorKykgew0KKwkJCWZw cmludGYoc3RyZWFtLCAiJTAyeCAiLCAodW5zaWduZWQgaW50KSBidWZmZXJbal0pOw0KKwkJfQ0K KwkJLy8gbGFzdCBsaW5lIHBhZGRpbmcNCisJCWZvciAoc2l6ZV90IGogPSBidWZmZXJfc2l6ZTsg aiA8IGkgKyBieXRlc19wZXJfbGluZTsgaisrKSB7DQorCQkJZnB1dHMoIiAgICIsIHN0cmVhbSk7 DQorCQl9DQorDQorCQlmcHJpbnRmKHN0cmVhbSwgIiB8Iik7DQorCQlmb3IgKHNpemVfdCBqID0g aTsgaiA8IGkrYnl0ZXNfcGVyX2xpbmUgJiYgaiA8IGJ1ZmZlcl9zaXplOyBqKyspIHsNCisJCQlp ZiAoaXNwcmludChidWZmZXJbal0pKSB7DQorCQkJCWZwdXRjKGJ1ZmZlcltqXSwgc3RyZWFtKTsN CisJCQl9IGVsc2Ugew0KKwkJCQlmcHV0YygnLicsIHN0cmVhbSk7DQorCQkJfQ0KKwkJfQ0KKwkJ Ly8gbGFzdCBsaW5lIHBhZGRpbmcNCisJCWZvciAoc2l6ZV90IGogPSBidWZmZXJfc2l6ZTsgaiA8 IGkrYnl0ZXNfcGVyX2xpbmU7IGorKykgew0KKwkJCWZwdXRzKCIgIiwgc3RyZWFtKTsNCisJCX0N CisJCWZwcmludGYoc3RyZWFtLCAifFxuIik7DQorCX0NCit9DQorDQorLyoNCisgKiBDaGVja3Mg aWYgdGhlIGhlYWRlciBzaWduYXR1cmUgYW5kIENSQzMyIG1hdGNoZXMsIHRvIGRldGVybWluZQ0K KyAqIGlmIHRoZSBwYXNzd29yZCBpcyBjb3JyZWN0LiBEb2VzIG5vdCB2YWxpZGF0ZSBvdGhlciBo ZWFkZXIgZmllbGRzLg0KKyAqLw0KK3N0YXRpYyBib29sIERDUllQVE9SX2lzX2NvcnJlY3RseV9k ZWNyeXB0ZWQoc3RydWN0IGRjcnlwdG9yX3BoZHIgKmhkcikNCit7DQorCWlmIChzdHJuY21wKGhk ci0+c2lnbmF0dXJlLCAiRENSUCIsIDQpKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwkvLyBEaXNr Q3J5cHRvciB1c2VzIHVubW9kaWZpZWQgQ1JDLTMyDQorCXVpbnQzMl90IGhlYWRlcl9jcmMgPSBj cnlwdF9jcmMzMigweGZmZmZmZmZmLA0KKwkJCShjb25zdCB1bnNpZ25lZCBjaGFyKiloZHIgKyA3 MiwgMjA0OC03Mik7DQorCS8vIGNyeXB0X2NyYzMyKCkgZG9lcyBub3QgcGVyZm9ybSB0aGUgZmlu YWwgWE9SDQorCWhlYWRlcl9jcmMgXj0gMHhmZmZmZmZmZjsNCisNCisJLy8gVE9ETzogYmlnLWVu ZGlhbiBhcmNoaXRlY3R1cmVzPw0KKwlpZiAoaGVhZGVyX2NyYyAhPSBoZHItPmNyYzMyKQ0KKwkJ cmV0dXJuIGZhbHNlOw0KKw0KKwlyZXR1cm4gdHJ1ZTsNCit9DQorDQorDQoraW50IERDUllQVE9S X2RlY3J5cHRfaGRyX29uZV9jaXBoZXIoY2hhciAqa2V5LA0KKwkJc3RydWN0IGRjcnlwdG9yX2Vu Y2hkciAqZGVzdCwNCisJCXN0cnVjdCBkY3J5cHRvcl9lbmNoZHIgKnNvdXJjZSwNCisJCXN0cnVj dCBkY3J5cHRvcl9hbGcgKmFsZykNCit7DQorCXN0cnVjdCBjcnlwdF9jaXBoZXIgKmNpcGhlcjsN CisJY2hhciAqa2V5X29uZTsNCisJaW50IHI7DQorCWNoYXIgaXZbMTZdID0ge307DQorDQorCWlm IChwb3NpeF9tZW1hbGlnbigodm9pZCopJmtleV9vbmUsIGNyeXB0X2dldHBhZ2VzaXplKCksIERD UllQVE9SX0tFWV9MRU4pKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCW1lbWNweShrZXlfb25l LCBrZXkgKyBhbGctPmtleV9vZmZzZXQsIDMyKTsNCisJbWVtY3B5KGtleV9vbmUrMzIsIGtleSAr IGFsZy0+aXZfb2Zmc2V0LCAzMik7DQorDQorCXIgPSBjcnlwdF9jaXBoZXJfaW5pdCgmY2lwaGVy LCBhbGctPm5hbWUsICJ4dHMiLCBrZXlfb25lLCA2NCk7DQorCWlmIChyKQ0KKwkJZ290byBleGl0 Ow0KKw0KKwkvLyBUT0RPOiB3aGF0IGFib3V0IDRrQiBzZWN0b3JzPw0KKwlmb3IgKGludCBpID0g MDsgaSA8IERDUllQVE9SX0hEUl9MRU4gLyA1MTI7IGkrKykgew0KKwkJaXZbMF0gPSBpKzE7DQor CQlyID0gY3J5cHRfY2lwaGVyX2RlY3J5cHQoY2lwaGVyLA0KKwkJCShjb25zdCBjaGFyICopc291 cmNlICsgaSAqIDUxMiwNCisJCQkoY2hhciAqKWRlc3QgKyBpICogNTEyLA0KKwkJCTUxMiwNCisJ CQlpdiwgMTYpOw0KKw0KKwl9DQorCWNyeXB0X2NpcGhlcl9kZXN0cm95KGNpcGhlcik7DQorDQor ZXhpdDoNCisJaWYgKGtleV9vbmUpDQorCQljcnlwdF9zYWZlX21lbXplcm8oa2V5X29uZSwgRENS WVBUT1JfS0VZX0xFTik7DQorDQorCWZyZWUoa2V5X29uZSk7DQorCXJldHVybiByOw0KK30NCisN CitpbnQgRENSWVBUT1JfZGVjcnlwdF9oZHJfb25lX2NvbWJpbmF0aW9uKGNoYXIgKmtleSwNCisJ CXN0cnVjdCBkY3J5cHRvcl9lbmNoZHIgKmVuY2hkciwNCisJCXN0cnVjdCBkY3J5cHRvcl9waGRy ICpoZHIsDQorCQlzdHJ1Y3QgZGNyeXB0b3JfYWxncyAqYWxncykNCit7DQorCWludCBpOw0KKwlp bnQgcjsNCisJc3RydWN0IGRjcnlwdG9yX2VuY2hkciAqdGVtcF9oZHI7DQorDQorCWlmIChwb3Np eF9tZW1hbGlnbigodm9pZCopJnRlbXBfaGRyLCBjcnlwdF9nZXRwYWdlc2l6ZSgpLA0KKwkJCQlE Q1JZUFRPUl9IRFJfTEVOKSkgew0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisNCisJbWVtY3B5 KHRlbXBfaGRyLCBlbmNoZHIsIERDUllQVE9SX0hEUl9MRU4pOw0KKw0KKwlmb3IgKGkgPSAwOyBp IDwgYWxncy0+Y2hhaW5fbGVuZ3RoOyBpKyspIHsNCisJCXIgPSBEQ1JZUFRPUl9kZWNyeXB0X2hk cl9vbmVfY2lwaGVyKGtleSwNCisJCQkJKHN0cnVjdCBkY3J5cHRvcl9lbmNoZHIgKikgaGRyLA0K KwkJCQl0ZW1wX2hkciwgJmFsZ3MtPmNpcGhlcltpXSk7DQorCQlpZiAocikNCisJCQlnb3RvIGV4 aXQ7DQorDQorCQltZW1jcHkodGVtcF9oZHIsIGhkciwgRENSWVBUT1JfSERSX0xFTik7DQorCX0N CisNCisJaWYgKERDUllQVE9SX2lzX2NvcnJlY3RseV9kZWNyeXB0ZWQoaGRyKSkNCisJCXIgPSAw Ow0KKwllbHNlDQorCQlyID0gMTsNCisNCitleGl0Og0KKw0KKwlpZiAodGVtcF9oZHIpDQorCQlj cnlwdF9zYWZlX21lbXplcm8odGVtcF9oZHIsIERDUllQVE9SX0hEUl9MRU4pOw0KKw0KKwlmcmVl KHRlbXBfaGRyKTsNCisJcmV0dXJuIHI7DQorfQ0KKw0KKw0KKy8vIFRyeSBhbGwgY29tYmluYXRp b25zIHRoYXQgaGF2ZSBhIHNwZWNpZmljIGNoYWluX2xlbmd0aCwgY2FsY3VsYXRpbmcgcGJrZGYy DQorLy8gb25jZQ0KK2ludCBEQ1JZUFRPUl9kZWNyeXB0X2hkcl9vbmVfY2hhaW5fbGVuZ3RoKA0K KwkJc3RydWN0IGNyeXB0X2RldmljZSAqY2QsDQorCQlzdHJ1Y3QgZGNyeXB0b3JfZW5jaGRyICpl bmNoZHIsDQorCQlzdHJ1Y3QgZGNyeXB0b3JfcGhkciAqaGRyLA0KKwkJY2hhciAqcHdkX3V0ZjE2 LA0KKwkJaW50IHB3ZF91dGYxNl9sZW5ndGgsDQorCQlpbnQgY2hhaW5fbGVuZ3RoLA0KKwkJaW50 ICpmb3VuZF9jb21iaW5hdGlvbikNCit7DQorCWNoYXIgKmtleTsNCisJaW50IHI7DQorCWludCBy ZXQgPSAxOw0KKwlpbnQgaTsNCisNCisJaWYgKHBvc2l4X21lbWFsaWduKCh2b2lkKikma2V5LCBj cnlwdF9nZXRwYWdlc2l6ZSgpLCBEQ1JZUFRPUl9LRVlfTEVOICogY2hhaW5fbGVuZ3RoKSkNCisJ CXJldHVybiAtRU5PTUVNOw0KKw0KKwlyID0gY3J5cHRfcGJrZGYoInBia2RmMiIsICJzaGE1MTIi LA0KKwkJCXB3ZF91dGYxNiwgcHdkX3V0ZjE2X2xlbmd0aCwNCisJCQllbmNoZHItPnNhbHQsIERD UllQVE9SX1NBTFRfTEVOLA0KKwkJCWtleSwgRENSWVBUT1JfS0VZX0xFTiAqIGNoYWluX2xlbmd0 aCwNCisJCQkxMDAwLCAwLCAwKTsNCisNCisJZm9yIChpID0gMDsgZGNyeXB0b3JfY2lwaGVyW2ld LmNoYWluX2xlbmd0aDsgaSsrKSB7DQorCQlpZiAoZGNyeXB0b3JfY2lwaGVyW2ldLmNoYWluX2xl bmd0aCAhPSBjaGFpbl9sZW5ndGgpDQorCQkJY29udGludWU7DQorDQorCQlyID0gRENSWVBUT1Jf ZGVjcnlwdF9oZHJfb25lX2NvbWJpbmF0aW9uKGtleSwgZW5jaGRyLCBoZHIsDQorCQkJJmRjcnlw dG9yX2NpcGhlcltpXSk7DQorCQlpZiAociA9PSAwKSB7DQorCQkJLy8gZm91bmQhDQorCQkJcmV0 ID0gMDsNCisJCQkqZm91bmRfY29tYmluYXRpb24gPSBpOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKw0K KwkJaWYgKHIgPCAwKSB7DQorCQkJLy8gZXJyb3IhDQorCQkJcmV0ID0gcjsNCisJCQlicmVhazsN CisJCX0NCisJfQ0KKw0KKwlpZiAoa2V5KQ0KKwkJY3J5cHRfc2FmZV9tZW16ZXJvKGtleSwgRENS WVBUT1JfS0VZX0xFTiAqIGNoYWluX2xlbmd0aCk7DQorDQorCWZyZWUoa2V5KTsNCisJcmV0dXJu IHJldDsNCit9DQorDQoraW50IERDUllQVE9SX2RlY3J5cHRfaGRyKHN0cnVjdCBjcnlwdF9kZXZp Y2UgKmNkLA0KKwkJCSAgIHN0cnVjdCBkY3J5cHRvcl9lbmNoZHIgKmVuY2hkciwNCisJCQkgICBz dHJ1Y3QgZGNyeXB0b3JfcGhkciAqaGRyLA0KKwkJCSAgIHN0cnVjdCBjcnlwdF9wYXJhbXNfZGNy eXB0b3IgKnBhcmFtcykNCit7DQorCWludCByOw0KKwlpbnQgaTsNCisJaW50IGZvdW5kX2NvbWJp bmF0aW9uOw0KKw0KKwlhc3NlcnQoc2l6ZW9mKHN0cnVjdCBkY3J5cHRvcl9lbmNoZHIpID09IERD UllQVE9SX0hEUl9MRU4pOw0KKwlhc3NlcnQoc2l6ZW9mKHN0cnVjdCBkY3J5cHRvcl9waGRyKSA9 PSBEQ1JZUFRPUl9IRFJfTEVOKTsNCisNCisJY2hhciAqdXRmMTZQYXNzd29yZCA9IE5VTEw7DQor CXIgPSBwYXNzcGhyYXNlX3RvX3V0ZjE2KGNkLCBDT05TVF9DQVNUKGNoYXIgKikgcGFyYW1zLT5w YXNzcGhyYXNlLCBwYXJhbXMtPnBhc3NwaHJhc2Vfc2l6ZSwgJnV0ZjE2UGFzc3dvcmQpOw0KKwkv LyBUT0RPOiBjaGVjayByDQorDQorCWZvciAoaSA9IDEgOyBpIDw9IDM7IGkrKykgew0KKwkJciA9 IERDUllQVE9SX2RlY3J5cHRfaGRyX29uZV9jaGFpbl9sZW5ndGgoY2QsIGVuY2hkciwgaGRyLA0K KwkJCXV0ZjE2UGFzc3dvcmQsIHBhcmFtcy0+cGFzc3BocmFzZV9zaXplICogMiwNCisJCQlpLA0K KwkJCSZmb3VuZF9jb21iaW5hdGlvbik7DQorDQorCQlpZiAociA8PSAwKQ0KKwkJCWJyZWFrOw0K Kwl9DQorCS8vIFRPRE86IGlmIChyIDwgMCkgLi4uDQorDQorCWlmIChyID09IDApIHsNCisJCWxv Z19zdGQoY2QsICJET05FXG4iKTsNCisJCS8vIGhleHByaW50KGNkLCBoZHIsIDIwNDgsICIgIik7 DQorDQorCQloZXhkdW1wX2J1ZmZlcihzdGRlcnIsIChjb25zdCB1bnNpZ25lZCBjaGFyICopaGRy LCAyMDQ4LCAxNik7DQorCX0NCisNCisJLy8gVE9ETzogbGl0dGxlLWVuZGlhbiB2cyBiaWctZW5k aWFuDQorDQorCXJldHVybiByOw0KK30NCisNCisvKg0KKw0KK2ludCBEQ1JZUFRPUl9kZWNyeXB0 X3NlY3RvcihzdHJ1Y3QgY3J5cHRfZGV2aWNlICpjZCwNCisJCXN0cnVjdCBkY3J5cHRvcl9waGRy ICpoZHIsDQorCQl1aW50NjRfdCBzZWN0b3JfbnVtYmVyKQ0KK3sNCisJaW50IHI7DQorCXN0cnVj dCBjcnlwdF9jaXBoZXIgKmNpcGhlcjsNCisJY2hhciBpdlsxNl0gPSB7fTsNCisJY2hhciAqc2Vj dG9yID0gbWFsbG9jKDUxMik7DQorCWNoYXIgKnNlY3Rvcl9kZWNyeXB0ZWQgPSBtYWxsb2MoNTEy KTsNCisNCisJc3RydWN0IGRldmljZSAqZGV2aWNlID0gY3J5cHRfZGF0YV9kZXZpY2UoY2QpOw0K KwlpbnQgZGV2ZmQ7DQorCWRldmZkID0gZGV2aWNlX29wZW4oY2QsIGRldmljZSwgT19SRE9OTFkp Ow0KKwlpZiAoZGV2ZmQgPCAwKSB7DQorCQlkZXZpY2VfZnJlZShjZCwgZGV2aWNlKTsNCisJCWxv Z19lcnIoY2QsIF8oIkNhbm5vdCBvcGVuIGRldmljZSAlcy4iKSwgZGV2aWNlX3BhdGgoZGV2aWNl KSk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlpZiAocmVhZF9sc2Vla19ibG9ja3dp c2UoZGV2ZmQsIGRldmljZV9ibG9ja19zaXplKGNkLCBkZXZpY2UpLA0KKwkJCWRldmljZV9hbGln bm1lbnQoZGV2aWNlKSwgc2VjdG9yLCBEQ1JZUFRPUl9IRFJfTEVOLCBzZWN0b3JfbnVtYmVyICog NTEyKQ0KKwkJCSE9IDUxMikgew0KKw0KKwkJZGV2aWNlX2ZyZWUoY2QsIGRldmljZSk7DQorCQls b2dfZXJyKGNkLCBfKCJDYW5ub3QgcmVhZCBkZXZpY2UgJXMuIiksIGRldmljZV9wYXRoKGRldmlj ZSkpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJciA9IGNyeXB0X2NpcGhlcl9pbml0 KCZjaXBoZXIsICJhZXMiLCAieHRzIiwgaGRyLT5rZXksIDY0KTsNCisNCisJZm9yIChpbnQgaSA9 IDE2MzAwOyBpIDw9IDE2NDAwOyBpKyspIHsNCisJCWl2WzBdID0gaSAlIDI1NjsNCisJCWl2WzFd ID0gaSAvIDI1NjsNCisNCisJCWZwcmludGYoc3RkZXJyLCAiXG5cbmk9JWRcbiIsIGkpOw0KKw0K KwkJciA9IGNyeXB0X2NpcGhlcl9kZWNyeXB0KGNpcGhlciwNCisJCQlzZWN0b3IsDQorCQkJc2Vj dG9yX2RlY3J5cHRlZCwNCisJCQk1MTIsDQorCQkJaXYsIDE2KTsNCisNCisJCWhleGR1bXBfYnVm ZmVyKHN0ZGVyciwgc2VjdG9yX2RlY3J5cHRlZCwgNTEyLCAxNik7DQorCX0NCisNCisJZnJlZShz ZWN0b3IpOw0KKwlmcmVlKHNlY3Rvcl9kZWNyeXB0ZWQpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQor Ki8NCisNCitpbnQgRENSWVBUT1JfcmVhZF9waGRyKHN0cnVjdCBjcnlwdF9kZXZpY2UgKmNkLA0K KwkJICAgICBzdHJ1Y3QgZGNyeXB0b3JfcGhkciAqaGRyLA0KKwkJICAgICBzdHJ1Y3QgY3J5cHRf cGFyYW1zX2RjcnlwdG9yICpwYXJhbXMpDQorew0KKwlpbnQgciA9IDA7DQorCWludCBkZXZmZDsN CisJc3RydWN0IGRldmljZSAqZGV2aWNlID0gY3J5cHRfZGF0YV9kZXZpY2UoY2QpOw0KKwlzdHJ1 Y3QgZGNyeXB0b3JfZW5jaGRyICplbmNoZHI7DQorDQorCWRldmZkID0gZGV2aWNlX29wZW4oY2Qs IGRldmljZSwgT19SRE9OTFkpOw0KKwlpZiAoZGV2ZmQgPCAwKSB7DQorCQlkZXZpY2VfZnJlZShj ZCwgZGV2aWNlKTsNCisJCWxvZ19lcnIoY2QsIF8oIkNhbm5vdCBvcGVuIGRldmljZSAlcy4iKSwg ZGV2aWNlX3BhdGgoZGV2aWNlKSk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwllbmNo ZHIgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBkY3J5cHRvcl9lbmNoZHIpKTsNCisJLy8gVE9ETzog aWYgKGVuY2hkciA9PSBOVUxMKQ0KKw0KKwlpZiAocmVhZF9sc2Vla19ibG9ja3dpc2UoZGV2ZmQs IGRldmljZV9ibG9ja19zaXplKGNkLCBkZXZpY2UpLA0KKwkJCWRldmljZV9hbGlnbm1lbnQoZGV2 aWNlKSwgZW5jaGRyLCBEQ1JZUFRPUl9IRFJfTEVOLCAwKSA9PSBEQ1JZUFRPUl9IRFJfTEVOKSB7 DQorCQlyID0gRENSWVBUT1JfZGVjcnlwdF9oZHIoY2QsIGVuY2hkciwgaGRyLCBwYXJhbXMpOw0K Kw0KKwkJLy9EQ1JZUFRPUl9kZWNyeXB0X3NlY3RvcihjZCwgaGRyLCAxNjM4MCk7DQorCX0NCisN CisJaWYgKHIgPCAwKQ0KKwkJbWVtc2V0KGhkciwgMCwgc2l6ZW9mICgqaGRyKSk7DQorDQorCWZy ZWUoZW5jaGRyKTsNCisJcmV0dXJuIHI7DQorfQ0KKw0KKy8vIFRPRE86IHNob3VsZCBJIHVzZSB4 dHMtcGxhaW42NCwgb3IgcG9zc2libHkgeHRzLXBsYWluPw0KZGlmZiAtLWdpdCBhL2xpYi9kY3J5 cHRvci9kY3J5cHRvci5oIGIvbGliL2RjcnlwdG9yL2RjcnlwdG9yLmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMC4uNTE4ZGRiNzMNCi0tLSAvZGV2L251bGwNCisrKyBiL2xp Yi9kY3J5cHRvci9kY3J5cHRvci5oDQpAQCAtMCwwICsxLDY2IEBADQorLyoNCisgKiBEaXNrQ3J5 cHRvci1jb21wYXRpYmxlIGhlYWRlciBkZWZpbml0aW9uDQorICoNCisgKiBDb3B5cmlnaHQgKEMp IDIwMjEgTWF0ZXVzeiBKb8WEY3p5aw0KKyAqDQorICogVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCisgKiB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCisgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYw0KKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGZpbGU7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUNCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLg0KKyAqLw0KKw0KKyNp Zm5kZWYgX0NSWVBUU0VUVVBfRENSWVBUT1JfSA0KKyNkZWZpbmUgX0NSWVBUU0VUVVBfRENSWVBU T1JfSA0KKw0KKyNkZWZpbmUgRENSWVBUT1JfSERSX0xFTiAgICAyMDQ4DQorI2RlZmluZSBEQ1JZ UFRPUl9TQUxUX0xFTiA2NA0KKw0KK3N0cnVjdCBkY3J5cHRvcl9lbmNoZHIgew0KKwljaGFyIHNh bHRbRENSWVBUT1JfU0FMVF9MRU5dOw0KKwljaGFyIGVuY3J5cHRlZFtEQ1JZUFRPUl9IRFJfTEVO IC0gRENSWVBUT1JfU0FMVF9MRU5dOw0KK30gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOw0K Kw0KKyNkZWZpbmUgRENSWVBUT1JfS0VZX0xFTiA2NA0KKy8vIEhlYWRlciBwcm92aWRlcyBzcGFj ZSBmb3Igc2VwYXJhdGUga2V5cyBmb3IgNCBjaGFpbmVkIGNpcGhlcnMNCisjZGVmaW5lIERDUllQ VE9SX01BWF9LRVlTIDQNCisjZGVmaW5lIERDUllQVE9SX01BWF9DSEFJTkVEX0tFWVNfTEVOIERD UllQVE9SX0hEUl9LRVlfTEVOICogRENSWVBUT1JfTUFYX0tFWVMNCisNCitzdHJ1Y3QgZGNyeXB0 b3JfcGhkciB7DQorCWNoYXIgX3RyYXNoW0RDUllQVE9SX1NBTFRfTEVOXTsNCisJY2hhciBzaWdu YXR1cmVbNF07DQorCXVpbnQzMl90IGNyYzMyOw0KKwl1aW50MTZfdCBoZWFkZXJfdmVyc2lvbjsN CisJdWludDMyX3QgZmxhZ3M7DQorCXVpbnQzMl90IHV1aWQ7DQorDQorCXVpbnQzMl90IGFsZ19p ZDsNCisJY2hhciBrZXlbRENSWVBUT1JfTUFYX0tFWVNdW0RDUllQVE9SX0tFWV9MRU5dOw0KKwl1 aW50MzJfdCBwcmV2aW91c19hbGdfaWQ7DQorCWNoYXIgcHJldmlvdXNfa2V5W0RDUllQVE9SX01B WF9LRVlTXVtEQ1JZUFRPUl9LRVlfTEVOXTsNCisNCisJdWludDY0X3QgcmVsb2NhdGlvbl9vZmZz ZXQ7DQorCXVpbnQ2NF90IGRhdGFfc2l6ZTsNCisJdWludDY0X3QgZW5jcnlwdGVkX3NpemU7DQor CXVpbnQ4X3Qgd2lwZV9tb2RlOw0KKw0KKwljaGFyIHBhZGRpbmdbMTQyMV07DQorfSBfX2F0dHJp YnV0ZV9fKChfX3BhY2tlZF9fKSk7DQorDQorDQorc3RydWN0IGNyeXB0X2RldmljZTsNCitzdHJ1 Y3QgY3J5cHRfcGFyYW1zX2RjcnlwdG9yOw0KKw0KK2ludCBEQ1JZUFRPUl9yZWFkX3BoZHIoc3Ry dWN0IGNyeXB0X2RldmljZSAqY2QsDQorCQkgICAgIHN0cnVjdCBkY3J5cHRvcl9waGRyICpoZHIs DQorCQkgICAgIHN0cnVjdCBjcnlwdF9wYXJhbXNfZGNyeXB0b3IgKnBhcmFtcyk7DQorDQorI2Vu ZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2xpYmNyeXB0c2V0dXAuaCBiL2xpYi9saWJjcnlwdHNldHVw LmgNCmluZGV4IDRiNjZmZTA0Li4xZWZiMzg4NiAxMDA2NDQNCi0tLSBhL2xpYi9saWJjcnlwdHNl dHVwLmgNCisrKyBiL2xpYi9saWJjcnlwdHNldHVwLmgNCkBAIC00MjEsNiArNDIxLDggQEAgaW50 IGNyeXB0X2dldF9tZXRhZGF0YV9zaXplKHN0cnVjdCBjcnlwdF9kZXZpY2UgKmNkLA0KICNkZWZp bmUgQ1JZUFRfVkVSSVRZICJWRVJJVFkiDQogLyoqIFRDUllQVCAoVHJ1ZUNyeXB0LWNvbXBhdGli bGUgYW5kIFZlcmFDcnlwdC1jb21wYXRpYmxlKSBtb2RlICovDQogI2RlZmluZSBDUllQVF9UQ1JZ UFQgIlRDUllQVCINCisvKiogRGlza0NyeXB0b3IgKi8NCisjZGVmaW5lIENSWVBUX0RDUllQVE9S ICJEQ1JZUFRPUiINCiAvKiogSU5URUdSSVRZIGRtLWludGVncml0eSBkZXZpY2UgKi8NCiAjZGVm aW5lIENSWVBUX0lOVEVHUklUWSAiSU5URUdSSVRZIg0KIC8qKiBCSVRMSyAoQml0TG9ja2VyLWNv bXBhdGlibGUgbW9kZSkgKi8NCkBAIC01NTMsNiArNTU1LDIzIEBAIHN0cnVjdCBjcnlwdF9wYXJh bXNfdGNyeXB0IHsNCiAgKi8NCiAjZGVmaW5lIENSWVBUX1RDUllQVF9WRVJBX01PREVTICAgICAg KDEgPDwgNCkNCiANCisvKioNCisgKg0KKyAqIFN0cnVjdHVyZSB1c2VkIGFzIHBhcmFtZXRlciBm b3IgRGlza0NyeXB0b3IgZGV2aWNlIHR5cGUuDQorICoNCisgKiBAc2VlIGNyeXB0X2xvYWQNCisg Kg0KKyAqLw0KK3N0cnVjdCBjcnlwdF9wYXJhbXNfZGNyeXB0b3Igew0KKwljb25zdCBjaGFyICpw YXNzcGhyYXNlOyAgICAvKio8IHBhc3NwaHJhc2UgdG8gdW5sb2NrIGhlYWRlciAoaW5wdXQgb25s eSkgKi8NCisJc2l6ZV90IHBhc3NwaHJhc2Vfc2l6ZTsgICAgLyoqPCBwYXNzcGhyYXNlIHNpemUg KGlucHV0IG9ubHkpICovDQorCWNvbnN0IGNoYXIgKiprZXlmaWxlczsgICAgIC8qKjwgTk9UIElN UExFTUVOVEVEIFlFVCAqLw0KKwl1bnNpZ25lZCBpbnQga2V5ZmlsZXNfY291bnQ7LyoqPCBOT1Qg SU1QTEVNRU5URUQgWUVUICovDQorCWNvbnN0IGNoYXIgKmNpcGhlcjsgICAgICAgIC8qKjwgY2lw aGVyIGNoYWluIGMxWy1jMlstYzNdXSAqLw0KKwlzaXplX3Qga2V5X3NpemU7ICAgICAgICAgICAv Kio8IGtleSBzaXplIGluIGJ5dGVzICh0aGUgd2hvbGUgY2hhaW4pICovDQorCXVpbnQzMl90IGZs YWdzOyAgICAgICAgICAgIC8qKjwgQ1JZUFRfRElTS0NSWVBUT1IqIGZsYWdzICovDQorfTsNCisN CiAvKioNCiAgKg0KICAqIFN0cnVjdHVyZSB1c2VkIGFzIHBhcmFtZXRlciBmb3IgZG0taW50ZWdy aXR5IGRldmljZSB0eXBlLg0KQEAgLTIyNTYsNyArMjI3NSw3IEBAIGludCBjcnlwdF90b2tlbl9y ZWdpc3Rlcihjb25zdCBjcnlwdF90b2tlbl9oYW5kbGVyICpoYW5kbGVyKTsNCiANCiAvKioNCiAg KiBSZXBvcnQgZXh0ZXJuYWwgdG9rZW4gaGFuZGxlcnMgKHBsdWdpbnMpIHN1cHBvcnQNCi0gDQor DQogICogQHJldHVybiBAZSAwIHdoZW4gZW5hYmxlZCBvciBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBv dGhlcndpc2UuDQogICovDQogaW50IGNyeXB0X3Rva2VuX2V4dGVybmFsX3N1cHBvcnQodm9pZCk7 DQpkaWZmIC0tZ2l0IGEvbGliL3NldHVwLmMgYi9saWIvc2V0dXAuYw0KaW5kZXggYTA0NGI4Nzgu LmExZjk3YjhhIDEwMDY0NA0KLS0tIGEvbGliL3NldHVwLmMNCisrKyBiL2xpYi9zZXR1cC5jDQpA QCAtMzQsNiArMzQsNyBAQA0KICNpbmNsdWRlICJsb29wYWVzL2xvb3BhZXMuaCINCiAjaW5jbHVk ZSAidmVyaXR5L3Zlcml0eS5oIg0KICNpbmNsdWRlICJ0Y3J5cHQvdGNyeXB0LmgiDQorI2luY2x1 ZGUgImRjcnlwdG9yL2RjcnlwdG9yLmgiDQogI2luY2x1ZGUgImludGVncml0eS9pbnRlZ3JpdHku aCINCiAjaW5jbHVkZSAiYml0bGsvYml0bGsuaCINCiAjaW5jbHVkZSAidXRpbHNfZGV2aWNlX2xv Y2tpbmcuaCINCkBAIC0xMDIsNiArMTAzLDEwIEBAIHN0cnVjdCBjcnlwdF9kZXZpY2Ugew0KIAkJ c3RydWN0IGNyeXB0X3BhcmFtc190Y3J5cHQgcGFyYW1zOw0KIAkJc3RydWN0IHRjcnlwdF9waGRy IGhkcjsNCiAJfSB0Y3J5cHQ7DQorCXN0cnVjdCB7IC8qIHVzZWQgaW4gQ1JZUFRfRENSWVBUT1Ig Ki8NCisJCXN0cnVjdCBjcnlwdF9wYXJhbXNfZGNyeXB0b3IgcGFyYW1zOw0KKwkJc3RydWN0IGRj cnlwdG9yX3BoZHIgaGRyOw0KKwl9IGRjcnlwdG9yOw0KIAlzdHJ1Y3QgeyAvKiB1c2VkIGluIENS WVBUX0lOVEVHUklUWSAqLw0KIAkJc3RydWN0IGNyeXB0X3BhcmFtc19pbnRlZ3JpdHkgcGFyYW1z Ow0KIAkJc3RydWN0IHZvbHVtZV9rZXkgKmpvdXJuYWxfbWFjX2tleTsNCkBAIC0zMTMsNiArMzE4 LDExIEBAIHN0YXRpYyBpbnQgaXNUQ1JZUFQoY29uc3QgY2hhciAqdHlwZSkNCiAJcmV0dXJuICh0 eXBlICYmICFzdHJjbXAoQ1JZUFRfVENSWVBULCB0eXBlKSk7DQogfQ0KIA0KK3N0YXRpYyBpbnQg aXNEQ1JZUFRPUihjb25zdCBjaGFyICp0eXBlKQ0KK3sNCisJcmV0dXJuICh0eXBlICYmICFzdHJj bXAoQ1JZUFRfRENSWVBUT1IsIHR5cGUpKTsNCit9DQorDQogc3RhdGljIGludCBpc0lOVEVHUklU WShjb25zdCBjaGFyICp0eXBlKQ0KIHsNCiAJcmV0dXJuICh0eXBlICYmICFzdHJjbXAoQ1JZUFRf SU5URUdSSVRZLCB0eXBlKSk7DQpAQCAtNjU4LDYgKzY2OCw3IEBAIGludCBjcnlwdF9zZXRfZGF0 YV9kZXZpY2Uoc3RydWN0IGNyeXB0X2RldmljZSAqY2QsIGNvbnN0IGNoYXIgKmRldmljZSkNCiAN CiAJaWYgKCFpc0xVS1MxKGNkLT50eXBlKSAmJiAhaXNMVUtTMihjZC0+dHlwZSkgJiYgIWlzVkVS SVRZKGNkLT50eXBlKSAmJg0KIAkgICAgIWlzSU5URUdSSVRZKGNkLT50eXBlKSAmJiAhaXNUQ1JZ UFQoY2QtPnR5cGUpKSB7DQorICAgICAgICAgICAgICAgIC8vIERpc2tDcnlwdG9yIC0gbm8gc3Vw cG9ydA0KIAkJbG9nX2VycihjZCwgXygiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgdGhpcyBkZXZpY2UgdHlwZS4iKSk7DQogCQlyZXR1cm4gLUVJTlZBTDsNCiAJfQ0KQEAgLTg3 MCw2ICs4ODEsMzYgQEAgc3RhdGljIGludCBfY3J5cHRfbG9hZF90Y3J5cHQoc3RydWN0IGNyeXB0 X2RldmljZSAqY2QsIHN0cnVjdCBjcnlwdF9wYXJhbXNfdGNyeXANCiAJcmV0dXJuIHI7DQogfQ0K IA0KK3N0YXRpYyBpbnQgX2NyeXB0X2xvYWRfZGNyeXB0b3Ioc3RydWN0IGNyeXB0X2RldmljZSAq Y2QsIHN0cnVjdCBjcnlwdF9wYXJhbXNfZGNyeXB0b3IgKnBhcmFtcykNCit7DQorCWludCByOw0K Kw0KKwlpZiAoIXBhcmFtcykNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlyID0gaW5pdF9jcnlw dG8oY2QpOw0KKwlpZiAociA8IDApDQorCQlyZXR1cm4gcjsNCisNCisJbWVtY3B5KCZjZC0+dS5k Y3J5cHRvci5wYXJhbXMsIHBhcmFtcywgc2l6ZW9mKCpwYXJhbXMpKTsNCisNCisJciA9IERDUllQ VE9SX3JlYWRfcGhkcihjZCwgJmNkLT51LmRjcnlwdG9yLmhkciwgJmNkLT51LmRjcnlwdG9yLnBh cmFtcyk7DQorDQorCWNkLT51LmRjcnlwdG9yLnBhcmFtcy5wYXNzcGhyYXNlID0gTlVMTDsNCisJ Y2QtPnUuZGNyeXB0b3IucGFyYW1zLnBhc3NwaHJhc2Vfc2l6ZSA9IDA7DQorCS8vY2QtPnUuZGNy eXB0b3IucGFyYW1zLmtleWZpbGVzID0gTlVMTDsNCisJLy9jZC0+dS5kY3J5cHRvci5wYXJhbXMu a2V5ZmlsZXNfY291bnQgPSAwOw0KKw0KKwlpZiAociA8IDApDQorCQlyZXR1cm4gcjsNCisNCisg ICAgICAgIC8vID8/Pw0KKwlpZiAoIWNkLT50eXBlICYmICEoY2QtPnR5cGUgPSBzdHJkdXAoQ1JZ UFRfRENSWVBUT1IpKSkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlyZXR1cm4gcjsNCit9DQor DQogc3RhdGljIGludCBfY3J5cHRfbG9hZF92ZXJpdHkoc3RydWN0IGNyeXB0X2RldmljZSAqY2Qs IHN0cnVjdCBjcnlwdF9wYXJhbXNfdmVyaXR5ICpwYXJhbXMpDQogew0KIAlpbnQgcjsNCkBAIC0x MDM4LDYgKzEwNzksMTIgQEAgaW50IGNyeXB0X2xvYWQoc3RydWN0IGNyeXB0X2RldmljZSAqY2Qs DQogCQkJcmV0dXJuIC1FSU5WQUw7DQogCQl9DQogCQlyID0gX2NyeXB0X2xvYWRfdGNyeXB0KGNk LCBwYXJhbXMpOw0KKwl9IGVsc2UgaWYgKGlzRENSWVBUT1IocmVxdWVzdGVkX3R5cGUpKSB7DQor CQlpZiAoY2QtPnR5cGUgJiYgIWlzRENSWVBUT1IoY2QtPnR5cGUpKSB7DQorCQkJbG9nX2RiZyhj ZCwgIkNvbnRleHQgaXMgYWxyZWFkeSBpbml0aWFsaXplZCB0byB0eXBlICVzIiwgY2QtPnR5cGUp Ow0KKwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0KKwkJciA9IF9jcnlwdF9sb2FkX2RjcnlwdG9y KGNkLCBwYXJhbXMpOw0KIAl9IGVsc2UgaWYgKGlzSU5URUdSSVRZKHJlcXVlc3RlZF90eXBlKSkg ew0KIAkJaWYgKGNkLT50eXBlICYmICFpc0lOVEVHUklUWShjZC0+dHlwZSkpIHsNCiAJCQlsb2df ZGJnKGNkLCAiQ29udGV4dCBpcyBhbHJlYWR5IGluaXRpYWxpemVkIHRvIHR5cGUgJXMiLCBjZC0+ dHlwZSk7DQpAQCAtMjg0MSw3ICsyODg4LDcgQEAgaW50IGNyeXB0X3Jlc2l6ZShzdHJ1Y3QgY3J5 cHRfZGV2aWNlICpjZCwgY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgbmV3X3NpemUpDQogCWlm ICghY2QgfHwgIWNkLT50eXBlIHx8ICFuYW1lKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQotCWlm IChpc1RDUllQVChjZC0+dHlwZSkgfHwgaXNCSVRMSyhjZC0+dHlwZSkpIHsNCisJaWYgKGlzRENS WVBUT1IoY2QtPnR5cGUpIHx8IGlzVENSWVBUKGNkLT50eXBlKSB8fCBpc0JJVExLKGNkLT50eXBl KSkgew0KIAkJbG9nX2VycihjZCwgXygiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBm b3IgdGhpcyBkZXZpY2UgdHlwZS4iKSk7DQogCQlyZXR1cm4gLUVOT1RTVVA7DQogCX0NCkBAIC00 NDgxLDYgKzQ1MjgsMTEgQEAgaW50IGNyeXB0X2FjdGl2YXRlX2J5X3ZvbHVtZV9rZXkoc3RydWN0 IGNyeXB0X2RldmljZSAqY2QsDQogCQkJcmV0dXJuIDA7DQogCQlyID0gVENSWVBUX2FjdGl2YXRl KGNkLCBuYW1lLCAmY2QtPnUudGNyeXB0LmhkciwNCiAJCQkJICAgICZjZC0+dS50Y3J5cHQucGFy YW1zLCBmbGFncyk7DQorDQorCX0gZWxzZSBpZiAoaXNEQ1JZUFRPUihjZC0+dHlwZSkpIHsNCisg ICAgICAgICAgICAgICAgLy8gVE9ETw0KKw0KKw0KIAl9IGVsc2UgaWYgKGlzSU5URUdSSVRZKGNk LT50eXBlKSkgew0KIAkJaWYgKCFuYW1lKQ0KIAkJCXJldHVybiAwOw0KQEAgLTQ2MzIsNiArNDY4 NCw3IEBAIGludCBjcnlwdF9kZWFjdGl2YXRlX2J5X25hbWUoc3RydWN0IGNyeXB0X2RldmljZSAq Y2QsIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90DQogCQkJCXIgPSBMVUtTMl9kZWFjdGl2YXRl KGNkLCBuYW1lLCBoZHIyLCAmZG1kLCBmbGFncyk7DQogCQkJZWxzZSBpZiAoaXNUQ1JZUFQoY2Qt PnR5cGUpKQ0KIAkJCQlyID0gVENSWVBUX2RlYWN0aXZhdGUoY2QsIG5hbWUsIGZsYWdzKTsNCisg ICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPDQogCQkJZWxzZQ0KIAkJCQlyID0gZG1fcmVt b3ZlX2RldmljZShjZCwgbmFtZSwgZmxhZ3MpOw0KIAkJCWlmIChyIDwgMCAmJiBjcnlwdF9zdGF0 dXMoY2QsIG5hbWUpID09IENSWVBUX0JVU1kpIHsNCkBAIC00Njg2LDYgKzQ3MzksOCBAQCBpbnQg Y3J5cHRfZ2V0X2FjdGl2ZV9kZXZpY2Uoc3RydWN0IGNyeXB0X2RldmljZSAqY2QsIGNvbnN0IGNo YXIgKm5hbWUsDQogCWlmIChjZCAmJiBpc1RDUllQVChjZC0+dHlwZSkpIHsNCiAJCWNhZC0+b2Zm c2V0CT0gVENSWVBUX2dldF9kYXRhX29mZnNldChjZCwgJmNkLT51LnRjcnlwdC5oZHIsICZjZC0+ dS50Y3J5cHQucGFyYW1zKTsNCiAJCWNhZC0+aXZfb2Zmc2V0CT0gVENSWVBUX2dldF9pdl9vZmZz ZXQoY2QsICZjZC0+dS50Y3J5cHQuaGRyLCAmY2QtPnUudGNyeXB0LnBhcmFtcyk7DQorDQorICAg ICAgICAvLyBUT0RPDQogCX0gZWxzZSB7DQogCQl3aGlsZSAodGd0KSB7DQogCQkJaWYgKHRndC0+ dHlwZSA9PSBETV9DUllQVCAmJiAobWluX29mZnNldCA+IHRndC0+dS5jcnlwdC5vZmZzZXQpKSB7 DQpAQCAtNDc3OCw2ICs0ODMzLDggQEAgaW50IGNyeXB0X3ZvbHVtZV9rZXlfZ2V0KHN0cnVjdCBj cnlwdF9kZXZpY2UgKmNkLA0KIAkJCQlwYXNzcGhyYXNlLCBwYXNzcGhyYXNlX3NpemUsICZ2ayk7 DQogCX0gZWxzZSBpZiAoaXNUQ1JZUFQoY2QtPnR5cGUpKSB7DQogCQlyID0gVENSWVBUX2dldF92 b2x1bWVfa2V5KGNkLCAmY2QtPnUudGNyeXB0LmhkciwgJmNkLT51LnRjcnlwdC5wYXJhbXMsICZ2 ayk7DQorCX0gZWxzZSBpZiAoaXNEQ1JZUFRPUihjZC0+dHlwZSkpIHsNCisgICAgICAgICAgICAg ICAgLy8gVE9ETw0KIAl9IGVsc2UgaWYgKGlzVkVSSVRZKGNkLT50eXBlKSkgew0KIAkJLyogdm9s dW1lX2tleSA9PSByb290IGhhc2ggKi8NCiAJCWlmIChjZC0+dS52ZXJpdHkucm9vdF9oYXNoKSB7 DQpAQCAtNDk5MCw2ICs1MDQ3LDcgQEAgaW50IGNyeXB0X2R1bXAoc3RydWN0IGNyeXB0X2Rldmlj ZSAqY2QpDQogCQlyZXR1cm4gX3Zlcml0eV9kdW1wKGNkKTsNCiAJZWxzZSBpZiAoaXNUQ1JZUFQo Y2QtPnR5cGUpKQ0KIAkJcmV0dXJuIFRDUllQVF9kdW1wKGNkLCAmY2QtPnUudGNyeXB0Lmhkciwg JmNkLT51LnRjcnlwdC5wYXJhbXMpOw0KKyAgICAgICAgLy8gVE9ETw0KIAllbHNlIGlmIChpc0lO VEVHUklUWShjZC0+dHlwZSkpDQogCQlyZXR1cm4gSU5URUdSSVRZX2R1bXAoY2QsIGNyeXB0X2Rh dGFfZGV2aWNlKGNkKSwgMCk7DQogCWVsc2UgaWYgKGlzQklUTEsoY2QtPnR5cGUpKQ0KQEAgLTUw NTUsNiArNTExMywxMCBAQCBjb25zdCBjaGFyICpjcnlwdF9nZXRfY2lwaGVyKHN0cnVjdCBjcnlw dF9kZXZpY2UgKmNkKQ0KIAlpZiAoaXNUQ1JZUFQoY2QtPnR5cGUpKQ0KIAkJcmV0dXJuIGNkLT51 LnRjcnlwdC5wYXJhbXMuY2lwaGVyOw0KIA0KKwlpZiAoaXNEQ1JZUFRPUihjZC0+dHlwZSkpDQor ICAgICAgICAgICAgICAgIC8vIFRPRE8NCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQor DQogCWlmIChpc0JJVExLKGNkLT50eXBlKSkNCiAJCXJldHVybiBjZC0+dS5iaXRsay5wYXJhbXMu Y2lwaGVyOw0KIA0KQEAgLTUwODgsNiArNTE1MCwxMCBAQCBjb25zdCBjaGFyICpjcnlwdF9nZXRf Y2lwaGVyX21vZGUoc3RydWN0IGNyeXB0X2RldmljZSAqY2QpDQogCWlmIChpc1RDUllQVChjZC0+ dHlwZSkpDQogCQlyZXR1cm4gY2QtPnUudGNyeXB0LnBhcmFtcy5tb2RlOw0KIA0KKwlpZiAoaXNE Q1JZUFRPUihjZC0+dHlwZSkpDQorICAgICAgICAgICAgICAgIC8vIFRPRE8NCisgICAgICAgICAg ICAgICAgcmV0dXJuICJ4dHMtcGxhaW42NCI7DQorDQogCWlmIChpc0JJVExLKGNkLT50eXBlKSkN CiAJCXJldHVybiBjZC0+dS5iaXRsay5wYXJhbXMuY2lwaGVyX21vZGU7DQogDQpAQCAtNTIzMSw2 ICs1Mjk3LDEwIEBAIGludCBjcnlwdF9nZXRfdm9sdW1lX2tleV9zaXplKHN0cnVjdCBjcnlwdF9k ZXZpY2UgKmNkKQ0KIAlpZiAoaXNUQ1JZUFQoY2QtPnR5cGUpKQ0KIAkJcmV0dXJuIGNkLT51LnRj cnlwdC5wYXJhbXMua2V5X3NpemU7DQogDQorCWlmIChpc0RDUllQVE9SKGNkLT50eXBlKSkNCisg ICAgICAgICAgICAgICAgLy8gVE9ETw0KKyAgICAgICAgICAgICAgICByZXR1cm4gNTEyOw0KKw0K IAlpZiAoaXNCSVRMSyhjZC0+dHlwZSkpDQogCQlyZXR1cm4gY2QtPnUuYml0bGsucGFyYW1zLmtl eV9zaXplIC8gODsNCiANCkBAIC01NDE4LDYgKzU0ODgsOCBAQCB1aW50NjRfdCBjcnlwdF9nZXRf ZGF0YV9vZmZzZXQoc3RydWN0IGNyeXB0X2RldmljZSAqY2QpDQogCWlmIChpc0JJVExLKGNkLT50 eXBlKSkNCiAJCXJldHVybiBjZC0+dS5iaXRsay5wYXJhbXMudm9sdW1lX2hlYWRlcl9zaXplIC8g U0VDVE9SX1NJWkU7DQogDQorICAgICAgICAvLyBUT0RPDQorDQogCXJldHVybiBjZC0+ZGF0YV9v ZmZzZXQ7DQogfQ0KIA0KQEAgLTU0MzUsNiArNTUwNyw4IEBAIHVpbnQ2NF90IGNyeXB0X2dldF9p dl9vZmZzZXQoc3RydWN0IGNyeXB0X2RldmljZSAqY2QpDQogCWlmIChpc1RDUllQVChjZC0+dHlw ZSkpDQogCQlyZXR1cm4gVENSWVBUX2dldF9pdl9vZmZzZXQoY2QsICZjZC0+dS50Y3J5cHQuaGRy LCAmY2QtPnUudGNyeXB0LnBhcmFtcyk7DQogDQorICAgICAgICAvLyBUT0RPDQorDQogCXJldHVy biAwOw0KIH0NCiANCkBAIC01NjUzLDYgKzU3MjcsOSBAQCB2b2lkICpjcnlwdF9nZXRfaGRyKHN0 cnVjdCBjcnlwdF9kZXZpY2UgKmNkLCBjb25zdCBjaGFyICp0eXBlKQ0KIAlpZiAoaXNUQ1JZUFQo Y2QtPnR5cGUpKQ0KIAkJcmV0dXJuICZjZC0+dS50Y3J5cHQ7DQogDQorCWlmIChpc0RDUllQVE9S KGNkLT50eXBlKSkNCisJCXJldHVybiAmY2QtPnUuZGNyeXB0b3I7DQorDQogCXJldHVybiBOVUxM Ow0KIH0NCiANCmRpZmYgLS1naXQgYS9zcmMvY3J5cHRzZXR1cC5jIGIvc3JjL2NyeXB0c2V0dXAu Yw0KaW5kZXggZjMyMWQ4ZDIuLmU4OTIxZGJkIDEwMDY0NA0KLS0tIGEvc3JjL2NyeXB0c2V0dXAu Yw0KKysrIGIvc3JjL2NyeXB0c2V0dXAuYw0KQEAgLTQ3OCw2ICs0NzgsNzMgQEAgb3V0Og0KIAly ZXR1cm4gcjsNCiB9DQogDQorc3RhdGljIGludCBkY3J5cHRvcl9sb2FkKHN0cnVjdCBjcnlwdF9k ZXZpY2UgKmNkLCBzdHJ1Y3QgY3J5cHRfcGFyYW1zX2RjcnlwdG9yICpwYXJhbXMpDQorew0KKwlp bnQgciwgdHJpZXMsIGVwZXJtID0gMDsNCisNCisJdHJpZXMgPSBfc2V0X3RyaWVzX3R0eSgpOw0K KwlkbyB7DQorCQlyID0gdG9vbHNfZ2V0X2tleShOVUxMLCBDT05TVF9DQVNUKGNoYXIqKikmcGFy YW1zLT5wYXNzcGhyYXNlLA0KKwkJCQkgICZwYXJhbXMtPnBhc3NwaHJhc2Vfc2l6ZSwgMCwgMCwg a2V5ZmlsZV9zdGRpbiwgQVJHX1VJTlQzMihPUFRfVElNRU9VVF9JRCksDQorCQkJCSBfdmVyaWZ5 X3Bhc3NwaHJhc2UoMCksIDAsIGNkKTsNCisJCWlmIChyIDwgMCkNCisJCQljb250aW51ZTsNCisN CisJCXIgPSBjcnlwdF9sb2FkKGNkLCBDUllQVF9EQ1JZUFRPUiwgcGFyYW1zKTsNCisNCisJCWlm IChyID09IC1FUEVSTSkgew0KKwkJCWxvZ19lcnIoXygiTm8gZGV2aWNlIGhlYWRlciBkZXRlY3Rl ZCB3aXRoIHRoaXMgcGFzc3BocmFzZS4iKSk7DQorCQkJZXBlcm0gPSAxOw0KKwkJfQ0KKw0KKwkJ aWYgKHIgPCAwKSB7DQorCQkJY3J5cHRfc2FmZV9mcmVlKENPTlNUX0NBU1QoY2hhciopcGFyYW1z LT5wYXNzcGhyYXNlKTsNCisJCQlwYXJhbXMtPnBhc3NwaHJhc2UgPSBOVUxMOw0KKwkJCXBhcmFt cy0+cGFzc3BocmFzZV9zaXplID0gMDsNCisJCX0NCisJCWNoZWNrX3NpZ25hbCgmcik7DQorCX0g d2hpbGUgKChyID09IC1FUEVSTSB8fCByID09IC1FUkFOR0UpICYmICgtLXRyaWVzID4gMCkpOw0K Kw0KKwkvKiBSZXBvcnQgd3JvbmcgcGFzc3BocmFzZSBpZiBhdCBsZWFzdCBvbmUgdHJ5IGZhaWxl ZCAqLw0KKwlpZiAoZXBlcm0gJiYgciA9PSAtRVBJUEUpDQorCQlyID0gLUVQRVJNOw0KKw0KKwly ZXR1cm4gcjsNCit9DQorDQorc3RhdGljIGludCBhY3Rpb25fb3Blbl9kY3J5cHRvcih2b2lkKQ0K K3sNCisJc3RydWN0IGNyeXB0X2RldmljZSAqY2QgPSBOVUxMOw0KKwlzdHJ1Y3QgY3J5cHRfcGFy YW1zX2RjcnlwdG9yIHBhcmFtcyA9IHsNCisJCS5rZXlmaWxlcyA9IE5VTEwsDQorCQkua2V5Zmls ZXNfY291bnQgPSAwLA0KKwkJLmZsYWdzID0gMCwNCisJCS5jaXBoZXIgPSBBUkdfU1RSKE9QVF9D SVBIRVJfSUQpLA0KKwl9Ow0KKwljb25zdCBjaGFyICphY3RpdmF0ZWRfbmFtZTsNCisJdWludDMy X3QgYWN0aXZhdGVfZmxhZ3MgPSAwOw0KKwlpbnQgcjsNCisNCisJYWN0aXZhdGVkX25hbWUgPSBB UkdfU0VUKE9QVF9URVNUX1BBU1NQSFJBU0VfSUQpID8gTlVMTCA6IGFjdGlvbl9hcmd2WzFdOw0K Kw0KKwlyID0gY3J5cHRfaW5pdF9kYXRhX2RldmljZSgmY2QsIEFSR19TVFIoT1BUX0hFQURFUl9J RCkgPzogYWN0aW9uX2FyZ3ZbMF0sIGFjdGlvbl9hcmd2WzBdKTsNCisJaWYgKHIgPCAwKQ0KKwkJ Z290byBvdXQ7DQorDQorCXIgPSBkY3J5cHRvcl9sb2FkKGNkLCAmcGFyYW1zKTsNCisJaWYgKHIg PCAwKQ0KKwkJZ290byBvdXQ7DQorDQorCV9zZXRfYWN0aXZhdGlvbl9mbGFncygmYWN0aXZhdGVf ZmxhZ3MpOw0KKw0KKwlpZiAoYWN0aXZhdGVkX25hbWUpDQorCQlyID0gY3J5cHRfYWN0aXZhdGVf Ynlfdm9sdW1lX2tleShjZCwgYWN0aXZhdGVkX25hbWUsIE5VTEwsIDAsIGFjdGl2YXRlX2ZsYWdz KTsNCitvdXQ6DQorCWNyeXB0X2ZyZWUoY2QpOw0KKwljcnlwdF9zYWZlX2ZyZWUoQ09OU1RfQ0FT VChjaGFyKilwYXJhbXMucGFzc3BocmFzZSk7DQorCXJldHVybiByOw0KK30NCisNCiBzdGF0aWMg aW50IGFjdGlvbl9vcGVuX2JpdGxrKHZvaWQpDQogew0KIAlzdHJ1Y3QgY3J5cHRfZGV2aWNlICpj ZCA9IE5VTEw7DQpAQCAtMjM5OSw2ICsyNDY2LDEwIEBAIHN0YXRpYyBpbnQgYWN0aW9uX29wZW4o dm9pZCkNCiAJCWlmIChhY3Rpb25fYXJnYyA8IDIgJiYgIUFSR19TRVQoT1BUX1RFU1RfUEFTU1BI UkFTRV9JRCkpDQogCQkJZ290byBvdXQ7DQogCQlyZXR1cm4gYWN0aW9uX29wZW5fdGNyeXB0KCk7 DQorCX0gZWxzZSBpZiAoIXN0cmNtcChkZXZpY2VfdHlwZSwgImRjcnlwdG9yIikpIHsNCisJCWlm IChhY3Rpb25fYXJnYyA8IDIgJiYgIUFSR19TRVQoT1BUX1RFU1RfUEFTU1BIUkFTRV9JRCkpDQor CQkJZ290byBvdXQ7DQorCQlyZXR1cm4gYWN0aW9uX29wZW5fZGNyeXB0b3IoKTsNCiAJfSBlbHNl IGlmICghc3RyY21wKGRldmljZV90eXBlLCAiYml0bGsiKSkgew0KIAkJaWYgKGFjdGlvbl9hcmdj IDwgMiAmJiAhQVJHX1NFVChPUFRfVEVTVF9QQVNTUEhSQVNFX0lEKSkNCiAJCQlnb3RvIG91dDsN CmRpZmYgLS1naXQgYS90ZXN0cy9kaXNrY3J5cHRvci9wYXNzd29yZC50eHQgYi90ZXN0cy9kaXNr Y3J5cHRvci9wYXNzd29yZC50eHQNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MC4uMDBkZWRmNmINCi0tLSAvZGV2L251bGwNCisrKyBiL3Rlc3RzL2Rpc2tjcnlwdG9yL3Bhc3N3 b3JkLnR4dA0KQEAgLTAsMCArMSBAQA0KK2FiY2RlDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGlza2Ny eXB0b3Ivdm9sdW1lX2Flcy5iaW4gYi90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzLmJpbg0K bmV3IGZpbGUgbW9kZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAwLi5jMmQwNTVlOA0KQmluYXJ5IGZp bGVzIC9kZXYvbnVsbCBhbmQgYi90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzLmJpbiBkaWZm ZXINCmRpZmYgLS1naXQgYS90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzX3R3b2Zpc2guYmlu IGIvdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX2Flc190d29maXNoLmJpbg0KbmV3IGZpbGUgbW9k ZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAwLi5jM2UwMTZjNg0KQmluYXJ5IGZpbGVzIC9kZXYvbnVs bCBhbmQgYi90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzX3R3b2Zpc2guYmluIGRpZmZlcg0K ZGlmZiAtLWdpdCBhL3Rlc3RzL2Rpc2tjcnlwdG9yL3ZvbHVtZV9hZXNfdHdvZmlzaF9zZXJwZW50 LmJpbiBiL3Rlc3RzL2Rpc2tjcnlwdG9yL3ZvbHVtZV9hZXNfdHdvZmlzaF9zZXJwZW50LmJpbg0K bmV3IGZpbGUgbW9kZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAwLi5lM2JjOTI1Mg0KQmluYXJ5IGZp bGVzIC9kZXYvbnVsbCBhbmQgYi90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfYWVzX3R3b2Zpc2hf c2VycGVudC5iaW4gZGlmZmVyDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1l X3NlcnBlbnQuYmluIGIvdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX3NlcnBlbnQuYmluDQpuZXcg ZmlsZSBtb2RlIDEwMDc1NQ0KaW5kZXggMDAwMDAwMDAuLjZiNWZkMzY4DQpCaW5hcnkgZmlsZXMg L2Rldi9udWxsIGFuZCBiL3Rlc3RzL2Rpc2tjcnlwdG9yL3ZvbHVtZV9zZXJwZW50LmJpbiBkaWZm ZXINCmRpZmYgLS1naXQgYS90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfc2VycGVudF9hZXMuYmlu IGIvdGVzdHMvZGlza2NyeXB0b3Ivdm9sdW1lX3NlcnBlbnRfYWVzLmJpbg0KbmV3IGZpbGUgbW9k ZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAwLi5mMDVmNTcwZA0KQmluYXJ5IGZpbGVzIC9kZXYvbnVs bCBhbmQgYi90ZXN0cy9kaXNrY3J5cHRvci92b2x1bWVfc2VycGVudF9hZXMuYmluIGRpZmZlcg0K ZGlmZiAtLWdpdCBhL3Rlc3RzL2Rpc2tjcnlwdG9yL3ZvbHVtZV90d29maXNoLmJpbiBiL3Rlc3Rz L2Rpc2tjcnlwdG9yL3ZvbHVtZV90d29maXNoLmJpbg0KbmV3IGZpbGUgbW9kZSAxMDA3NTUNCmlu ZGV4IDAwMDAwMDAwLi42ZGZiNzk1Mg0KQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi90ZXN0 cy9kaXNrY3J5cHRvci92b2x1bWVfdHdvZmlzaC5iaW4gZGlmZmVyDQpkaWZmIC0tZ2l0IGEvdGVz dHMvZGlza2NyeXB0b3Ivdm9sdW1lX3R3b2Zpc2hfc2VycGVudC5iaW4gYi90ZXN0cy9kaXNrY3J5 cHRvci92b2x1bWVfdHdvZmlzaF9zZXJwZW50LmJpbg0KbmV3IGZpbGUgbW9kZSAxMDA3NTUNCmlu ZGV4IDAwMDAwMDAwLi43MDRhZTFjNA0KQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi90ZXN0 cy9kaXNrY3J5cHRvci92b2x1bWVfdHdvZmlzaF9zZXJwZW50LmJpbiBkaWZmZXINCi0tIA0KMi4y NS4xDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRt LWNyeXB0IG1haWxpbmcgbGlzdCAtLSBkbS1jcnlwdEBzYW91dC5kZQpUbyB1bnN1YnNjcmliZSBz ZW5kIGFuIGVtYWlsIHRvIGRtLWNyeXB0LWxlYXZlQHNhb3V0LmRlCg==