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 X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26892C4727E for ; Sun, 27 Sep 2020 08:42:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC5E223977 for ; Sun, 27 Sep 2020 08:42:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="BS+IXpHf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730585AbgI0ImG (ORCPT ); Sun, 27 Sep 2020 04:42:06 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:38782 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1730474AbgI0ImG (ORCPT ); Sun, 27 Sep 2020 04:42:06 -0400 X-UUID: 171e60b562dc4fdb9c18b49a3a810ae2-20200927 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=QleYhuwnbelTuGStTKgnywWSqh557Do7nZMw55hQZz8=; b=BS+IXpHfbyrUVAlSKE4OTF6si4yfzPrdWnDrSiAXTNJVKHyKdsLAifYI6Fsc7zzOS4KeeYfUboiF91LpOPft0aBgD1CXndxsP8N/+R14FNr0bVwG252XVjcrzV9/uUBJAKH9CZK3krKGuAOCM1bhMutGdYiw4uNHWu8SbJL5tyE=; X-UUID: 171e60b562dc4fdb9c18b49a3a810ae2-20200927 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1391199153; Sun, 27 Sep 2020 16:41:52 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 27 Sep 2020 16:41:50 +0800 Received: from localhost.localdomain (10.15.20.246) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sun, 27 Sep 2020 16:41:49 +0800 From: Gray Jia To: Ulf Hansson , Chaotian Jing , Adrian Hunter CC: Masahiro Yamada , Martin Blumenstingl , Ritesh Harjani , Angelo Dureghello , Takao Orito , Stephen Boyd , Ben Chuang , Manivannan Sadhasivam , , , , , , Gray Jia Subject: [PATCH] MMC: Add MMC host software CQHCI interface Date: Sun, 27 Sep 2020 16:36:06 +0800 Message-ID: <1601195766-26648-1-git-send-email-gray.jia@mediatek.com> X-Mailer: git-send-email 2.6.4 MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org CVNvbWUgZW1tYyBob3N0cyBtYXkgbm90IHN1cHBvcnQgY3FoY2kgaGFyZHdhcmUsIGJ1dCBjbWRz IGNhbiBiZSBzZW50DQpkdXJpbmcgZGF0YSB0cmFuc21pc3Npb24uDQoJSW4gdGhpcyBjYXNlLCB1 c2luZyB0aGUgdHJhZGl0aW9uYWwgaG9zdCBzZW5kIGNsYXNzMTEgY21kcyB0byBtYW5hZ2UNCmRl dmljZSBjbWRxKGVNTUMgZGV2aWNlIGFmdGVyIHNwZWM1LjApIGNhbiBnYWluIHRoZSBzaWduaWZp Y2FudCBwZXJmb3JtYW5jZQ0KaW1wcm92ZW1lbnQuIFdlIGhhdmUgZG9uZSBleHBlcmltZW50cyBv biB0aGUgbXRrIHBsYXRmb3JtKG10Njc2MSkuDQoJVGhlIHBlcmZvcm1hbmNlIHNob3dzIHRoYXQg Og0KCQktLWJlbmNobWFyayhhbmRyb2lkIGFwazogYW5kcm9iZW5jaCBzcGVlZDogTUIvcykNCglz ZXF1ZW50aWFsX3JlYWQgIHNlcXVlbnRpYWxfd3JpdGUgIHJhbmRvbV9yZWFkICByYW5kb21fd3Jp dGUNCgl3LyAgc3djbWRxICAgICAgICAgMjcyICAgICAgICAgICAgIDE0MiAgICAgICAgICAgICA2 MiAgICAgICAgICAgIDM1DQoJdy9vIHN3Y21kcSAgICAgICAgIDI3MCAgICAgICAgICAgICAxNDIg ICAgICAgICAgICAgMjUgICAgICAgICAgICAzNA0KDQoJUGVyaGFwcyBpdCBjYW4gYmUgY2FsbGVk IHNvZnR3YXJlIGNxaGNpIGluZnRlcmZhY2UuIEFuZCB0aGUgc291cmNlIGNvZGUNCnJlbGllcyBv biB0aGUgbWFuYWdlbWVudCBvZiB0aHJlZSAzMi1iaXRzIGJpdG1hcHMgZm9yIHRhc2sgbWFuYWdl bWVudCA6DQp0YXNrcyB0byBiZSBzZXQoY21kNDQvNDUpLA0KdGFza3MgdG8gYmUgZXhlY3V0ZShj bWQ0Ni80NyksDQp0YXNrcyB0byBiZSBwb2xsIHJlYWR5KGNtZDEzIHdpdGggcXNyIHJlcXVlc3Qp Lg0KDQpTaWduZWQtb2ZmLWJ5OiBHcmF5IEppYSA8Z3JheS5qaWFAbWVkaWF0ZWsuY29tPg0KLS0t DQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgIHwgICA1ICsNCiBkcml2ZXJzL21tYy9jb3Jl L3F1ZXVlLmggICAgfCAxMTggKy0tLS0tLS0tLQ0KIGRyaXZlcnMvbW1jL2hvc3QvS2NvbmZpZyAg ICB8ICAxMSArDQogZHJpdmVycy9tbWMvaG9zdC9NYWtlZmlsZSAgIHwgICAxICsNCiBkcml2ZXJz L21tYy9ob3N0L210ay1zZC5jICAgfCAzMDcgKysrKysrKysrKysrKysrKysrKystLS0tDQogZHJp dmVycy9tbWMvaG9zdC9zdy1jcWhjaS5jIHwgNDUwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KIGRyaXZlcnMvbW1jL2hvc3Qvc3ctY3FoY2kuaCB8ICA2OSArKysrKysNCiBp bmNsdWRlL2xpbnV4L21tYy9ob3N0LmggICAgfCAgIDEgKw0KIGluY2x1ZGUvbGludXgvbW1jL3F1 ZXVlLmggICB8IDExNSArKysrKysrKysNCiA5IGZpbGVzIGNoYW5nZWQsIDkxNSBpbnNlcnRpb25z KCspLCAxNjIgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbW1jL2hv c3Qvc3ctY3FoY2kuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21tYy9ob3N0L3N3LWNx aGNpLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9tbWMvcXVldWUuaA0KDQpk aWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUw0KaW5kZXggZGVhYWZiNjE3MzYx Li4xZjc4NTZiMWIwMDIgMTAwNjQ0DQotLS0gYS9NQUlOVEFJTkVSUw0KKysrIGIvTUFJTlRBSU5F UlMNCkBAIC02NDAxLDYgKzY0MDEsMTEgQEAgTDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZw0K IFM6CU1haW50YWluZWQNCiBGOglkcml2ZXJzL21tYy9ob3N0L2NxaGNpKg0KIA0KK0VNTUMgU1cg Q01EUSBIT1NUIENPTlRST0xMRVIgSU5URVJGQUNFIChDUUhDSSkgRFJJVkVSDQorTToJR3JheSBK aWEgPGdyYXkuamlhQG1lZGlhdGVrLmNvbT4NCitTOglTdXBwb3J0ZWQNCitGOglkcml2ZXJzL21t Yy9ob3N0L3N3LWNxaGNpLioNCisNCiBFTVVMRVggMTBHYnBzIGlTQ1NJIC0gT25lQ29ubmVjdCBE UklWRVINCiBNOglTdWJidSBTZWV0aGFyYW1hbiA8c3ViYnUuc2VldGhhcmFtYW5AYnJvYWRjb20u Y29tPg0KIE06CUtldGFuIE11a2FkYW0gPGtldGFuLm11a2FkYW1AYnJvYWRjb20uY29tPg0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuaCBiL2RyaXZlcnMvbW1jL2NvcmUvcXVl dWUuaA0KaW5kZXggZmQxMTQ5MWNlZDlmLi5iM2Y0NTk1ZWE3OWMgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL21tYy9jb3JlL3F1ZXVlLmgNCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvcXVldWUuaA0KQEAg LTIsMTIzICsyLDE5IEBADQogI2lmbmRlZiBNTUNfUVVFVUVfSA0KICNkZWZpbmUgTU1DX1FVRVVF X0gNCiANCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCi0jaW5jbHVkZSA8bGludXgvYmxrZGV2 Lmg+DQotI2luY2x1ZGUgPGxpbnV4L2Jsay1tcS5oPg0KLSNpbmNsdWRlIDxsaW51eC9tbWMvY29y ZS5oPg0KLSNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tbWMv cXVldWUuaD4NCiANCi1lbnVtIG1tY19pc3N1ZWQgew0KLQlNTUNfUkVRX1NUQVJURUQsDQotCU1N Q19SRVFfQlVTWSwNCi0JTU1DX1JFUV9GQUlMRURfVE9fU1RBUlQsDQotCU1NQ19SRVFfRklOSVNI RUQsDQotfTsNCi0NCi1lbnVtIG1tY19pc3N1ZV90eXBlIHsNCi0JTU1DX0lTU1VFX1NZTkMsDQot CU1NQ19JU1NVRV9EQ01ELA0KLQlNTUNfSVNTVUVfQVNZTkMsDQotCU1NQ19JU1NVRV9NQVgsDQot fTsNCi0NCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBtbWNfcXVldWVfcmVxICpyZXFfdG9fbW1jX3F1 ZXVlX3JlcShzdHJ1Y3QgcmVxdWVzdCAqcnEpDQotew0KLQlyZXR1cm4gYmxrX21xX3JxX3RvX3Bk dShycSk7DQotfQ0KLQ0KLXN0cnVjdCBtbWNfcXVldWVfcmVxOw0KLQ0KLXN0YXRpYyBpbmxpbmUg c3RydWN0IHJlcXVlc3QgKm1tY19xdWV1ZV9yZXFfdG9fcmVxKHN0cnVjdCBtbWNfcXVldWVfcmVx ICptcXIpDQotew0KLQlyZXR1cm4gYmxrX21xX3JxX2Zyb21fcGR1KG1xcik7DQotfQ0KLQ0KLXN0 cnVjdCBtbWNfYmxrX2RhdGE7DQotc3RydWN0IG1tY19ibGtfaW9jX2RhdGE7DQotDQotc3RydWN0 IG1tY19ibGtfcmVxdWVzdCB7DQotCXN0cnVjdCBtbWNfcmVxdWVzdAltcnE7DQotCXN0cnVjdCBt bWNfY29tbWFuZAlzYmM7DQotCXN0cnVjdCBtbWNfY29tbWFuZAljbWQ7DQotCXN0cnVjdCBtbWNf Y29tbWFuZAlzdG9wOw0KLQlzdHJ1Y3QgbW1jX2RhdGEJCWRhdGE7DQotfTsNCi0NCi0vKioNCi0g KiBlbnVtIG1tY19kcnZfb3AgLSBlbnVtZXJhdGVzIHRoZSBvcGVyYXRpb25zIGluIHRoZSBtbWNf cXVldWVfcmVxDQotICogQE1NQ19EUlZfT1BfSU9DVEw6IGlvY3RsIG9wZXJhdGlvbg0KLSAqIEBN TUNfRFJWX09QX0lPQ1RMX1JQTUI6IFJQTUItb3JpZW50ZWQgaW9jdGwgb3BlcmF0aW9uDQotICog QE1NQ19EUlZfT1BfQk9PVF9XUDogd3JpdGUgcHJvdGVjdCBib290IHBhcnRpdGlvbnMNCi0gKiBA TU1DX0RSVl9PUF9HRVRfQ0FSRF9TVEFUVVM6IGdldCBjYXJkIHN0YXR1cw0KLSAqIEBNTUNfRFJW X09QX0dFVF9FWFRfQ1NEOiBnZXQgdGhlIEVYVCBDU0QgZnJvbSBhbiBlTU1DIGNhcmQNCi0gKi8N Ci1lbnVtIG1tY19kcnZfb3Agew0KLQlNTUNfRFJWX09QX0lPQ1RMLA0KLQlNTUNfRFJWX09QX0lP Q1RMX1JQTUIsDQotCU1NQ19EUlZfT1BfQk9PVF9XUCwNCi0JTU1DX0RSVl9PUF9HRVRfQ0FSRF9T VEFUVVMsDQotCU1NQ19EUlZfT1BfR0VUX0VYVF9DU0QsDQotfTsNCi0NCi1zdHJ1Y3QgbW1jX3F1 ZXVlX3JlcSB7DQotCXN0cnVjdCBtbWNfYmxrX3JlcXVlc3QJYnJxOw0KLQlzdHJ1Y3Qgc2NhdHRl cmxpc3QJKnNnOw0KLQllbnVtIG1tY19kcnZfb3AJCWRydl9vcDsNCi0JaW50CQkJZHJ2X29wX3Jl c3VsdDsNCi0Jdm9pZAkJCSpkcnZfb3BfZGF0YTsNCi0JdW5zaWduZWQgaW50CQlpb2NfY291bnQ7 DQotCWludAkJCXJldHJpZXM7DQotfTsNCi0NCi1zdHJ1Y3QgbW1jX3F1ZXVlIHsNCi0Jc3RydWN0 IG1tY19jYXJkCQkqY2FyZDsNCi0Jc3RydWN0IG1tY19jdHgJCWN0eDsNCi0Jc3RydWN0IGJsa19t cV90YWdfc2V0CXRhZ19zZXQ7DQotCXN0cnVjdCBtbWNfYmxrX2RhdGEJKmJsa2RhdGE7DQotCXN0 cnVjdCByZXF1ZXN0X3F1ZXVlCSpxdWV1ZTsNCi0Jc3BpbmxvY2tfdAkJbG9jazsNCi0JaW50CQkJ aW5fZmxpZ2h0W01NQ19JU1NVRV9NQVhdOw0KLQl1bnNpZ25lZCBpbnQJCWNxZV9idXN5Ow0KLSNk ZWZpbmUgTU1DX0NRRV9EQ01EX0JVU1kJQklUKDApDQotI2RlZmluZSBNTUNfQ1FFX1FVRVVFX0ZV TEwJQklUKDEpDQotCWJvb2wJCQlidXN5Ow0KLQlib29sCQkJdXNlX2NxZTsNCi0JYm9vbAkJCXJl Y292ZXJ5X25lZWRlZDsNCi0JYm9vbAkJCWluX3JlY292ZXJ5Ow0KLQlib29sCQkJcndfd2FpdDsN Ci0JYm9vbAkJCXdhaXRpbmc7DQotCXN0cnVjdCB3b3JrX3N0cnVjdAlyZWNvdmVyeV93b3JrOw0K LQl3YWl0X3F1ZXVlX2hlYWRfdAl3YWl0Ow0KLQlzdHJ1Y3QgcmVxdWVzdAkJKnJlY292ZXJ5X3Jl cTsNCi0Jc3RydWN0IHJlcXVlc3QJCSpjb21wbGV0ZV9yZXE7DQotCXN0cnVjdCBtdXRleAkJY29t cGxldGVfbG9jazsNCi0Jc3RydWN0IHdvcmtfc3RydWN0CWNvbXBsZXRlX3dvcms7DQotfTsNCi0N Ci1leHRlcm4gaW50IG1tY19pbml0X3F1ZXVlKHN0cnVjdCBtbWNfcXVldWUgKiwgc3RydWN0IG1t Y19jYXJkICopOw0KLWV4dGVybiB2b2lkIG1tY19jbGVhbnVwX3F1ZXVlKHN0cnVjdCBtbWNfcXVl dWUgKik7DQotZXh0ZXJuIHZvaWQgbW1jX3F1ZXVlX3N1c3BlbmQoc3RydWN0IG1tY19xdWV1ZSAq KTsNCi1leHRlcm4gdm9pZCBtbWNfcXVldWVfcmVzdW1lKHN0cnVjdCBtbWNfcXVldWUgKik7DQot ZXh0ZXJuIHVuc2lnbmVkIGludCBtbWNfcXVldWVfbWFwX3NnKHN0cnVjdCBtbWNfcXVldWUgKiwN Ci0JCQkJICAgICBzdHJ1Y3QgbW1jX3F1ZXVlX3JlcSAqKTsNCitpbnQgbW1jX2luaXRfcXVldWUo c3RydWN0IG1tY19xdWV1ZSAqLCBzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQpOw0KK3ZvaWQgbW1jX2Ns ZWFudXBfcXVldWUoc3RydWN0IG1tY19xdWV1ZSAqbXEpOw0KK3ZvaWQgbW1jX3F1ZXVlX3N1c3Bl bmQoc3RydWN0IG1tY19xdWV1ZSAqbXEpOw0KK3ZvaWQgbW1jX3F1ZXVlX3Jlc3VtZShzdHJ1Y3Qg bW1jX3F1ZXVlICptcSk7DQordW5zaWduZWQgaW50IG1tY19xdWV1ZV9tYXBfc2coc3RydWN0IG1t Y19xdWV1ZSAqbXEsDQorCQkJCSAgICAgc3RydWN0IG1tY19xdWV1ZV9yZXEgKm1xcnEpOw0KIA0K IHZvaWQgbW1jX2NxZV9jaGVja19idXN5KHN0cnVjdCBtbWNfcXVldWUgKm1xKTsNCiB2b2lkIG1t Y19jcWVfcmVjb3Zlcnlfbm90aWZpZXIoc3RydWN0IG1tY19yZXF1ZXN0ICptcnEpOw0KIA0KIGVu dW0gbW1jX2lzc3VlX3R5cGUgbW1jX2lzc3VlX3R5cGUoc3RydWN0IG1tY19xdWV1ZSAqbXEsIHN0 cnVjdCByZXF1ZXN0ICpyZXEpOw0KIA0KLXN0YXRpYyBpbmxpbmUgaW50IG1tY190b3RfaW5fZmxp Z2h0KHN0cnVjdCBtbWNfcXVldWUgKm1xKQ0KLXsNCi0JcmV0dXJuIG1xLT5pbl9mbGlnaHRbTU1D X0lTU1VFX1NZTkNdICsNCi0JICAgICAgIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0RDTURdICsN Ci0JICAgICAgIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0FTWU5DXTsNCi19DQotDQotc3RhdGlj IGlubGluZSBpbnQgbW1jX2NxZV9xY250KHN0cnVjdCBtbWNfcXVldWUgKm1xKQ0KLXsNCi0JcmV0 dXJuIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0RDTURdICsNCi0JICAgICAgIG1xLT5pbl9mbGln aHRbTU1DX0lTU1VFX0FTWU5DXTsNCi19DQogDQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tbWMvaG9zdC9LY29uZmlnIGIvZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnDQppbmRleCA5Yzg5 YTViNzgwZTguLmUwZjU5ZDY3NWNmMSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvS2Nv bmZpZw0KKysrIGIvZHJpdmVycy9tbWMvaG9zdC9LY29uZmlnDQpAQCAtOTc3LDYgKzk3NywxNyBA QCBjb25maWcgTU1DX0NRSENJDQogDQogCSAgSWYgdW5zdXJlLCBzYXkgTi4NCiANCitjb25maWcg TU1DX1NXX0NRSENJDQorCXRyaXN0YXRlICJTb2Zld2FyZSBDb21tYW5kIFF1ZXVlIEhvc3QgQ29u dHJvbGxlciBJbnRlcmZhY2Ugc3VwcG9ydCINCisJaGVscA0KKwkgIFNvbWUgbW1jIGhvc3QgbWF5 YmUgbm90IGhhdmUgQ1FIQ0kgaGFyZHdhcmUuDQorCSAgVGhpcyBzZWxlY3RzIHRoZSBTb2Z0ZXdh cmUgQ29tbWFuZCBRdWV1ZSBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlDQorCSAgLCB3aGljaCB3 aWxsIGdldCBiZXR0ZXIgcGVyZm9ybWFuY2UgYnV0IHdpbGwgY29uc3VtZSBtb3JlIENQVSB0aW1l Lg0KKw0KKwkgIElmIHlvdSB3YW50LCBzYXkgWSBvciBNIGhlcmUuDQorDQorCSAgSWYgdW5zdXJl LCBzYXkgTi4NCisNCiBjb25maWcgTU1DX0hTUQ0KIAl0cmlzdGF0ZSAiTU1DIEhvc3QgU29mdHdh cmUgUXVldWUgc3VwcG9ydCINCiAJaGVscA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qv TWFrZWZpbGUgYi9kcml2ZXJzL21tYy9ob3N0L01ha2VmaWxlDQppbmRleCA0ZDViY2IwMTQ0YTAu Ljk4ZTM5ODUzMDU2YiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGUNCisr KyBiL2RyaXZlcnMvbW1jL2hvc3QvTWFrZWZpbGUNCkBAIC0xMDMsNiArMTAzLDcgQEAgb2JqLSQo Q09ORklHX01NQ19TREhDSV9CUkNNU1RCKQkJKz0gc2RoY2ktYnJjbXN0Yi5vDQogb2JqLSQoQ09O RklHX01NQ19TREhDSV9PTUFQKQkJKz0gc2RoY2ktb21hcC5vDQogb2JqLSQoQ09ORklHX01NQ19T REhDSV9TUFJEKQkJKz0gc2RoY2ktc3ByZC5vDQogb2JqLSQoQ09ORklHX01NQ19DUUhDSSkJCQkr PSBjcWhjaS5vDQorb2JqLSQoQ09ORklHX01NQ19TV19DUUhDSSkJCSs9IHN3LWNxaGNpLm8NCiBv YmotJChDT05GSUdfTU1DX0hTUSkJCQkrPSBtbWNfaHNxLm8NCiANCiBpZmVxICgkKENPTkZJR19D QjcxMF9ERUJVRykseSkNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L210ay1zZC5jIGIv ZHJpdmVycy9tbWMvaG9zdC9tdGstc2QuYw0KaW5kZXggNGUyNTgzZjY5YTYzLi5mNTcyZjcxNDAx NGQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21tYy9ob3N0L210ay1zZC5jDQorKysgYi9kcml2ZXJz L21tYy9ob3N0L210ay1zZC5jDQpAQCAtMTksNiArMTksNyBAQA0KICNpbmNsdWRlIDxsaW51eC9w bS5oPg0KICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQogI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPg0KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC9jbG9jay5oPg0KICNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KQEAgLTMzLDYgKzM0LDkgQEANCiANCiAjaW5jbHVk ZSAiY3FoY2kuaCINCiANCisjaWZkZWYgQ09ORklHX01NQ19TV19DUUhDSQ0KKyNpbmNsdWRlICJz dy1jcWhjaS5oIg0KKyNlbmRpZg0KICNkZWZpbmUgTUFYX0JEX05VTSAgICAgICAgICAxMDI0DQog DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpAQCAtNzYsNiArODAsNyBAQA0KICNkZWZpbmUgTVNE Q19QQURfVFVORTAgICAweGYwDQogI2RlZmluZSBQQURfRFNfVFVORSAgICAgIDB4MTg4DQogI2Rl ZmluZSBQQURfQ01EX1RVTkUgICAgIDB4MThjDQorI2RlZmluZSBFTU1DNTFfQ0ZHMCAgICAgIDB4 MjA0DQogI2RlZmluZSBFTU1DNTBfQ0ZHMCAgICAgIDB4MjA4DQogI2RlZmluZSBFTU1DNTBfQ0ZH MyAgICAgIDB4MjIwDQogI2RlZmluZSBTRENfRklGT19DRkcgICAgIDB4MjI4DQpAQCAtMjY4LDYg KzI3MywxNCBAQA0KICNkZWZpbmUgU0RDX0ZJRk9fQ0ZHX1dSVkFMSURTRUwgICAoMHgxIDw8IDI0 KSAgLyogUlcgKi8NCiAjZGVmaW5lIFNEQ19GSUZPX0NGR19SRFZBTElEU0VMICAgKDB4MSA8PCAy NSkgIC8qIFJXICovDQogDQorLyogRU1NQzUxX0NGRzAgbWFzaywgaG9zdCB1c2UgdGhlc2UgcmVn aXN0ZXJzIGJpdHMNCisgKiB0byBzZW5kIGNsYXNzMTEoQ01EUSkgY21kcyBkdXJpbmcgZGF0YSB0 cmFuc21pc3Npb24uDQorICovDQorI2RlZmluZSBFTU1DNTFfQ0ZHX0NNRFFFTiAgICAgICAgICAo MHgxICAgIDw8ICAwKQ0KKyNkZWZpbmUgRU1NQzUxX0NGR19OVU0gICAgICAgICAgICAgKDB4M0Yg ICA8PCAgMSkNCisjZGVmaW5lIEVNTUM1MV9DRkdfUlNQVFlQRSAgICAgICAgICgweDcgICAgPDwg IDcpDQorI2RlZmluZSBFTU1DNTFfQ0ZHX0RUWVBFICAgICAgICAgICAoMHgzICAgIDw8IDEwKQ0K KyNkZWZpbmUgRU1NQzUxX0NNRFFfTUFTSyAgICAgICAgICAgKDB4RkZGKQ0KIC8qIEVNTUNfVE9Q X0NPTlRST0wgbWFzayAqLw0KICNkZWZpbmUgUEFEX1JYRExZX1NFTCAgICAgICAgICAgKDB4MSA8 PCAwKSAgICAgIC8qIFJXICovDQogI2RlZmluZSBERUxBWV9FTiAgICAgICAgICAgICAgICAoMHgx IDw8IDEpICAgICAgLyogUlcgKi8NCkBAIC00NDEsNiArNDU0LDcgQEAgc3RydWN0IG1zZGNfaG9z dCB7DQogCXN0cnVjdCBtc2RjX3R1bmVfcGFyYSBkZWZfdHVuZV9wYXJhOyAvKiBkZWZhdWx0IHR1 bmUgc2V0dGluZyAqLw0KIAlzdHJ1Y3QgbXNkY190dW5lX3BhcmEgc2F2ZWRfdHVuZV9wYXJhOyAv KiB0dW5lIHJlc3VsdCBvZiBDTUQyMS9DTUQxOSAqLw0KIAlzdHJ1Y3QgY3FoY2lfaG9zdCAqY3Ff aG9zdDsNCisJc3RydWN0IHN3Y3FfaG9zdCAqc3djcV9ob3N0Ow0KIH07DQogDQogc3RhdGljIGNv bnN0IHN0cnVjdCBtdGtfbW1jX2NvbXBhdGlibGUgbXQ4MTM1X2NvbXBhdCA9IHsNCkBAIC01NTcs NiArNTcxLDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tY19jb21wYXRpYmxlIG10Njc3 OV9jb21wYXQgPSB7DQogCS5zdXBwb3J0XzY0ZyA9IHRydWUsDQogfTsNCiANCitzdGF0aWMgY29u c3Qgc3RydWN0IG10a19tbWNfY29tcGF0aWJsZSBtdDY3NjFfY29tcGF0ID0gew0KKwkuY2xrX2Rp dl9iaXRzID0gMTIsDQorCS5oczQwMF90dW5lID0gdHJ1ZSwNCisJLnBhZF90dW5lX3JlZyA9IE1T RENfUEFEX1RVTkUwLA0KKwkuYXN5bmNfZmlmbyA9IHRydWUsDQorCS5kYXRhX3R1bmUgPSB0cnVl LA0KKwkuYnVzeV9jaGVjayA9IHRydWUsDQorCS5zdG9wX2Nsa19maXggPSB0cnVlLA0KKwkuZW5o YW5jZV9yeCA9IHRydWUsDQorCS5zdXBwb3J0XzY0ZyA9IHRydWUsDQorfTsNCisNCiBzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtc2RjX29mX2lkc1tdID0gew0KIAl7IC5jb21wYXRp YmxlID0gIm1lZGlhdGVrLG10ODEzNS1tbWMiLCAuZGF0YSA9ICZtdDgxMzVfY29tcGF0fSwNCiAJ eyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtbW1jIiwgLmRhdGEgPSAmbXQ4MTczX2Nv bXBhdH0sDQpAQCAtNTY3LDYgKzU5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIG1zZGNfb2ZfaWRzW10gPSB7DQogCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4NTE2 LW1tYyIsIC5kYXRhID0gJm10ODUxNl9jb21wYXR9LA0KIAl7IC5jb21wYXRpYmxlID0gIm1lZGlh dGVrLG10NzYyMC1tbWMiLCAuZGF0YSA9ICZtdDc2MjBfY29tcGF0fSwNCiAJeyAuY29tcGF0aWJs ZSA9ICJtZWRpYXRlayxtdDY3NzktbW1jIiwgLmRhdGEgPSAmbXQ2Nzc5X2NvbXBhdH0sDQorCXsg LmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2NzYxLW1tYyIsIC5kYXRhID0gJm10Njc2MV9jb21w YXR9LA0KIAl7fQ0KIH07DQogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXNkY19vZl9pZHMpOw0K QEAgLTEwMTYsMjQgKzEwNDMsNiBAQCBzdGF0aWMgaW5saW5lIHUzMiBtc2RjX2NtZF9wcmVwYXJl X3Jhd19jbWQoc3RydWN0IG1zZGNfaG9zdCAqaG9zdCwNCiAJcmV0dXJuIHJhd2NtZDsNCiB9DQog DQotc3RhdGljIHZvaWQgbXNkY19zdGFydF9kYXRhKHN0cnVjdCBtc2RjX2hvc3QgKmhvc3QsIHN0 cnVjdCBtbWNfcmVxdWVzdCAqbXJxLA0KLQkJCSAgICBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCwg c3RydWN0IG1tY19kYXRhICpkYXRhKQ0KLXsNCi0JYm9vbCByZWFkOw0KLQ0KLQlXQVJOX09OKGhv c3QtPmRhdGEpOw0KLQlob3N0LT5kYXRhID0gZGF0YTsNCi0JcmVhZCA9IGRhdGEtPmZsYWdzICYg TU1DX0RBVEFfUkVBRDsNCi0NCi0JbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3EsICZob3N0LT5y ZXFfdGltZW91dCwgREFUX1RJTUVPVVQpOw0KLQltc2RjX2RtYV9zZXR1cChob3N0LCAmaG9zdC0+ ZG1hLCBkYXRhKTsNCi0Jc2RyX3NldF9iaXRzKGhvc3QtPmJhc2UgKyBNU0RDX0lOVEVOLCBkYXRh X2ludHNfbWFzayk7DQotCXNkcl9zZXRfZmllbGQoaG9zdC0+YmFzZSArIE1TRENfRE1BX0NUUkws IE1TRENfRE1BX0NUUkxfU1RBUlQsIDEpOw0KLQlkZXZfZGJnKGhvc3QtPmRldiwgIkRNQSBzdGFy dFxuIik7DQotCWRldl9kYmcoaG9zdC0+ZGV2LCAiJXM6IGNtZD0lZCBETUEgZGF0YTogJWQgYmxv Y2tzOyByZWFkPSVkXG4iLA0KLQkJCV9fZnVuY19fLCBjbWQtPm9wY29kZSwgZGF0YS0+YmxvY2tz LCByZWFkKTsNCi19DQotDQogc3RhdGljIGludCBtc2RjX2F1dG9fY21kX2RvbmUoc3RydWN0IG1z ZGNfaG9zdCAqaG9zdCwgaW50IGV2ZW50cywNCiAJCXN0cnVjdCBtbWNfY29tbWFuZCAqY21kKQ0K IHsNCkBAIC0xMjIyLDYgKzEyMzEsMzAgQEAgc3RhdGljIGlubGluZSBib29sIG1zZGNfY21kX2lz X3JlYWR5KHN0cnVjdCBtc2RjX2hvc3QgKmhvc3QsDQogCXJldHVybiB0cnVlOw0KIH0NCiANCitz dGF0aWMgdm9pZCBtc2RjX3N0YXJ0X2RhdGEoc3RydWN0IG1zZGNfaG9zdCAqaG9zdCwgc3RydWN0 IG1tY19yZXF1ZXN0ICptcnEsDQorCQkJICAgIHN0cnVjdCBtbWNfY29tbWFuZCAqY21kLCBzdHJ1 Y3QgbW1jX2RhdGEgKmRhdGEpDQorew0KKwlib29sIHJlYWQ7DQorDQorCVdBUk5fT04oaG9zdC0+ ZGF0YSk7DQorCWhvc3QtPmRhdGEgPSBkYXRhOw0KKwlyZWFkID0gZGF0YS0+ZmxhZ3MgJiBNTUNf REFUQV9SRUFEOw0KKw0KKwltb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwgJmhvc3QtPnJlcV90 aW1lb3V0LCBEQVRfVElNRU9VVCk7DQorCW1zZGNfZG1hX3NldHVwKGhvc3QsICZob3N0LT5kbWEs IGRhdGEpOw0KKwlzZHJfc2V0X2JpdHMoaG9zdC0+YmFzZSArIE1TRENfSU5URU4sIGRhdGFfaW50 c19tYXNrKTsNCisJc2RyX3NldF9maWVsZChob3N0LT5iYXNlICsgTVNEQ19ETUFfQ1RSTCwgTVNE Q19ETUFfQ1RSTF9TVEFSVCwgMSk7DQorCWRldl9kYmcoaG9zdC0+ZGV2LCAiRE1BIHN0YXJ0XG4i KTsNCisJZGV2X2RiZyhob3N0LT5kZXYsICIlczogY21kPSVkIERNQSBkYXRhOiAlZCBibG9ja3M7 IHJlYWQ9JWRcbiIsDQorCQkJX19mdW5jX18sIGNtZC0+b3Bjb2RlLCBkYXRhLT5ibG9ja3MsIHJl YWQpOw0KKw0KKyNpZmRlZiBDT05GSUdfTU1DX1NXX0NRSENJDQorCWlmIChjbWQtPm9wY29kZSA9 PSBNTUNfRVhFQ1VURV9SRUFEX1RBU0sNCisJCXx8IGNtZC0+b3Bjb2RlID09IE1NQ19FWEVDVVRF X1dSSVRFX1RBU0spDQorCQltc2RjX3JlcXVlc3RfZG9uZShob3N0LCBtcnEpOw0KKyNlbmRpZg0K K30NCisNCiBzdGF0aWMgdm9pZCBtc2RjX3N0YXJ0X2NvbW1hbmQoc3RydWN0IG1zZGNfaG9zdCAq aG9zdCwNCiAJCXN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxLCBzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNt ZCkNCiB7DQpAQCAtMTI2OSwxNyArMTMwMiwxMjIgQEAgc3RhdGljIHZvaWQgbXNkY19jbWRfbmV4 dChzdHJ1Y3QgbXNkY19ob3N0ICpob3N0LA0KIAkJbXNkY19zdGFydF9kYXRhKGhvc3QsIG1ycSwg Y21kLCBjbWQtPmRhdGEpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBtc2RjX29wc19yZXF1ZXN0KHN0 cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSkNCisNCisjaWZkZWYg Q09ORklHX01NQ19TV19DUUhDSQ0KK3N0YXRpYyBpbmxpbmUgYm9vbCBtc2RjX29wX2NtZHFfb25f dHJhbihzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCkNCit7DQorCXJldHVybiBjbWQtPm9wY29kZSA9 PSBNTUNfUVVFX1RBU0tfUEFSQU1TIHx8DQorCSAgICAgICBjbWQtPm9wY29kZSA9PSBNTUNfUVVF X1RBU0tfQUREUiB8fA0KKwkJICAgKGNtZC0+b3Bjb2RlID09IE1NQ19TRU5EX1NUQVRVUyAmJg0K KwkJCQljbWQtPmFyZyAmICgxIDw8IDE1KSk7DQorfQ0KKw0KK3N0YXRpYyB1bnNpZ25lZCBpbnQg bXNkY19jbWRxX2NvbW1hbmRfc3RhcnQoc3RydWN0IG1zZGNfaG9zdCAqaG9zdCwNCisJc3RydWN0 IG1tY19jb21tYW5kICpjbWQsIHVuc2lnbmVkIGxvbmcgdGltZW91dCkNCit7DQorCXVuc2lnbmVk IGxvbmcgdG1vOw0KKw0KKwljbWQtPmVycm9yID0gMDsNCisJdG1vID0gamlmZmllcyArIHRpbWVv dXQ7DQorDQorCXdoaWxlICghbXNkY19jbWRfaXNfcmVhZHkoaG9zdCwgaG9zdC0+bXJxLCBjbWQp KSB7DQorCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0bW8pICYmDQorCQkJIW1zZGNfY21kX2lz X3JlYWR5KGhvc3QsIGhvc3QtPm1ycSwgY21kKSkgew0KKwkJCWRldl9lcnIoaG9zdC0+ZGV2LCAi Y21kX2J1c3kgdGltZW91dDogYmVmb3JlIENNRDwlZD4iLA0KKwkJCQkgY21kLT5vcGNvZGUpOw0K KwkJCWNtZC0+ZXJyb3IgPSAodW5zaWduZWQgaW50KS1FVElNRURPVVQ7DQorCQkJcmV0dXJuIGNt ZC0+ZXJyb3I7DQorCQl9DQorCX0NCisNCisJc2RyX3NldF9maWVsZChob3N0LT5iYXNlICsgRU1N QzUxX0NGRzAsIEVNTUM1MV9DTURRX01BU0ssDQorCQkJKDB4ODEpIHwgKGNtZC0+b3Bjb2RlIDw8 IDEpKTsNCisJd3JpdGVsKGNtZC0+YXJnLCBob3N0LT5iYXNlICsgU0RDX0FSRyk7DQorCXdyaXRl bCgwLCBob3N0LT5iYXNlICsgU0RDX0NNRCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgdW5zaWduZWQgaW50IG1zZGNfY21kcV9jb21tYW5kX3Jlc3BfcG9sbGluZyhzdHJ1Y3QgbXNk Y19ob3N0ICpob3N0LA0KKwlzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCwNCisJdW5zaWduZWQgbG9u ZyB0aW1lb3V0KQ0KK3sNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJdTMyIGV2ZW50czsNCisJ dW5zaWduZWQgbG9uZyB0bW87DQorCXUzMiBldmVudF9tYXNrID0gTVNEQ19JTlRfQ01EUkRZIHwg TVNEQ19JTlRfUlNQQ1JDRVJSIHwgTVNEQ19JTlRfQ01EVE1POw0KKwl1NjQgcnNwX3RpbWU7DQor DQorCS8qIHBvbGxpbmcgKi8NCisJdG1vID0gamlmZmllcyArIHRpbWVvdXQ7DQorCXJzcF90aW1l ID0gc2NoZWRfY2xvY2soKTsNCisJd2hpbGUgKDEpIHsNCisJCXNwaW5fbG9ja19pcnFzYXZlKCZo b3N0LT5sb2NrLCBmbGFncyk7DQorCQlldmVudHMgPSByZWFkbChob3N0LT5iYXNlICsgTVNEQ19J TlQpOw0KKwkJaWYgKGV2ZW50cyAmIGV2ZW50X21hc2spIHsNCisJCQkvKiBjbGVhciBhbGwgaW50 IGZsYWcgKi8NCisJCQlldmVudHMgJj0gZXZlbnRfbWFzazsNCisJCQl3cml0ZWwoZXZlbnRzLCBo b3N0LT5iYXNlICsgTVNEQ19JTlQpOw0KKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3Qt PmxvY2ssIGZsYWdzKTsNCisJCQlicmVhazsNCisJCX0NCisJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsNCisNCisJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRt bykpIHsNCisJCQlzcGluX2xvY2tfaXJxc2F2ZSgmaG9zdC0+bG9jaywgZmxhZ3MpOw0KKwkJCWV2 ZW50cyA9IHJlYWRsKGhvc3QtPmJhc2UgKyBNU0RDX0lOVCk7DQorCQkJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmaG9zdC0+bG9jaywgZmxhZ3MpOw0KKwkJCWlmICghKGV2ZW50cyAmIGV2ZW50X21h c2spKSB7DQorCQkJCWRldl9lcnIoaG9zdC0+ZGV2LA0KKwkJCQkJIlslc106IENNRDwlZD4gcG9s bGluZ19mb3JfY29tcGxldGlvbiB0aW1lb3V0IEFSRzwweCUuOHg+IiwNCisJCQkJCV9fZnVuY19f LCBjbWQtPm9wY29kZSwgY21kLT5hcmcpOw0KKwkJCQljbWQtPmVycm9yID0gKHVuc2lnbmVkIGlu dCktRVRJTUVET1VUOw0KKwkJCX0NCisJCQlnb3RvIG91dDsNCisJCX0NCisJfQ0KKw0KKwkvKiBj b21tYW5kIGludGVycnVwdHMgKi8NCisJaWYgKGV2ZW50cyAmIGV2ZW50X21hc2spIHsNCisJCWlm IChldmVudHMgJiBNU0RDX0lOVF9DTURSRFkpIHsNCisJCQljbWQtPnJlc3BbMF0gPSByZWFkbCho b3N0LT5iYXNlICsgU0RDX1JFU1AwKTsNCisJCX0gZWxzZSBpZiAoZXZlbnRzICYgTVNEQ19JTlRf UlNQQ1JDRVJSKSB7DQorCQkJY21kLT5lcnJvciA9ICh1bnNpZ25lZCBpbnQpLUVJTFNFUTsNCisJ CQlkZXZfZXJyKGhvc3QtPmRldiwNCisJCQkJIlslc106IFhYWCBDTUQ8JWQ+IE1TRENfSU5UX1JT UENSQ0VSUiBBcmc8MHglLjh4PiIsDQorCQkJCV9fZnVuY19fLCBjbWQtPm9wY29kZSwgY21kLT5h cmcpOw0KKwkJfSBlbHNlIGlmIChldmVudHMgJiBNU0RDX0lOVF9DTURUTU8pIHsNCisJCQljbWQt PmVycm9yID0gKHVuc2lnbmVkIGludCktRVRJTUVET1VUOw0KKwkJCWRldl9lcnIoaG9zdC0+ZGV2 LCAiWyVzXTogWFhYIENNRDwlZD4gTVNEQ19JTlRfQ01EVE1PIEFyZzwweCUuOHg+IiwNCisJCQkJ X19mdW5jX18sIGNtZC0+b3Bjb2RlLCBjbWQtPmFyZyk7DQorCQl9DQorCX0NCitvdXQ6DQorCXNk cl9jbHJfYml0cyhob3N0LT5iYXNlICsgRU1NQzUxX0NGRzAsIEVNTUM1MV9DRkdfQ01EUUVOKTsN CisJcmV0dXJuIGNtZC0+ZXJyb3I7DQorfQ0KKw0KKyNkZWZpbmUgQ01EX0NRX1RJTUVPVVQgKEha ICogMykNCitzdGF0aWMgdm9pZCBtc2RjX3N0YXJ0X3JlcXVlc3RfY21kcShzdHJ1Y3QgbW1jX2hv c3QgKm1tYywNCisJc3RydWN0IG1tY19yZXF1ZXN0ICptcnEpDQogew0KIAlzdHJ1Y3QgbXNkY19o b3N0ICpob3N0ID0gbW1jX3ByaXYobW1jKTsNCisJaWYgKG1zZGNfY21kcV9jb21tYW5kX3N0YXJ0 KGhvc3QsIG1ycS0+Y21kLCBDTURfQ1FfVElNRU9VVCkpDQorCQlnb3RvIGVuZDsNCiANCi0JaG9z dC0+ZXJyb3IgPSAwOw0KLQlXQVJOX09OKGhvc3QtPm1ycSk7DQotCWhvc3QtPm1ycSA9IG1ycTsN CisJaWYgKG1zZGNfY21kcV9jb21tYW5kX3Jlc3BfcG9sbGluZyhob3N0LCBtcnEtPmNtZCwgQ01E X0NRX1RJTUVPVVQpKQ0KKwkJZ290byBlbmQ7DQorZW5kOg0KKwlob3N0LT5tcnEgPSBOVUxMOw0K KwlyZXR1cm47DQogDQotCWlmIChtcnEtPmRhdGEpDQotCQltc2RjX3ByZXBhcmVfZGF0YShob3N0 LCBtcnEpOw0KK30NCisjZW5kaWYNCiANCitzdGF0aWMgdm9pZCBtc2RjX3N0YXJ0X3JlcXVlc3Rf bGVnYWN5KHN0cnVjdCBtbWNfaG9zdCAqbW1jLA0KKwlzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSkN Cit7DQorCXN0cnVjdCBtc2RjX2hvc3QgKmhvc3QgPSBtbWNfcHJpdihtbWMpOw0KIAkvKiBpZiBT QkMgaXMgcmVxdWlyZWQsIHdlIGhhdmUgSFcgb3B0aW9uIGFuZCBTVyBvcHRpb24uDQogCSAqIGlm IEhXIG9wdGlvbiBpcyBlbmFibGVkLCBhbmQgU0JDIGRvZXMgbm90IGhhdmUgInNwZWNpYWwiIGZs YWdzLA0KIAkgKiB1c2UgSFcgb3B0aW9uLCAgb3RoZXJ3aXNlIHVzZSBTVyBvcHRpb24NCkBAIC0x Mjg5LDggKzE0MjcsMjggQEAgc3RhdGljIHZvaWQgbXNkY19vcHNfcmVxdWVzdChzdHJ1Y3QgbW1j X2hvc3QgKm1tYywgc3RydWN0IG1tY19yZXF1ZXN0ICptcnEpDQogCQltc2RjX3N0YXJ0X2NvbW1h bmQoaG9zdCwgbXJxLCBtcnEtPnNiYyk7DQogCWVsc2UNCiAJCW1zZGNfc3RhcnRfY29tbWFuZCho b3N0LCBtcnEsIG1ycS0+Y21kKTsNCisNCiB9DQogDQorc3RhdGljIHZvaWQgbXNkY19vcHNfcmVx dWVzdChzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3RydWN0IG1tY19yZXF1ZXN0ICptcnEpDQorew0K KwlzdHJ1Y3QgbXNkY19ob3N0ICpob3N0ID0gbW1jX3ByaXYobW1jKTsNCisNCisJaG9zdC0+ZXJy b3IgPSAwOw0KKwlXQVJOX09OKGhvc3QtPm1ycSk7DQorCWhvc3QtPm1ycSA9IG1ycTsNCisNCisJ aWYgKG1ycS0+ZGF0YSkNCisJCW1zZGNfcHJlcGFyZV9kYXRhKGhvc3QsIG1ycSk7DQorDQorI2lm ZGVmIENPTkZJR19NTUNfU1dfQ1FIQ0kNCisJaWYgKG1zZGNfb3BfY21kcV9vbl90cmFuKG1ycS0+ Y21kKSkgew0KKwkJbXNkY19zdGFydF9yZXF1ZXN0X2NtZHEobW1jLCBtcnEpOw0KKwl9IGVsc2UN CisjZW5kaWYNCisJCW1zZGNfc3RhcnRfcmVxdWVzdF9sZWdhY3kobW1jLCBtcnEpOw0KKw0KK30N CiBzdGF0aWMgdm9pZCBtc2RjX3ByZV9yZXEoc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBt bWNfcmVxdWVzdCAqbXJxKQ0KIHsNCiAJc3RydWN0IG1zZGNfaG9zdCAqaG9zdCA9IG1tY19wcml2 KG1tYyk7DQpAQCAtMTMyMSw2ICsxNDc5LDE3IEBAIHN0YXRpYyB2b2lkIG1zZGNfcG9zdF9yZXEo c3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxLA0KIHN0YXRpYyB2 b2lkIG1zZGNfZGF0YV94ZmVyX25leHQoc3RydWN0IG1zZGNfaG9zdCAqaG9zdCwNCiAJCQkJc3Ry dWN0IG1tY19yZXF1ZXN0ICptcnEsIHN0cnVjdCBtbWNfZGF0YSAqZGF0YSkNCiB7DQorI2lmZGVm IENPTkZJR19NTUNfU1dfQ1FIQ0kNCisJc3RydWN0IHN3Y3FfaG9zdCAqc3djcV9ob3N0ID0gaG9z dC0+c3djcV9ob3N0Ow0KKw0KKwlpZiAoaG9zdC0+Y3FoY2kpIHsNCisJCWlmIChhdG9taWNfcmVh ZCgmc3djcV9ob3N0LT5vbmdvaW5nX3Rhc2suaWQpDQorCQkJIT0gTU1DX1NXQ1FfVEFTS19JRExF KSB7DQorCQkJYXRvbWljX3NldCgmc3djcV9ob3N0LT5vbmdvaW5nX3Rhc2suZG9uZSwgMSk7DQor CQkJcmV0dXJuOw0KKwkJfQ0KKwl9DQorI2VuZGlmDQogCWlmIChtbWNfb3BfbXVsdGkobXJxLT5j bWQtPm9wY29kZSkgJiYgbXJxLT5zdG9wICYmICFtcnEtPnN0b3AtPmVycm9yICYmDQogCSAgICAh bXJxLT5zYmMpDQogCQltc2RjX3N0YXJ0X2NvbW1hbmQoaG9zdCwgbXJxLCBtcnEtPnN0b3ApOw0K QEAgLTEzNTUsNyArMTUyNCw5IEBAIHN0YXRpYyBib29sIG1zZGNfZGF0YV94ZmVyX2RvbmUoc3Ry dWN0IG1zZGNfaG9zdCAqaG9zdCwgdTMyIGV2ZW50cywNCiAJCQkJMSk7DQogCQl3aGlsZSAocmVh ZGwoaG9zdC0+YmFzZSArIE1TRENfRE1BX0NGRykgJiBNU0RDX0RNQV9DRkdfU1RTKQ0KIAkJCWNw dV9yZWxheCgpOw0KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmhvc3QtPmxvY2ssIGZsYWdzKTsNCiAJ CXNkcl9jbHJfYml0cyhob3N0LT5iYXNlICsgTVNEQ19JTlRFTiwgZGF0YV9pbnRzX21hc2spOw0K KwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaG9zdC0+bG9jaywgZmxhZ3MpOw0KIAkJZGV2X2Ri Zyhob3N0LT5kZXYsICJETUEgc3RvcFxuIik7DQogDQogCQlpZiAoKGV2ZW50cyAmIE1TRENfSU5U X1hGRVJfQ09NUEwpICYmICghc3RvcCB8fCAhc3RvcC0+ZXJyb3IpKSB7DQpAQCAtMTU2OCw2ICsx NzM5LDcgQEAgc3RhdGljIGlycXJldHVybl90IG1zZGNfaXJxKGludCBpcnEsIHZvaWQgKmRldl9p ZCkNCiAJCQlyZXR1cm4gSVJRX0hBTkRMRUQ7DQogCQl9DQogDQorI2lmbmRlZiBDT05GSUdfTU1D X1NXX0NRSENJDQogCQlpZiAoIW1ycSkgew0KIAkJCWRldl9lcnIoaG9zdC0+ZGV2LA0KIAkJCQki JXM6IE1SUT1OVUxMOyBldmVudHM9JTA4WDsgZXZlbnRfbWFzaz0lMDhYXG4iLA0KQEAgLTE1NzUs NyArMTc0Nyw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtc2RjX2lycShpbnQgaXJxLCB2b2lkICpk ZXZfaWQpDQogCQkJV0FSTl9PTigxKTsNCiAJCQlicmVhazsNCiAJCX0NCi0NCisjZW5kaWYNCiAJ CWRldl9kYmcoaG9zdC0+ZGV2LCAiJXM6IGV2ZW50cz0lMDhYXG4iLCBfX2Z1bmNfXywgZXZlbnRz KTsNCiANCiAJCWlmIChjbWQpDQpAQCAtMjAyMSw3ICsyMTkzLDEwIEBAIHN0YXRpYyBpbnQgaHM0 MDBfdHVuZV9yZXNwb25zZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgdTMyIG9wY29kZSkNCiAJCSAq IG1vcmUgc3RhYmxlLCB3ZSB0ZXN0IGVhY2ggc2V0IG9mIHBhcmFtZXRlcnMgMyB0aW1lcy4NCiAJ CSAqLw0KIAkJZm9yIChqID0gMDsgaiA8IDM7IGorKykgew0KLQkJCW1tY19zZW5kX3R1bmluZyht bWMsIG9wY29kZSwgJmNtZF9lcnIpOw0KKwkJCWlmIChvcGNvZGUgIT0gTU1DX1NFTkRfU1RBVFVT KQ0KKwkJCQltbWNfc2VuZF90dW5pbmcobW1jLCBvcGNvZGUsICZjbWRfZXJyKTsNCisJCQllbHNl DQorCQkJCWNtZF9lcnIgPSBtbWNfc2VuZF9zdGF0dXMobW1jLT5jYXJkLCBOVUxMKTsNCiAJCQlp ZiAoIWNtZF9lcnIpIHsNCiAJCQkJY21kX2RlbGF5IHw9ICgxIDw8IGkpOw0KIAkJCX0gZWxzZSB7 DQpAQCAtMjEwNCw3ICsyMjc5LDYgQEAgc3RhdGljIGludCBtc2RjX3R1bmVfdG9nZXRoZXIoc3Ry dWN0IG1tY19ob3N0ICptbWMsIHUzMiBvcGNvZGUpDQogDQogCXNkcl9zZXRfZmllbGQoaG9zdC0+ YmFzZSArIE1TRENfUEFUQ0hfQklULCBNU0RDX0lOVF9EQVRfTEFUQ0hfQ0tfU0VMLA0KIAkJICAg ICAgaG9zdC0+bGF0Y2hfY2spOw0KLQ0KIAlzZHJfY2xyX2JpdHMoaG9zdC0+YmFzZSArIE1TRENf SU9DT04sIE1TRENfSU9DT05fUlNQTCk7DQogCXNkcl9jbHJfYml0cyhob3N0LT5iYXNlICsgTVNE Q19JT0NPTiwNCiAJCSAgICAgTVNEQ19JT0NPTl9EU1BMIHwgTVNEQ19JT0NPTl9XX0RTUEwpOw0K QEAgLTIxNjAsNyArMjMzNCw5IEBAIHN0YXRpYyBpbnQgbXNkY19leGVjdXRlX3R1bmluZyhzdHJ1 Y3QgbW1jX2hvc3QgKm1tYywgdTMyIG9wY29kZSkNCiAJaW50IHJldDsNCiAJdTMyIHR1bmVfcmVn ID0gaG9zdC0+ZGV2X2NvbXAtPnBhZF90dW5lX3JlZzsNCiANCi0JaWYgKGhvc3QtPmRldl9jb21w LT5kYXRhX3R1bmUgJiYgaG9zdC0+ZGV2X2NvbXAtPmFzeW5jX2ZpZm8pIHsNCisNCisJaWYgKGhv c3QtPmRldl9jb21wLT5kYXRhX3R1bmUgJiYgaG9zdC0+ZGV2X2NvbXAtPmFzeW5jX2ZpZm8NCisJ CQkmJiBvcGNvZGUgIT0gTU1DX1NFTkRfU1RBVFVTKSB7DQogCQlyZXQgPSBtc2RjX3R1bmVfdG9n ZXRoZXIobW1jLCBvcGNvZGUpOw0KIAkJaWYgKGhvc3QtPmhzNDAwX21vZGUpIHsNCiAJCQlzZHJf Y2xyX2JpdHMoaG9zdC0+YmFzZSArIE1TRENfSU9DT04sDQpAQCAtMjE5NCw2ICsyMzcwLDcgQEAg c3RhdGljIGludCBtc2RjX2V4ZWN1dGVfdHVuaW5nKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCB1MzIg b3Bjb2RlKQ0KIAkJaG9zdC0+c2F2ZWRfdHVuZV9wYXJhLmVtbWNfdG9wX2NtZCA9IHJlYWRsKGhv c3QtPnRvcF9iYXNlICsNCiAJCQkJRU1NQ19UT1BfQ01EKTsNCiAJfQ0KKw0KIAlyZXR1cm4gcmV0 Ow0KIH0NCiANCkBAIC0yMzMxLDYgKzI1MDgsMjEgQEAgc3RhdGljIHZvaWQgbXNkY19vZl9wcm9w ZXJ0eV9wYXJzZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KIAkJaG9zdC0+Y3FoY2kg PSBmYWxzZTsNCiB9DQogDQorI2lmZGVmIENPTkZJR19NTUNfU1dfQ1FIQ0kNCit2b2lkIG1zZGNf c3djcV9kdW1wKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCkNCit7DQorDQorfQ0KK3ZvaWQgIG1zZGNf c3djcV9lcnJfaGFuZGxlKHN0cnVjdCBtbWNfaG9zdCAqaG9zdCkNCit7DQorDQorfQ0KK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgc3djcV9ob3N0X29wcyBtc2RjX3N3Y3Ffb3BzID0gew0KKwkuZHVtcF9p bmZvID0gbXNkY19zd2NxX2R1bXAsDQorCS5lcnJfaGFuZGxlID0gbXNkY19zd2NxX2Vycl9oYW5k bGUsDQorfTsNCisjZW5kaWYNCisNCiBzdGF0aWMgaW50IG1zZGNfZHJ2X3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogew0KIAlzdHJ1Y3QgbW1jX2hvc3QgKm1tYzsNCkBAIC0y NDQ0LDggKzI2MzYsNiBAQCBzdGF0aWMgaW50IG1zZGNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQogCQltbWMtPmNhcHMyIHw9IE1NQ19DQVAyX1NESU9fSVJRX05PVEhS RUFEOw0KIA0KIAltbWMtPmNhcHMgfD0gTU1DX0NBUF9DTUQyMzsNCi0JaWYgKGhvc3QtPmNxaGNp KQ0KLQkJbW1jLT5jYXBzMiB8PSBNTUNfQ0FQMl9DUUUgfCBNTUNfQ0FQMl9DUUVfRENNRDsNCiAJ LyogTU1DIGNvcmUgdHJhbnNmZXIgc2l6ZXMgdHVuYWJsZSBwYXJhbWV0ZXJzICovDQogCW1tYy0+ bWF4X3NlZ3MgPSBNQVhfQkRfTlVNOw0KIAlpZiAoaG9zdC0+ZGV2X2NvbXAtPnN1cHBvcnRfNjRn KQ0KQEAgLTI0NjEsMjYgKzI2NTEsNiBAQCBzdGF0aWMgaW50IG1zZGNfZHJ2X3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCQlob3N0LT5kbWFfbWFzayA9IERNQV9CSVRfTUFT SygzMik7DQogCW1tY19kZXYobW1jKS0+ZG1hX21hc2sgPSAmaG9zdC0+ZG1hX21hc2s7DQogDQot CWlmIChtbWMtPmNhcHMyICYgTU1DX0NBUDJfQ1FFKSB7DQotCQlob3N0LT5jcV9ob3N0ID0gZGV2 bV9remFsbG9jKGhvc3QtPm1tYy0+cGFyZW50LA0KLQkJCQkJICAgICBzaXplb2YoKmhvc3QtPmNx X2hvc3QpLA0KLQkJCQkJICAgICBHRlBfS0VSTkVMKTsNCi0JCWlmICghaG9zdC0+Y3FfaG9zdCkg ew0KLQkJCXJldCA9IC1FTk9NRU07DQotCQkJZ290byBob3N0X2ZyZWU7DQotCQl9DQotCQlob3N0 LT5jcV9ob3N0LT5jYXBzIHw9IENRSENJX1RBU0tfREVTQ19TWl8xMjg7DQotCQlob3N0LT5jcV9o b3N0LT5tbWlvID0gaG9zdC0+YmFzZSArIDB4ODAwOw0KLQkJaG9zdC0+Y3FfaG9zdC0+b3BzID0g Jm1zZGNfY21kcV9vcHM7DQotCQlyZXQgPSBjcWhjaV9pbml0KGhvc3QtPmNxX2hvc3QsIG1tYywg dHJ1ZSk7DQotCQlpZiAocmV0KQ0KLQkJCWdvdG8gaG9zdF9mcmVlOw0KLQkJbW1jLT5tYXhfc2Vn cyA9IDEyODsNCi0JCS8qIGNxaGNpIDE2Yml0IGxlbmd0aCAqLw0KLQkJLyogMCBzaXplLCBtZWFu cyA2NTUzNiBzbyB3ZSBkb24ndCBoYXZlIHRvIC0xIGhlcmUgKi8NCi0JCW1tYy0+bWF4X3NlZ19z aXplID0gNjQgKiAxMDI0Ow0KLQl9DQotDQogCWhvc3QtPnRpbWVvdXRfY2xrcyA9IDMgKiAxMDQ4 NTc2Ow0KIAlob3N0LT5kbWEuZ3BkID0gZG1hX2FsbG9jX2NvaGVyZW50KCZwZGV2LT5kZXYsDQog CQkJCTIgKiBzaXplb2Yoc3RydWN0IG10X2dwZG1hX2Rlc2MpLA0KQEAgLTI0OTIsMTAgKzI2NjIs MTAgQEAgc3RhdGljIGludCBtc2RjX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KIAkJcmV0ID0gLUVOT01FTTsNCiAJCWdvdG8gcmVsZWFzZV9tZW07DQogCX0NCisNCiAJ bXNkY19pbml0X2dwZF9iZChob3N0LCAmaG9zdC0+ZG1hKTsNCiAJSU5JVF9ERUxBWUVEX1dPUkso Jmhvc3QtPnJlcV90aW1lb3V0LCBtc2RjX3JlcXVlc3RfdGltZW91dCk7DQogCXNwaW5fbG9ja19p bml0KCZob3N0LT5sb2NrKTsNCi0NCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbW1jKTsN CiAJbXNkY191bmdhdGVfY2xvY2soaG9zdCk7DQogCW1zZGNfaW5pdF9odyhob3N0KTsNCkBAIC0y NTA1LDYgKzI2NzUsNDEgQEAgc3RhdGljIGludCBtc2RjX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KIAlpZiAocmV0KQ0KIAkJZ290byByZWxlYXNlOw0KIA0KKwlpZiAo aG9zdC0+Y3FoY2kpIHsNCisjaWZkZWYgQ09ORklHX01NQ19DUUhDSQ0KKwkJbW1jLT5jYXBzMiB8 PSBNTUNfQ0FQMl9DUUUgfCBNTUNfQ0FQMl9DUUVfRENNRDsNCisJCWhvc3QtPmNxX2hvc3QgPSBk ZXZtX2t6YWxsb2MoaG9zdC0+bW1jLT5wYXJlbnQsDQorCQkJCQkgICAgIHNpemVvZigqaG9zdC0+ Y3FfaG9zdCksDQorCQkJCQkgICAgIEdGUF9LRVJORUwpOw0KKwkJaWYgKCFob3N0LT5jcV9ob3N0 KSB7DQorCQkJcmV0ID0gLUVOT01FTTsNCisJCQlnb3RvIGhvc3RfZnJlZTsNCisJCX0NCisJCWhv c3QtPmNxX2hvc3QtPmNhcHMgfD0gQ1FIQ0lfVEFTS19ERVNDX1NaXzEyODsNCisJCWhvc3QtPmNx X2hvc3QtPm1taW8gPSBob3N0LT5iYXNlICsgMHg4MDA7DQorCQlob3N0LT5jcV9ob3N0LT5vcHMg PSAmbXNkY19jbWRxX29wczsNCisJCXJldCA9IGNxaGNpX2luaXQoaG9zdC0+Y3FfaG9zdCwgbW1j LCB0cnVlKTsNCisJCWlmIChyZXQpDQorCQkJZ290byBob3N0X2ZyZWU7DQorCQltbWMtPm1heF9z ZWdzID0gMTI4Ow0KKwkJLyogY3FoY2kgMTZiaXQgbGVuZ3RoICovDQorCQkvKiAwIHNpemUsIG1l YW5zIDY1NTM2IHNvIHdlIGRvbid0IGhhdmUgdG8gLTEgaGVyZSAqLw0KKwkJbW1jLT5tYXhfc2Vn X3NpemUgPSA2NCAqIDEwMjQ7DQorI2VsaWYgZGVmaW5lZChDT05GSUdfTU1DX1NXX0NRSENJKQ0K KwkJbW1jLT5jYXBzMiB8PSBNTUNfQ0FQMl9DUUU7DQorCQlob3N0LT5zd2NxX2hvc3QgPSBkZXZt X2t6YWxsb2MoaG9zdC0+bW1jLT5wYXJlbnQsDQorCQkJCXNpemVvZigqaG9zdC0+c3djcV9ob3N0 KSwgR0ZQX0tFUk5FTCk7DQorCQlpZiAoIWhvc3QtPnN3Y3FfaG9zdCkgew0KKwkJCXJldCA9IC1F Tk9NRU07DQorCQkJZ290byBob3N0X2ZyZWU7DQorCQl9DQorCQlob3N0LT5zd2NxX2hvc3QtPm9w cyA9ICZtc2RjX3N3Y3Ffb3BzOw0KKwkJcmV0ID0gc3djcV9pbml0KGhvc3QtPnN3Y3FfaG9zdCwg bW1jKTsNCisJCWlmIChyZXQpDQorCQkJZ290byBob3N0X2ZyZWU7DQorI2VuZGlmDQorCX0NCisN CiAJcG1fcnVudGltZV9zZXRfYWN0aXZlKGhvc3QtPmRldik7DQogCXBtX3J1bnRpbWVfc2V0X2F1 dG9zdXNwZW5kX2RlbGF5KGhvc3QtPmRldiwgTVRLX01NQ19BVVRPU1VTUEVORF9ERUxBWSk7DQog CXBtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKGhvc3QtPmRldik7DQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tbWMvaG9zdC9zdy1jcWhjaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9zdy1jcWhjaS5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4zZDZjN2Q5MDhlY2YNCi0t LSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbW1jL2hvc3Qvc3ctY3FoY2kuYw0KQEAgLTAsMCAr MSw0NTAgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQorLyoN CisgKiBzdy1jcWhjaS5jDQorICoNCisgKiBlTU1DIHNvZnRld2FyZSBjbWRxIGludGVyZmFjZSBm b3Igbm9uLWNxaGkgaG9zdC4NCisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAxOS0yMDIwIE1lZGlh VGVrIEluYy4NCisgKiBBdXRob3I6IEdyYXkuSmlhDQorICovDQorI2luY2x1ZGUgPGxpbnV4L2Rl bGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9rdGhy ZWFkLmg+DQorI2luY2x1ZGUgPGxpbnV4L2Jsay1tcS5oPg0KKyNpbmNsdWRlIDx1YXBpL2xpbnV4 L3NjaGVkL3R5cGVzLmg+DQorI2luY2x1ZGUgInN3LWNxaGNpLmgiDQorDQorc3RhdGljIGludCBz d2NxX2VuYWJsZShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3RydWN0IG1tY19jYXJkICpjYXJkKQ0K K3sNCisJLy9wcl9pbmZvKCIlcyIsX19mdW5jX18pOw0KKwlyZXR1cm4gMDsNCisNCit9DQorDQor c3RhdGljIHZvaWQgc3djcV9vZmYoc3RydWN0IG1tY19ob3N0ICptbWMpDQorew0KKwkvL3ByX2lu Zm8oIiVzIixfX2Z1bmNfXyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHN3Y3FfZGlzYWJsZShzdHJ1 Y3QgbW1jX2hvc3QgKm1tYykNCit7DQorCS8vcHJfaW5mbygiJXMiLF9fZnVuY19fKTsNCit9DQor DQorc3RhdGljIHZvaWQgc3djcV9wb3N0X3JlcShzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3RydWN0 IG1tY19yZXF1ZXN0ICptcnEpDQorew0KKwlpZiAobW1jLT5vcHMtPnBvc3RfcmVxKQ0KKwkJbW1j LT5vcHMtPnBvc3RfcmVxKG1tYywgbXJxLCAwKTsNCit9DQorDQoraW50IHN3Y3FfZG9uZV90YXNr KHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBpbnQgdGFza19pZCkNCit7DQorCXN0cnVjdCBzd2NxX2hv c3QgKnN3Y3FfaG9zdCA9IG1tYy0+Y3FlX3ByaXZhdGU7DQorCXN0cnVjdCBtbWNfcmVxdWVzdCAq bXJxID0gc3djcV9ob3N0LT5tcnFbdGFza19pZF07DQorDQorCWlmIChtcnEtPmRhdGEtPmVycm9y KSB7DQorCQlwcl9lcnIoIiVzOiB0YXNrJWQgIGRhdGEgZXJyb3IgJWRcbiIsDQorCQkJX19mdW5j X18sIHRhc2tfaWQsIG1ycS0+ZGF0YS0+ZXJyb3IpOw0KKwkJcmV0dXJuIG1ycS0+ZGF0YS0+ZXJy b3I7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBzd2NxX3J1bl90YXNrKHN0cnVj dCBtbWNfaG9zdCAqbW1jLCBpbnQgdGFza19pZCkNCit7DQorCXN0cnVjdCBtbWNfY29tbWFuZCBj bWQgPSB7fTsNCisJc3RydWN0IG1tY19yZXF1ZXN0IGRhdGFfbXJxID0ge307DQorCXN0cnVjdCBz d2NxX2hvc3QgKnN3Y3FfaG9zdCA9IG1tYy0+Y3FlX3ByaXZhdGU7DQorCWludCBmbGFncyA9IHN3 Y3FfaG9zdC0+bXJxW3Rhc2tfaWRdLT5kYXRhLT5mbGFncw0KKwkJCQkJJiBNTUNfREFUQV9SRUFE ID8gMSA6IDA7DQorDQorCWNtZC5mbGFncyA9IE1NQ19SU1BfUjEgfCBNTUNfQ01EX0FDOw0KKwlj bWQub3Bjb2RlID0gZmxhZ3MgPyBNTUNfRVhFQ1VURV9SRUFEX1RBU0sgOiBNTUNfRVhFQ1VURV9X UklURV9UQVNLOw0KKwljbWQuYXJnID0gIHRhc2tfaWQgPDwgMTY7DQorDQorCWRhdGFfbXJxLmNt ZCA9ICZjbWQ7DQorCWRhdGFfbXJxLmRhdGEgPSBzd2NxX2hvc3QtPm1ycVt0YXNrX2lkXS0+ZGF0 YTsNCisNCisJbW1jX3dhaXRfZm9yX3JlcShtbWMsICZkYXRhX21ycSk7DQorCWlmIChjbWQuZXJy b3IpIHsNCisJCXByX2VycigiJXM6IGNtZCVkIGVycm9yICVkXG4iLA0KKwkJCV9fZnVuY19fLCBj bWQub3Bjb2RlLCBjbWQuZXJyb3IpOw0KKwkJcmV0dXJuIGNtZC5lcnJvcjsNCisJfQ0KKw0KKwly ZXR1cm4gMDsNCit9DQorDQoraW50IHN3Y3Ffc2V0X3Rhc2soc3RydWN0IG1tY19ob3N0ICptbWMs IGludCB0YXNrX2lkKQ0KK3sNCisJc3RydWN0IG1tY19jb21tYW5kIGNtZCA9IHt9Ow0KKwlzdHJ1 Y3QgbW1jX3JlcXVlc3QgcHJlX21ycSA9IHt9Ow0KKwlzdHJ1Y3Qgc3djcV9ob3N0ICpzd2NxX2hv c3QgPSBtbWMtPmNxZV9wcml2YXRlOw0KKwlzdHJ1Y3QgbW1jX3JlcXVlc3QgKm1ycSA9IHN3Y3Ff aG9zdC0+bXJxW3Rhc2tfaWRdOw0KKwlpbnQgZmxhZ3M7DQorCWludCByZXRyeSA9IDU7DQorDQor CVdBUk5fT04oIW1ycSk7DQorCVdBUk5fT04oIW1ycS0+ZGF0YSk7DQorCWZsYWdzID0gbXJxLT5k YXRhLT5mbGFncyAmIE1NQ19EQVRBX1JFQUQgPyAxIDogMDsNCisjaWYgTU1DX1NXQ1FfREVCVUcN CisJcHJfaW5mbygiJXMgdGFza19tcnFbJWRdPSUwOHgsICVzIiwgX19mdW5jX18sIHRhc2tfaWQs DQorCQlzd2NxX2hvc3QtPm1ycVt0YXNrX2lkXSwgZmxhZ3MgPyAicmVhZCIgOiAid3JpdGUiKTsN CisjZW5kaWYNCisNCisJd2hpbGUgKHJldHJ5LS0pIHsNCisJCWNtZC5mbGFncyA9IE1NQ19SU1Bf UjEgfCBNTUNfQ01EX0FDOw0KKwkJY21kLm9wY29kZSA9IE1NQ19RVUVfVEFTS19QQVJBTVM7DQor CQljbWQuYXJnID0gIGZsYWdzIDw8IDMwIHwgdGFza19pZCA8PCAxNiB8IG1ycS0+ZGF0YS0+Ymxv Y2tzOw0KKwkJcHJlX21ycS5jbWQgPSAmY21kOw0KKw0KKwkJbW1jLT5vcHMtPnJlcXVlc3QobW1j LCAmcHJlX21ycSk7DQorCQlpZiAoY21kLmVycm9yKSB7DQorCQkJcHJfaW5mbygiJXM6IGNtZCVk IGVyciA9JWQiLA0KKwkJCQlfX2Z1bmNfXywgY21kLm9wY29kZSwgY21kLmVycm9yKTsNCisJCQlj b250aW51ZTsNCisJCX0NCisNCisJCW1lbXNldCgmY21kLCAwLCBzaXplb2YoY21kKSk7DQorCQlj bWQuZmxhZ3MgPSBNTUNfUlNQX1IxIHwgTU1DX0NNRF9BQzsNCisJCWNtZC5vcGNvZGUgPSBNTUNf UVVFX1RBU0tfQUREUjsNCisJCWNtZC5hcmcgPSBtcnEtPmRhdGEtPmJsa19hZGRyOw0KKwkJcHJl X21ycS5jbWQgPSAmY21kOw0KKw0KKwkJbW1jLT5vcHMtPnJlcXVlc3QobW1jLCAmcHJlX21ycSk7 DQorCQlpZiAoY21kLmVycm9yKSB7DQorCQkJcHJfaW5mbygiJXM6IGNtZCVkIGVyciA9JWQiLA0K KwkJCQlfX2Z1bmNfXywgY21kLm9wY29kZSwgY21kLmVycm9yKTsNCisJCQljb250aW51ZTsNCisJ CX0NCisNCisJCWJyZWFrOw0KKwl9DQorDQorCWlmIChjbWQuZXJyb3IpDQorCQlyZXR1cm4gY21k LmVycm9yOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50IHN3Y3FfcG9sbF90YXNrKHN0cnVj dCBtbWNfaG9zdCAqbW1jLCB1MzIgKnN0YXR1cykNCit7DQorCXN0cnVjdCBtbWNfY29tbWFuZCBj bWQgPSB7fTsNCisJc3RydWN0IG1tY19yZXF1ZXN0IGNoa19tcnEgPSB7fTsNCisNCisJY21kLmZs YWdzID0gTU1DX1JTUF9SMSB8IE1NQ19DTURfQUM7DQorCWNtZC5vcGNvZGUgPSBNTUNfU0VORF9T VEFUVVM7DQorCWNtZC5hcmcgPSBtbWMtPmNhcmQtPnJjYSA8PCAxNiB8IDEgPDwgMTU7DQorCWNo a19tcnEuY21kID0gJmNtZDsNCisNCisJbW1jLT5vcHMtPnJlcXVlc3QobW1jLCAmY2hrX21ycSk7 DQorCWlmIChjbWQuZXJyb3IpIHsNCisJCXByX2luZm8oIiVzOiBjbWQlZCBlcnIgPSVkIiwNCisJ CQlfX2Z1bmNfXywgY21kLm9wY29kZSwgY21kLmVycm9yKTsNCisJCXJldHVybiBjbWQuZXJyb3I7 DQorCX0NCisNCisJKnN0YXR1cyA9IGNtZC5yZXNwWzBdOw0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQordm9pZCBzd2NxX2Vycl9oYW5kbGUoc3RydWN0IG1tY19ob3N0ICptbWMsIGludCB0YXNrX2lk LCBpbnQgc3RlcCwgaW50IGVycl90eXBlKQ0KK3sNCisJc3RydWN0IHN3Y3FfaG9zdCAqc3djcV9o b3N0ID0gbW1jLT5jcWVfcHJpdmF0ZTsNCisJc3RydWN0IG1tY19yZXF1ZXN0ICptcnEgPSBzd2Nx X2hvc3QtPm1ycVt0YXNrX2lkXTsNCisJc3RydWN0IG1tY19xdWV1ZV9yZXEgKm1xcnEgPSBjb250 YWluZXJfb2YobXJxLCBzdHJ1Y3QgbW1jX3F1ZXVlX3JlcSwNCisJCQkJCQkgIGJycS5tcnEpOw0K KwlzdHJ1Y3QgcmVxdWVzdCAqcmVxID0gbW1jX3F1ZXVlX3JlcV90b19yZXEobXFycSk7DQorCXN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxID0gcmVxLT5xOw0KKwlzdHJ1Y3QgbW1jX3F1ZXVlICptcSA9 IHEtPnF1ZXVlZGF0YTsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJLy8gMSBtZWFucyBzdGFy dCByZWNvdmVyeSwgIDIgbWVhbnMgcmVjb3ZlcnkgZG9uZQ0KKwlpbnQgcmVjb3Zlcnlfc3RlcCA9 IDA7DQorCWJvb2wgaW5fcmVjb3ZlcnkgPSBmYWxzZTsNCisNCisJV0FSTl9PTighbXJxKTsNCisJ c3djcV9ob3N0LT5vcHMtPmR1bXBfaW5mbyhtbWMpOw0KKw0KKwl3aGlsZSAoMSkgew0KKwkJc3Bp bl9sb2NrX2lycXNhdmUoJnEtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCisJCWluX3JlY292ZXJ5ID0g bXEtPnJlY292ZXJ5X25lZWRlZDsNCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnEtPnF1ZXVl X2xvY2ssIGZsYWdzKTsNCisNCisJCWlmICghaW5fcmVjb3ZlcnkgJiYgbXJxLT5yZWNvdmVyeV9u b3RpZmllcikgew0KKwkJCWlmICgrK3JlY292ZXJ5X3N0ZXAgPT0gMikNCisJCQkJYnJlYWs7DQor CQkJbXJxLT5yZWNvdmVyeV9ub3RpZmllcihtcnEpOw0KKwkJfQ0KKw0KKwkJbXNsZWVwKDIwKTsN CisJfQ0KK30NCisNCisjZGVmaW5lCU1NQ19TV0NRX05PTkUgICAgICAgKDA8PDEpDQorI2RlZmlu ZQlNTUNfU1dDUV9ET05FICAgICAgICgxPDwxKQ0KKyNkZWZpbmUgTU1DX1NXQ1FfUlVOICAgICAg ICAoMTw8MikNCisjZGVmaW5lIE1NQ19TV0NRX1NFVCAgICAgICAgKDE8PDMpDQorI2RlZmluZSBN TUNfU1dDUV9QT0xMICAgICAgICgxPDw0KQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IGdldF9zdGVw X29mX3N3Y3FfaG9zdChzdHJ1Y3Qgc3djcV9ob3N0ICpzd2NxX2hvc3QpDQorew0KKwlpbnQgc2Vx ID0gTU1DX1NXQ1FfTk9ORTsNCisNCisJaWYgKGF0b21pY19yZWFkKCZzd2NxX2hvc3QtPm9uZ29p bmdfdGFzay5kb25lKSkNCisJCXNlcSA9IE1NQ19TV0NRX0RPTkU7DQorCWVsc2UgaWYgKGF0b21p Y19yZWFkKCZzd2NxX2hvc3QtPm9uZ29pbmdfdGFzay5pZCkgPT0gTU1DX1NXQ1FfVEFTS19JRExF DQorCQkJJiYgc3djcV9ob3N0LT5yZHlfdHNrcykNCisJCXNlcSA9IE1NQ19TV0NRX1JVTjsNCisJ ZWxzZSBpZiAoc3djcV9ob3N0LT5wcmVfdHNrcykNCisJCXNlcSA9IE1NQ19TV0NRX1NFVDsNCisJ ZWxzZSBpZiAoc3djcV9ob3N0LT5xbmRfdHNrcyAhPSBzd2NxX2hvc3QtPnJkeV90c2tzDQorCQkJ CSYmIGF0b21pY19yZWFkKCZzd2NxX2hvc3QtPm9uZ29pbmdfdGFzay5pZCkNCisJCQkJPT0gTU1D X1NXQ1FfVEFTS19JRExFKQ0KKwkJc2VxID0gTU1DX1NXQ1FfUE9MTDsNCisNCisJcmV0dXJuIHNl cTsNCit9DQorDQoraW50IG1tY19ydW5fcXVldWVfdGhyZWFkKHZvaWQgKmRhdGEpDQorew0KKwlz dHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IGRhdGE7DQorCXN0cnVjdCBzd2NxX2hvc3QgKnN3Y3FfaG9z dCA9IG1tYy0+Y3FlX3ByaXZhdGU7DQorCWludCBlcnI7DQorCWludCBzdGVwID0gLTE7DQorCWlu dCB0YXNrX2lkID0gLTE7DQorCXN0cnVjdCBtbWNfcmVxdWVzdCAqZG9uZV9tcnE7DQorCXN0cnVj dCBzY2hlZF9wYXJhbSBwYXJhbSA9IHsgLnNjaGVkX3ByaW9yaXR5ID0gMSB9Ow0KKw0KKwlzY2hl ZF9zZXRzY2hlZHVsZXIoY3VycmVudCwgU0NIRURfRklGTywgJnBhcmFtKTsNCisNCisJd2hpbGUg KDEpIHsNCisJCXN0ZXAgPSBnZXRfc3RlcF9vZl9zd2NxX2hvc3Qoc3djcV9ob3N0KTsNCisjaWYg TU1DX1NXQ1FfREVCVUcNCisJCWlmIChzdGVwKQ0KKwkJCXByX2luZm8oIiVzOiBTJWQgQyVkIFAl MDh4IFElMDh4IFIlMDh4IFQlZCxEJWQiLA0KKwkJCQlfX2Z1bmNfXywNCisJCQkJc3RlcCwNCisJ CQkJYXRvbWljX3JlYWQoJnN3Y3FfaG9zdC0+cV9jbnQpLA0KKwkJCQlzd2NxX2hvc3QtPnByZV90 c2tzLA0KKwkJCQlzd2NxX2hvc3QtPnFuZF90c2tzLA0KKwkJCQlzd2NxX2hvc3QtPnJkeV90c2tz LA0KKwkJCQlhdG9taWNfcmVhZCgmc3djcV9ob3N0LT5vbmdvaW5nX3Rhc2suaWQpLA0KKwkJCQlh dG9taWNfcmVhZCgmc3djcV9ob3N0LT5vbmdvaW5nX3Rhc2suZG9uZSkpOw0KKyNlbmRpZg0KKwkJ c3dpdGNoIChzdGVwKSB7DQorCQljYXNlIE1NQ19TV0NRX0RPTkU6DQorCQkJdGFza19pZCA9IGF0 b21pY19yZWFkKCZzd2NxX2hvc3QtPm9uZ29pbmdfdGFzay5pZCk7DQorCQkJZXJyID0gc3djcV9k b25lX3Rhc2sobW1jLCB0YXNrX2lkKTsNCisJCQlpZiAoIWVycikgew0KKwkJCQlkb25lX21ycSA9 IHN3Y3FfaG9zdC0+bXJxW3Rhc2tfaWRdOw0KKwkJCQlhdG9taWNfc2V0KCZzd2NxX2hvc3QtPm9u Z29pbmdfdGFzay5kb25lLCAwKTsNCisJCQkJYXRvbWljX3NldCgmc3djcV9ob3N0LT5vbmdvaW5n X3Rhc2suaWQsIE1NQ19TV0NRX1RBU0tfSURMRSk7DQorCQkJCXN3Y3FfaG9zdC0+bXJxW3Rhc2tf aWRdID0gTlVMTDsNCisJCQkJYXRvbWljX2RlYygmc3djcV9ob3N0LT5xX2NudCk7DQorCQkJCWlm ICghYXRvbWljX3JlYWQoJnN3Y3FfaG9zdC0+cV9jbnQpKQ0KKwkJCQkJd2FrZV91cF9pbnRlcnJ1 cHRpYmxlKCZzd2NxX2hvc3QtPndhaXRfY21kcV9lbXB0eSk7DQorCQkJCW1tY19jcWVfcmVxdWVz dF9kb25lKG1tYywgZG9uZV9tcnEpOw0KKwkJCX0gZWxzZSB7DQorCQkJCXNwaW5fbG9jaygmc3dj cV9ob3N0LT5sb2NrKTsNCisJCQkJc3djcV9ob3N0LT5wcmVfdHNrcyB8PSAoMSA8PCB0YXNrX2lk KTsNCisJCQkJc3Bpbl91bmxvY2soJnN3Y3FfaG9zdC0+bG9jayk7DQorCQkJCWdvdG8gU1dDUV9F UlJfSEFORExFOw0KKwkJCX0NCisJCQlicmVhazsNCisJCWNhc2UgTU1DX1NXQ1FfUlVOOg0KKwkJ CXRhc2tfaWQgPSBmZnMoc3djcV9ob3N0LT5yZHlfdHNrcykgLSAxOw0KKwkJCWF0b21pY19zZXQo JnN3Y3FfaG9zdC0+b25nb2luZ190YXNrLmlkLCB0YXNrX2lkKTsNCisJCQllcnIgPSBzd2NxX3J1 bl90YXNrKG1tYywgdGFza19pZCk7DQorCQkJaWYgKCFlcnIpIHsNCisJCQkJc3djcV9ob3N0LT5y ZHlfdHNrcyAmPSB+KDE8PHRhc2tfaWQpOw0KKwkJCQlzd2NxX2hvc3QtPnFuZF90c2tzICY9IH4o MTw8dGFza19pZCk7DQorCQkJfSBlbHNlDQorCQkJCWdvdG8gU1dDUV9FUlJfSEFORExFOw0KKwkJ CWJyZWFrOw0KKwkJY2FzZSBNTUNfU1dDUV9TRVQ6DQorCQkJc3Bpbl9sb2NrKCZzd2NxX2hvc3Qt PmxvY2spOw0KKwkJCXRhc2tfaWQgPSBmZnMoc3djcV9ob3N0LT5wcmVfdHNrcykgLSAxOw0KKwkJ CXNwaW5fdW5sb2NrKCZzd2NxX2hvc3QtPmxvY2spOw0KKwkJCWVyciA9IHN3Y3Ffc2V0X3Rhc2so bW1jLCB0YXNrX2lkKTsNCisJCQlpZiAoIWVycikgew0KKwkJCQlzcGluX2xvY2soJnN3Y3FfaG9z dC0+bG9jayk7DQorCQkJCXN3Y3FfaG9zdC0+cHJlX3Rza3MgJj0gfigxPDx0YXNrX2lkKTsNCisJ CQkJc3Bpbl91bmxvY2soJnN3Y3FfaG9zdC0+bG9jayk7DQorCQkJCXN3Y3FfaG9zdC0+cW5kX3Rz a3MgfD0gKDE8PHRhc2tfaWQpOw0KKwkJCX0gZWxzZQ0KKwkJCQlnb3RvIFNXQ1FfRVJSX0hBTkRM RTsNCisJCQlicmVhazsNCisJCWNhc2UgTU1DX1NXQ1FfUE9MTDoNCisJCQllcnIgPSBzd2NxX3Bv bGxfdGFzayhtbWMsICZzd2NxX2hvc3QtPnJkeV90c2tzKTsNCisJCQlpZiAoZXJyKSB7DQorCQkJ CXRhc2tfaWQgPSBmZnMoc3djcV9ob3N0LT5xbmRfdHNrcykgLSAxOw0KKwkJCQlnb3RvIFNXQ1Ff RVJSX0hBTkRMRTsNCisJCQl9DQorCQkJYnJlYWs7DQorCQl9DQorDQorCQlzZXRfY3VycmVudF9z dGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOw0KKwkJaWYgKGF0b21pY19yZWFkKCZzd2NxX2hvc3Qt PnFfY250KSA9PSAwKQ0KKwkJCXNjaGVkdWxlKCk7DQorDQorCQlzZXRfY3VycmVudF9zdGF0ZShU QVNLX1JVTk5JTkcpOw0KKwkJaWYgKGt0aHJlYWRfc2hvdWxkX3N0b3AoKSkNCisJCQlicmVhazsN CisNCisJCWNvbnRpbnVlOw0KK1NXQ1FfRVJSX0hBTkRMRToNCisJCWlmIChlcnIpDQorCQkJc3dj cV9lcnJfaGFuZGxlKG1tYywgdGFza19pZCwgc3RlcCwgZXJyKTsNCisJfQ0KKw0KKwlyZXR1cm4g MDsNCit9DQorDQorc3RhdGljIGludCBzd2NxX3JlcXVlc3Qoc3RydWN0IG1tY19ob3N0ICptbWMs IHN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxKQ0KK3sNCisJc3RydWN0IHN3Y3FfaG9zdCAqc3djcV9o b3N0ID0gbW1jLT5jcWVfcHJpdmF0ZTsNCisNCisJaWYgKG1ycS0+ZGF0YSkgew0KKwkJaWYgKG1y cS0+dGFnID4gMzEpIHsNCisJCQlwcl9pbmZvKCIlcyBzaG91bGQgbm90IGlzc3VlIHRhZz4zMSBy ZXEuIiwgX19mdW5jX18pOw0KKwkJCVdBUk5fT04oMSk7DQorCQl9DQorCQlzcGluX2xvY2soJnN3 Y3FfaG9zdC0+bG9jayk7DQorCQlzd2NxX2hvc3QtPnByZV90c2tzIHw9ICgxIDw8IG1ycS0+dGFn KTsNCisJCXN3Y3FfaG9zdC0+bXJxW21ycS0+dGFnXSA9IG1ycTsNCisJCXNwaW5fdW5sb2NrKCZz d2NxX2hvc3QtPmxvY2spOw0KKwl9IGVsc2Ugew0KKwkJcHJfaW5mbygiJXMgc2hvdWxkIG5vdCBp c3N1ZSBub24tZGF0YSByZXEuIiwgX19mdW5jX18pOw0KKwkJV0FSTl9PTigxKTsNCisJCXJldHVy biAtMTsNCisJfQ0KKw0KKwlhdG9taWNfaW5jKCZzd2NxX2hvc3QtPnFfY250KTsNCisJd2FrZV91 cF9wcm9jZXNzKHN3Y3FfaG9zdC0+Y21kcV90aHJlYWQpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGludCBzd2NxX3dhaXRfZm9yX2lkbGUoc3RydWN0IG1tY19ob3N0ICptbWMpDQor ew0KKwlzdHJ1Y3Qgc3djcV9ob3N0ICpzd2NxX2hvc3QgPSBtbWMtPmNxZV9wcml2YXRlOw0KKw0K Kwl3aGlsZSAoYXRvbWljX3JlYWQoJnN3Y3FfaG9zdC0+cV9jbnQpKSB7DQorCQl3YWl0X2V2ZW50 X2ludGVycnVwdGlibGUoc3djcV9ob3N0LT53YWl0X2NtZHFfZW1wdHksDQorCQkJYXRvbWljX3Jl YWQoJnN3Y3FfaG9zdC0+cV9jbnQpID09IDApOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisN CitzdGF0aWMgYm9vbCBzd2NxX3RpbWVvdXQoc3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBt bWNfcmVxdWVzdCAqbXJxLA0KKwkJCSAgYm9vbCAqcmVjb3ZlcnlfbmVlZGVkKQ0KK3sNCisJc3Ry dWN0IHN3Y3FfaG9zdCAqc3djcV9ob3N0ID0gbW1jLT5jcWVfcHJpdmF0ZTsNCisNCisJcHJfaW5m bygiJXM6IEMlZCBQJTA4eCBRJTA4eCBSJTA4eCBUJWQsRCVkIiwNCisJCV9fZnVuY19fLA0KKwkJ YXRvbWljX3JlYWQoJnN3Y3FfaG9zdC0+cV9jbnQpLA0KKwkJc3djcV9ob3N0LT5wcmVfdHNrcywN CisJCXN3Y3FfaG9zdC0+cW5kX3Rza3MsDQorCQlzd2NxX2hvc3QtPnJkeV90c2tzLA0KKwkJYXRv bWljX3JlYWQoJnN3Y3FfaG9zdC0+b25nb2luZ190YXNrLmlkKSwNCisJCWF0b21pY19yZWFkKCZz d2NxX2hvc3QtPm9uZ29pbmdfdGFzay5kb25lKSk7DQorDQorCXN3Y3FfaG9zdC0+b3BzLT5kdW1w X2luZm8obW1jKTsNCisJKnJlY292ZXJ5X25lZWRlZCA9IHRydWU7DQorCXJldHVybiB0cnVlOw0K Kw0KK30NCisNCitzdGF0aWMgdm9pZCBzd2NxX3Jlc2V0KHN0cnVjdCBzd2NxX2hvc3QgKnN3Y3Ff aG9zdCkNCit7DQorCWludCBpZCA9IGF0b21pY19yZWFkKCZzd2NxX2hvc3QtPm9uZ29pbmdfdGFz ay5pZCk7DQorDQorCXNwaW5fbG9jaygmc3djcV9ob3N0LT5sb2NrKTsNCisJc3djcV9ob3N0LT5w cmVfdHNrcyB8PSBzd2NxX2hvc3QtPnFuZF90c2tzIHwgc3djcV9ob3N0LT5yZHlfdHNrczsNCisJ aWYgKGlkICE9IE1NQ19TV0NRX1RBU0tfSURMRSkNCisJCXN3Y3FfaG9zdC0+cHJlX3Rza3MgfD0g KDE8PGlkKTsNCisJc3djcV9ob3N0LT5xbmRfdHNrcyA9IDA7DQorCXN3Y3FfaG9zdC0+cmR5X3Rz a3MgPSAwOw0KKwlzcGluX3VubG9jaygmc3djcV9ob3N0LT5sb2NrKTsNCisJYXRvbWljX3NldCgm c3djcV9ob3N0LT5vbmdvaW5nX3Rhc2suZG9uZSwgMCk7DQorCWF0b21pY19zZXQoJnN3Y3FfaG9z dC0+b25nb2luZ190YXNrLmlkLCBNTUNfU1dDUV9UQVNLX0lETEUpOw0KK30NCisNCitzdGF0aWMg dm9pZCBzd2NxX3JlY292ZXJ5X3N0YXJ0KHN0cnVjdCBtbWNfaG9zdCAqbW1jKQ0KK3sNCisJc3Ry dWN0IHN3Y3FfaG9zdCAqc3djcV9ob3N0ID0gbW1jLT5jcWVfcHJpdmF0ZTsNCisNCisJcHJfZGVi dWcoIiVzOiBTV0NRIHJlY292ZXJ5IHN0YXJ0IiwgbW1jX2hvc3RuYW1lKG1tYykpOw0KKwlpZiAo c3djcV9ob3N0LT5vcHMtPmVycl9oYW5kbGUpDQorCQlzd2NxX2hvc3QtPm9wcy0+ZXJyX2hhbmRs ZShtbWMpOw0KKyNpZiBTV0NRX1RVTklOR19DTUQNCisJLyogTWF5YmUgaXQncyBjbWQgY3JjIGVy cm9yIGF0IHRoaXMgdGltZSBhbmQgY21kcSBub3QgZW1wdHksDQorCSAqIG9ubHkgY21kMTMgY2Fu IGJlIHVzZWQgZm9yIHR1bmluZy4NCisJICovDQorCWlmIChtbWMtPm9wcy0+ZXhlY3V0ZV90dW5p bmcpDQorCQltbWMtPm9wcy0+ZXhlY3V0ZV90dW5pbmcobW1jLCBNTUNfU0VORF9TVEFUVVMpOw0K KyNlbmRpZg0KKw0KK30NCisNCitzdGF0aWMgdm9pZCBzd2NxX3JlY292ZXJ5X2ZpbmlzaChzdHJ1 Y3QgbW1jX2hvc3QgKm1tYykNCit7DQorCXN0cnVjdCBzd2NxX2hvc3QgKnN3Y3FfaG9zdCA9IG1t Yy0+Y3FlX3ByaXZhdGU7DQorDQorCXN3Y3FfcmVzZXQoc3djcV9ob3N0KTsNCisJaWYgKG1tYy0+ b3BzLT5leGVjdXRlX3R1bmluZykNCisJCW1tYy0+b3BzLT5leGVjdXRlX3R1bmluZyhtbWMsIE1N Q19TRU5EX1RVTklOR19CTE9DS19IUzIwMCk7DQorDQorCXByX2RlYnVnKCIlczogU1dDUSByZWNv dmVyeSBkb25lIiwgbW1jX2hvc3RuYW1lKG1tYykpOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IG1tY19jcWVfb3BzIHN3Y3Ffb3BzID0gew0KKwkuY3FlX2VuYWJsZSA9IHN3Y3FfZW5hYmxl LA0KKwkuY3FlX2Rpc2FibGUgPSBzd2NxX2Rpc2FibGUsDQorCS5jcWVfcmVxdWVzdCA9IHN3Y3Ff cmVxdWVzdCwNCisJLmNxZV9wb3N0X3JlcSA9IHN3Y3FfcG9zdF9yZXEsDQorCS5jcWVfb2ZmID0g c3djcV9vZmYsDQorCS5jcWVfd2FpdF9mb3JfaWRsZSA9IHN3Y3Ffd2FpdF9mb3JfaWRsZSwNCisJ LmNxZV90aW1lb3V0ID0gc3djcV90aW1lb3V0LA0KKwkuY3FlX3JlY292ZXJ5X3N0YXJ0ID0gc3dj cV9yZWNvdmVyeV9zdGFydCwNCisJLmNxZV9yZWNvdmVyeV9maW5pc2ggPSBzd2NxX3JlY292ZXJ5 X2ZpbmlzaCwNCit9Ow0KKw0KK2ludCBzd2NxX2luaXQoc3RydWN0IHN3Y3FfaG9zdCAqc3djcV9o b3N0LCBzdHJ1Y3QgbW1jX2hvc3QgKm1tYykNCit7DQorCWludCBlcnI7DQorDQorCXN3Y3FfaG9z dC0+bW1jID0gbW1jOw0KKwltbWMtPmNxZV9wcml2YXRlID0gc3djcV9ob3N0Ow0KKwltbWMtPmNx ZV9vcHMgPSAmc3djcV9vcHM7DQorCS8qc3djbWRxIG5vdCBoYXZlIERDTUQqLw0KKwltbWMtPmNx ZV9xZGVwdGggPSBOVU1fU0xPVFM7DQorCWF0b21pY19zZXQoJnN3Y3FfaG9zdC0+b25nb2luZ190 YXNrLmlkLCBNTUNfU1dDUV9UQVNLX0lETEUpOw0KKwlzd2NxX2hvc3QtPmNtZHFfdGhyZWFkID0g a3RocmVhZF9jcmVhdGUobW1jX3J1bl9xdWV1ZV90aHJlYWQsIG1tYywNCisJCQkJIm1tYy1zd2Nx JWQiLCBtbWMtPmluZGV4KTsNCisNCisJaWYgKElTX0VSUihzd2NxX2hvc3QtPmNtZHFfdGhyZWFk KSkgew0KKwkJZXJyID0gUFRSX0VSUihzd2NxX2hvc3QtPmNtZHFfdGhyZWFkKTsNCisJCWdvdG8g b3V0X2VycjsNCisJfQ0KKw0KKwlzcGluX2xvY2tfaW5pdCgmc3djcV9ob3N0LT5sb2NrKTsNCisJ aW5pdF93YWl0cXVldWVfaGVhZCgmc3djcV9ob3N0LT53YWl0X2NtZHFfZW1wdHkpOw0KKwlwcl9p bmZvKCIlczogc3djcSBpbml0IGRvbmUiLCBtbWNfaG9zdG5hbWUobW1jKSk7DQorDQorCXJldHVy biAwOw0KKw0KK291dF9lcnI6DQorCXByX2VycigiJXM6IHN3Y3EgZmFpbGVkIHRvIGluaXRpYWxp emUsIGVycm9yICVkXG4iLA0KKwkgICAgICAgbW1jX2hvc3RuYW1lKG1tYyksIGVycik7DQorCXJl dHVybiBlcnI7DQorfQ0KK0VYUE9SVF9TWU1CT0woc3djcV9pbml0KTsNCisNCitNT0RVTEVfQVVU SE9SKCJHcmF5IEppYSA8R3JheS5KaWFAbWVkaWF0ZWsuY29tPiIpOw0KK01PRFVMRV9ERVNDUklQ VElPTigiU29mdHdhcmUgQ29tbWFuZCBRdWV1ZSBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGRy aXZlciIpOw0KK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJz L21tYy9ob3N0L3N3LWNxaGNpLmggYi9kcml2ZXJzL21tYy9ob3N0L3N3LWNxaGNpLmgNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmJlMDBiNmVhMzZlOQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zdy1jcWhjaS5oDQpAQCAtMCwwICsxLDY5 IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQorICogc3ctY3FoY2kuaA0KKyAqDQorICogZU1NQyBzb2Z0ZXdhcmUgY21k cSBpbnRlcmZhY2UgZm9yIG5vbi1jcWhpIGhvc3QuDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIw MTktMjAyMCBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBHcmF5LkppYSA8Z3JheS5qaWEuQG1l ZGlhdGVrLmNvbT4NCisgKi8NCisjaWZuZGVmIExJTlVYX01NQ19TV19DUUhDSV9IDQorI2RlZmlu ZSBMSU5VWF9NTUNfU1dfQ1FIQ0lfSA0KKw0KKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4NCisj aW5jbHVkZSA8bGludXgvc3BpbmxvY2tfdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgvY29tcGxl dGlvbi5oPg0KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21tYy9t bWMuaD4NCisjaW5jbHVkZSA8bGludXgvbW1jL2hvc3QuaD4NCisjaW5jbHVkZSA8bGludXgvbW1j L2NhcmQuaD4NCisjaW5jbHVkZSA8bGludXgvbW1jL3F1ZXVlLmg+DQorDQorI2RlZmluZSBNTUNf U1dDUV9ERUJVRyAgMA0KKyNkZWZpbmUgU1dDUV9UVU5JTkdfQ01EIDENCisjZGVmaW5lIE5VTV9T TE9UUyAzMg0KKw0KK3N0cnVjdCBzd2NxX29uZ29pbmdfdGFzayB7DQorLyogSWYgYSB0YXNrIGlz IHJ1bm5pbmcgLGlkIGZyb20gMCAtPjMxLiBBbmQgOTkgbWVhbnMgaG9zdA0KKyAqIGlzIGlkbGUg YW5kIGNhbiBwZXJmb3JtIElPIG9wZXJhdGlvbnMuDQorICovDQorI2RlZmluZSBNTUNfU1dDUV9U QVNLX0lETEUgIDk5DQorCWF0b21pY190ICBpZDsNCisJYXRvbWljX3QgZG9uZTsNCit9Ow0KKw0K Kw0KK3N0cnVjdCBzd2NxX2hvc3Rfb3BzIHsNCisJLyogQWRkIHNvbWUgb3BzDQorCSAqIG1heWJl IG5lZWQgdXNlIGluIGZ1dHVyZQ0KKwkgKi8NCisJdm9pZCAgKCpkdW1wX2luZm8pKHN0cnVjdCBt bWNfaG9zdCAqaG9zdCk7DQorCXZvaWQgICgqZXJyX2hhbmRsZSkoc3RydWN0IG1tY19ob3N0ICpo b3N0KTsNCisNCit9Ow0KKw0KKw0KK3N0cnVjdCBzd2NxX2hvc3Qgew0KKwlzdHJ1Y3QgbW1jX2hv c3QgKm1tYzsNCisJc3BpbmxvY2tfdCBsb2NrOw0KKwkvKg0KKwkgKiAgcV9jbnQgaXMgcmVxcyB0 b3RhbCBjbnQNCisJICogIHByZV90c2tzIGlzIHRoZSBiaXQgbWFwIG9mIHRhc2tzIG5lZWQgdG8g cXVldWUgaW4gZGV2aWNlDQorCSAqICBxbmRfdHNrcyBpcyB0aGUgYml0IG1hcCBvZiBxdWV1ZWQg dGFza3MgaW4gZGV2aWNlDQorCSAqICByZHlfdHNrcyBpcyB0aGUgYml0IG1hcCBvZiByZWFkeSB0 YXNrcyBpbiBkZXZpY2UNCisJICovDQorCWF0b21pY190IHFfY250Ow0KKwl1bnNpZ25lZCBpbnQg cHJlX3Rza3M7DQorCXVuc2lnbmVkIGludCBxbmRfdHNrczsNCisJdW5zaWduZWQgaW50IHJkeV90 c2tzOw0KKwlzdHJ1Y3Qgc3djcV9vbmdvaW5nX3Rhc2sgb25nb2luZ190YXNrOw0KKwlzdHJ1Y3Qg dGFza19zdHJ1Y3QJKmNtZHFfdGhyZWFkOw0KKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NtZHFf ZW1wdHk7DQorCXN0cnVjdCBtbWNfcmVxdWVzdCAqbXJxW05VTV9TTE9UU107DQorCWNvbnN0IHN0 cnVjdCBzd2NxX2hvc3Rfb3BzICpvcHM7DQorfTsNCisNCitpbnQgc3djcV9pbml0KHN0cnVjdCBz d2NxX2hvc3QgKnN3Y3FfaG9zdCwgc3RydWN0IG1tY19ob3N0ICptbWMpOw0KKw0KKw0KKyNlbmRp Zg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1jL2hvc3QuaCBiL2luY2x1ZGUvbGludXgv bW1jL2hvc3QuaA0KaW5kZXggYzViNmU5N2NiMjFhLi5hYTAyYmQ0Y2E0ZWUgMTAwNjQ0DQotLS0g YS9pbmNsdWRlL2xpbnV4L21tYy9ob3N0LmgNCisrKyBiL2luY2x1ZGUvbGludXgvbW1jL2hvc3Qu aA0KQEAgLTYwMSw1ICs2MDEsNiBAQCBzdGF0aWMgaW5saW5lIGVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uIG1tY19nZXRfZG1hX2RpcihzdHJ1Y3QgbW1jX2RhdGEgKmRhdGEpDQogDQogaW50IG1tY19z ZW5kX3R1bmluZyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBvcGNvZGUsIGludCAqY21kX2Vy cm9yKTsNCiBpbnQgbW1jX2Fib3J0X3R1bmluZyhzdHJ1Y3QgbW1jX2hvc3QgKmhvc3QsIHUzMiBv cGNvZGUpOw0KK2ludCBtbWNfc2VuZF9zdGF0dXMoc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIg KnN0YXR1cyk7DQogDQogI2VuZGlmIC8qIExJTlVYX01NQ19IT1NUX0ggKi8NCmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L21tYy9xdWV1ZS5oIGIvaW5jbHVkZS9saW51eC9tbWMvcXVldWUuaA0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZGI5YjgwNjI5ODY4DQot LS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL2xpbnV4L21tYy9xdWV1ZS5oDQpAQCAtMCwwICsx LDExNSBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyICov DQorLyoNCisgKiAgaW5jbHVkZS9saW51eC9tbWMvcXVldWUuaA0KKyAqICBtbWMgcXVldWUgc3Bl Y2lmaWMgZGVmaW5pdGlvbnMuDQorICovDQorDQorI2lmbmRlZiBMSU5VWF9NTUNfUVVFVUVfSA0K KyNkZWZpbmUgTElOVVhfTU1DX1FVRVVFX0gNCisNCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4N CisjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2Jsay1tcS5oPg0K KyNpbmNsdWRlIDxsaW51eC9tbWMvY29yZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5o Pg0KKw0KK2VudW0gbW1jX2lzc3VlZCB7DQorCU1NQ19SRVFfU1RBUlRFRCwNCisJTU1DX1JFUV9C VVNZLA0KKwlNTUNfUkVRX0ZBSUxFRF9UT19TVEFSVCwNCisJTU1DX1JFUV9GSU5JU0hFRCwNCit9 Ow0KKw0KK2VudW0gbW1jX2lzc3VlX3R5cGUgew0KKwlNTUNfSVNTVUVfU1lOQywNCisJTU1DX0lT U1VFX0RDTUQsDQorCU1NQ19JU1NVRV9BU1lOQywNCisJTU1DX0lTU1VFX01BWCwNCit9Ow0KKw0K K3N0cnVjdCBtbWNfYmxrX2RhdGE7DQorc3RydWN0IG1tY19ibGtfaW9jX2RhdGE7DQorDQorc3Ry dWN0IG1tY19ibGtfcmVxdWVzdCB7DQorCXN0cnVjdCBtbWNfcmVxdWVzdAltcnE7DQorCXN0cnVj dCBtbWNfY29tbWFuZAlzYmM7DQorCXN0cnVjdCBtbWNfY29tbWFuZAljbWQ7DQorCXN0cnVjdCBt bWNfY29tbWFuZAlzdG9wOw0KKwlzdHJ1Y3QgbW1jX2RhdGEJCWRhdGE7DQorfTsNCisNCisvKioN CisgKiBlbnVtIG1tY19kcnZfb3AgLSBlbnVtZXJhdGVzIHRoZSBvcGVyYXRpb25zIGluIHRoZSBt bWNfcXVldWVfcmVxDQorICogQE1NQ19EUlZfT1BfSU9DVEw6IGlvY3RsIG9wZXJhdGlvbg0KKyAq IEBNTUNfRFJWX09QX0lPQ1RMX1JQTUI6IFJQTUItb3JpZW50ZWQgaW9jdGwgb3BlcmF0aW9uDQor ICogQE1NQ19EUlZfT1BfQk9PVF9XUDogd3JpdGUgcHJvdGVjdCBib290IHBhcnRpdGlvbnMNCisg KiBATU1DX0RSVl9PUF9HRVRfQ0FSRF9TVEFUVVM6IGdldCBjYXJkIHN0YXR1cw0KKyAqIEBNTUNf RFJWX09QX0dFVF9FWFRfQ1NEOiBnZXQgdGhlIEVYVCBDU0QgZnJvbSBhbiBlTU1DIGNhcmQNCisg Ki8NCitlbnVtIG1tY19kcnZfb3Agew0KKwlNTUNfRFJWX09QX0lPQ1RMLA0KKwlNTUNfRFJWX09Q X0lPQ1RMX1JQTUIsDQorCU1NQ19EUlZfT1BfQk9PVF9XUCwNCisJTU1DX0RSVl9PUF9HRVRfQ0FS RF9TVEFUVVMsDQorCU1NQ19EUlZfT1BfR0VUX0VYVF9DU0QsDQorfTsNCisNCitzdHJ1Y3QgbW1j X3F1ZXVlX3JlcSB7DQorCXN0cnVjdCBtbWNfYmxrX3JlcXVlc3QJYnJxOw0KKwlzdHJ1Y3Qgc2Nh dHRlcmxpc3QJKnNnOw0KKwllbnVtIG1tY19kcnZfb3AJCWRydl9vcDsNCisJaW50CQkJZHJ2X29w X3Jlc3VsdDsNCisJdm9pZAkJCSpkcnZfb3BfZGF0YTsNCisJdW5zaWduZWQgaW50CQlpb2NfY291 bnQ7DQorCWludAkJCXJldHJpZXM7DQorfTsNCisNCitzdHJ1Y3QgbW1jX3F1ZXVlIHsNCisJc3Ry dWN0IG1tY19jYXJkCQkqY2FyZDsNCisJc3RydWN0IG1tY19jdHgJCWN0eDsNCisJc3RydWN0IGJs a19tcV90YWdfc2V0CXRhZ19zZXQ7DQorCXN0cnVjdCBtbWNfYmxrX2RhdGEJKmJsa2RhdGE7DQor CXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpxdWV1ZTsNCisJc3BpbmxvY2tfdAkJbG9jazsNCisJaW50 CQkJaW5fZmxpZ2h0W01NQ19JU1NVRV9NQVhdOw0KKwl1bnNpZ25lZCBpbnQJCWNxZV9idXN5Ow0K KyNkZWZpbmUgTU1DX0NRRV9EQ01EX0JVU1kJQklUKDApDQorI2RlZmluZSBNTUNfQ1FFX1FVRVVF X0ZVTEwJQklUKDEpDQorCWJvb2wJCQlidXN5Ow0KKwlib29sCQkJdXNlX2NxZTsNCisJYm9vbAkJ CXJlY292ZXJ5X25lZWRlZDsNCisJYm9vbAkJCWluX3JlY292ZXJ5Ow0KKwlib29sCQkJcndfd2Fp dDsNCisJYm9vbAkJCXdhaXRpbmc7DQorCXN0cnVjdCB3b3JrX3N0cnVjdAlyZWNvdmVyeV93b3Jr Ow0KKwl3YWl0X3F1ZXVlX2hlYWRfdAl3YWl0Ow0KKwlzdHJ1Y3QgcmVxdWVzdAkJKnJlY292ZXJ5 X3JlcTsNCisJc3RydWN0IHJlcXVlc3QJCSpjb21wbGV0ZV9yZXE7DQorCXN0cnVjdCBtdXRleAkJ Y29tcGxldGVfbG9jazsNCisJc3RydWN0IHdvcmtfc3RydWN0CWNvbXBsZXRlX3dvcms7DQorfTsN CisNCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtbWNfcXVldWVfcmVxICpyZXFfdG9fbW1jX3F1ZXVl X3JlcShzdHJ1Y3QgcmVxdWVzdCAqcnEpDQorew0KKwlyZXR1cm4gYmxrX21xX3JxX3RvX3BkdShy cSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJlcXVlc3QgKm1tY19xdWV1ZV9yZXFf dG9fcmVxKHN0cnVjdCBtbWNfcXVldWVfcmVxICptcXIpDQorew0KKwlyZXR1cm4gYmxrX21xX3Jx X2Zyb21fcGR1KG1xcik7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgaW50IG1tY190b3RfaW5fZmxp Z2h0KHN0cnVjdCBtbWNfcXVldWUgKm1xKQ0KK3sNCisJcmV0dXJuIG1xLT5pbl9mbGlnaHRbTU1D X0lTU1VFX1NZTkNdICsNCisJICAgICAgIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0RDTURdICsN CisJICAgICAgIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0FTWU5DXTsNCit9DQorDQorc3RhdGlj IGlubGluZSBpbnQgbW1jX2NxZV9xY250KHN0cnVjdCBtbWNfcXVldWUgKm1xKQ0KK3sNCisJcmV0 dXJuIG1xLT5pbl9mbGlnaHRbTU1DX0lTU1VFX0RDTURdICsNCisJICAgICAgIG1xLT5pbl9mbGln aHRbTU1DX0lTU1VFX0FTWU5DXTsNCit9DQorDQorI2VuZGlmDQotLSANCjIuMTguMA0K