Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp1741224ybg; Sat, 19 Oct 2019 01:30:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqz3AEL17/dCVVz3lTArlzXmsQPoyHzCZ4QulAZjuSXFnJvIptfVBrfjvsc9fPssfB5qnDtm X-Received: by 2002:a17:906:3f87:: with SMTP id b7mr12302000ejj.107.1571473822574; Sat, 19 Oct 2019 01:30:22 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1571473822; cv=pass; d=google.com; s=arc-20160816; b=NvFeOELsOkUHTzMbaJ1a9Y/Bpc0Fvvwas7nQI83BcdiDUekocJmcbftAqasLM8u4ed OpQWjOZK42WoA9KQxyVyQb01RLtS8zrEkWphainJYfWAi3Mh+UXaYSSaDiXybl+mbtMA 1wxoZS6Lwr1UxOH6PuWYR1UNvVrq+xeaGvVQNWOTa/CbkCfccz7fEni02HiQ6mGDElSG 0VO5RiBSxRmr1jJPqw/YSYOtK+zSyz9lWEUVfN4b2guDoa03RLWWnEH47UYZGtVUSVKG oLULhZaxx/3zquhON3DvxYa+qodTS0/Tyi1H8fLuRPedGK8m4+QYi2WL7p+UC3hqqGYO dY0g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=/YvLv3yYS9iQ9V2rnwbTVLmpE6aGtqi7Rqnt6Mf4mvc=; b=Rf1UIbvkbvt0mgnExWsZIdU1YBXjR3bhRxnMTVJeDuvkjgMVysklbSUMWjKVVd0MQN Ti0Wbzs/H9GAY2Kv6JzvEulGts5OjBeSMdRzxiY8Zk81gfenj00mK5xOt3browR8VMcV YbXiXq6O+4YnD4xgaEpeDFeoVE1d97X0NJWtFEt/yb0cc78QmgF3YJZoeNXY+OvePweG Z0o/qVSkbKx1Vrn4+tOGG5vdsjTaRY/pcvCS8YwgcW4u+h1F2CjzjFQlV9SzlA2GppyN CxLJ6vMkYzebTO/H12+U8JKGUpK359/771JWZrhl+5+Kl6UCr2MAXwezCvMOASd3dCQ9 lMDg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=Q953+tgf; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u8si5359246edq.84.2019.10.19.01.29.57; Sat, 19 Oct 2019 01:30:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=Q953+tgf; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405314AbfJROP7 (ORCPT + 99 others); Fri, 18 Oct 2019 10:15:59 -0400 Received: from mail-eopbgr800048.outbound.protection.outlook.com ([40.107.80.48]:65341 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2391594AbfJROP7 (ORCPT ); Fri, 18 Oct 2019 10:15:59 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l5GhuayyAroUHaaQOO9rSJ6P2w1bBXOFduUz7H85Y/b7uhTvvfCUWPSPIrpO5NW4g3YkMHiRm12MXcQKs2OJYIW/dAHJVaUOfLYroTK3tAsoc1pOQPNmkA4O3Dr8Q0lbOImvsYFUkfK1jENMO/PVhO370t0DwjFs3M9zJHKg+VdOF1zhjiEbwpongp5H6PqT6Pw7FPNvVMj3QLgtaxmzatJgyl1R/J/DwxZ+kdQ3LuRIjDJ0U4EEb12ltgP8QhM3PTS9YlGgEoaV6Y5rJhhuI7dk5CeBLMXcmgYl+5/wymP3m5KnIeyemLM6KQy/HTbYCpj9YpUJKqFbq8RIFYrRMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YvLv3yYS9iQ9V2rnwbTVLmpE6aGtqi7Rqnt6Mf4mvc=; b=Kb/7nGcXPZMVJigYrMTQqePF5nNRTBBK0dO7etiMmbBGYIRoUumNgPpvis8mMCITJ1ZqlmHeKAKKZPAtsuka7T7Ka56wE+Mme02gDiNlHKHH1OqwVGZiBkyxxL8wLaqz1vgQ8uuYPJS16vHYwx8sQomdosEuGfVEfnp5iON+Kpv95oJT++yQ0UwI1nSBSO+jS6Enz5bxUjm4pf1qPgm20PEzvnYb5pFrU1QS+XtgQvOfmseICtuj7dPx0dQASlgAqfewlBwuvAT9I7OwphK6MMD3+GdSIxMa5bE+oaor+Mq1VKPO6VwxI67qM86a2z+LaymRPa3GIHeGmDqF15vnBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YvLv3yYS9iQ9V2rnwbTVLmpE6aGtqi7Rqnt6Mf4mvc=; b=Q953+tgfJ+d83rlHRYvJ4R/J0ewARbjhzX4neXQeLOxrbJ/rLd9Y5+s3gLLj7ewAZIMs+cZJ2LbCOLhbjlVTk0Q3MtYXErD8/D6Fw6xm6OjGhJyDNVphBVIeqLD/IYDxVDIad88p5luNJntZBRd1z5HT/wgW4ALVSgy+VgkJXsw= Received: from DM5PR12MB1449.namprd12.prod.outlook.com (10.172.40.14) by DM5PR12MB1628.namprd12.prod.outlook.com (10.172.35.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.18; Fri, 18 Oct 2019 14:15:33 +0000 Received: from DM5PR12MB1449.namprd12.prod.outlook.com ([fe80::e0d2:a3e2:bf3d:a28f]) by DM5PR12MB1449.namprd12.prod.outlook.com ([fe80::e0d2:a3e2:bf3d:a28f%6]) with mapi id 15.20.2347.024; Fri, 18 Oct 2019 14:15:33 +0000 From: "Hook, Gary" To: Ard Biesheuvel , "linux-crypto@vger.kernel.org" CC: Herbert Xu , "David S. Miller" , Eric Biggers , "linux-arm-kernel@lists.infradead.org" , "Lendacky, Thomas" Subject: Re: [PATCH 04/25] crypto: ccp - switch from ablkcipher to skcipher Thread-Topic: [PATCH 04/25] crypto: ccp - switch from ablkcipher to skcipher Thread-Index: AQHVgomrr5/aiIMxXEi9x1JPCAvixKdgd+yA Date: Fri, 18 Oct 2019 14:15:33 +0000 Message-ID: References: <20191014121910.7264-1-ard.biesheuvel@linaro.org> <20191014121910.7264-5-ard.biesheuvel@linaro.org> In-Reply-To: <20191014121910.7264-5-ard.biesheuvel@linaro.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN6PR02CA0031.namprd02.prod.outlook.com (2603:10b6:805:a2::44) To DM5PR12MB1449.namprd12.prod.outlook.com (2603:10b6:4:10::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Gary.Hook@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.78.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2437ce90-713b-403c-043e-08d753d5a339 x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: DM5PR12MB1628: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:156; x-forefront-prvs: 01949FE337 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(366004)(346002)(136003)(39860400002)(376002)(396003)(189003)(199004)(66556008)(26005)(71190400001)(66946007)(14454004)(11346002)(446003)(476003)(71200400001)(478600001)(2906002)(25786009)(186003)(2616005)(102836004)(36756003)(2501003)(66476007)(66446008)(316002)(64756008)(6486002)(4326008)(8936002)(8676002)(229853002)(486006)(6246003)(386003)(6506007)(54906003)(53546011)(305945005)(86362001)(81166006)(7736002)(31696002)(3846002)(76176011)(99286004)(6436002)(66066001)(52116002)(5660300002)(14444005)(110136005)(6116002)(30864003)(31686004)(256004)(81156014)(6512007)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1628;H:DM5PR12MB1449.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ab+5nNmagV3OAL3cYKVh6GWF92PK4wUrS1MoWVKuh1Z9aqGq6UZJRVC4zG6fHdCRyxzqbVepUxgbuPvbWpSyd2CFY8KUSGrXXGQU7ncvip2jowwitCWm9gwlgf3RWMjta0/HSqdva7MPsoqcsx2XXXFjCLcCZHaxrJfW/8vvhOGqxnzwi3l76Gb+Z6uagYapNBArbsW5WlDsqItD9e2Y4C3ur1DLV+VPIMUDoOOEjfEzaOPtwd6X+rb32qWo7Yd2IxHQ2LPpGyGkQ6KsJpyPQLAgC2h5DePoRm46zdoei5dRer3ZYS/c/zilyaVcmBAQu4CKa5UPQlqjvtCuSNOp7BfEBYB21Jvy0yINt1a4zorF+DH+0skBNjf+/O/+mUJzRGj+T0X9cyq9eRnyUUfqFTEVE0ibKK53M+QqK4yTeF0= Content-Type: text/plain; charset="utf-8" Content-ID: <5858D48AA532CF4D9FE9962A88B43380@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2437ce90-713b-403c-043e-08d753d5a339 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Oct 2019 14:15:33.0315 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: dVAkMoLWOQBRvO/DGu0uZnB/BTUzHHP7ke4rsYCef5THn/J7HOyq1RGKCjmY3U6W X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1628 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org T24gMTAvMTQvMTkgNzoxOCBBTSwgQXJkIEJpZXNoZXV2ZWwgd3JvdGU6DQo+IENvbW1pdCA3YTdm ZmU2NWM4YzUgKCJjcnlwdG86IHNrY2lwaGVyIC0gQWRkIHRvcC1sZXZlbCBza2NpcGhlciBpbnRl cmZhY2UiKQ0KPiBkYXRlZCAyMCBhdWd1c3QgMjAxNSBpbnRyb2R1Y2VkIHRoZSBuZXcgc2tjaXBo ZXIgQVBJIHdoaWNoIGlzIHN1cHBvc2VkIHRvDQo+IHJlcGxhY2UgYm90aCBibGtjaXBoZXIgYW5k IGFibGtjaXBoZXIuIFdoaWxlIGFsbCBjb25zdW1lcnMgb2YgdGhlIEFQSSBoYXZlDQo+IGJlZW4g Y29udmVydGVkIGxvbmcgYWdvLCBzb21lIHByb2R1Y2VycyBvZiB0aGUgYWJsa2NpcGhlciByZW1h aW4sIGZvcmNpbmcNCj4gdXMgdG8ga2VlcCB0aGUgYWJsa2NpcGhlciBzdXBwb3J0IHJvdXRpbmVz IGFsaXZlLCBhbG9uZyB3aXRoIHRoZSBtYXRjaGluZw0KPiBjb2RlIHRvIGV4cG9zZSBbYV1ibGtj aXBoZXJzIHZpYSB0aGUgc2tjaXBoZXIgQVBJLg0KPiANCj4gU28gc3dpdGNoIHRoaXMgZHJpdmVy IHRvIHRoZSBza2NpcGhlciBBUEksIGFsbG93aW5nIHVzIHRvIGZpbmFsbHkgZHJvcCB0aGUNCj4g YmxrY2lwaGVyIGNvZGUgaW4gdGhlIG5lYXIgZnV0dXJlLg0KPiANCj4gQ2M6IFRvbSBMZW5kYWNr eSA8dGhvbWFzLmxlbmRhY2t5QGFtZC5jb20+DQo+IENjOiBHYXJ5IEhvb2sgPGdhcnkuaG9va0Bh bWQuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz4NCg0KUmV2aWV3ZWQtYnk6IEdhcnkgUiBIb29rIDxnYXJ5Lmhvb2tAYW1kLmNv bT4NClRlc3RlZC1ieTogR2FyeSBSIEhvb2sgPGdhcnkuaG9va0BhbWQuY29tPg0KDQo+IC0tLQ0K PiAgIGRyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy1nYWxvaXMuYyB8ICAgNyArLQ0K PiAgIGRyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy14dHMuYyAgICB8ICA5NCArKysr Ky0tLS0tLQ0KPiAgIGRyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy5jICAgICAgICB8 IDE2OSArKysrKysrKystLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5 cHRvLWRlczMuYyAgICAgICB8IDEwMCArKysrKystLS0tLS0NCj4gICBkcml2ZXJzL2NyeXB0by9j Y3AvY2NwLWNyeXB0by1tYWluLmMgICAgICAgfCAgMTQgKy0NCj4gICBkcml2ZXJzL2NyeXB0by9j Y3AvY2NwLWNyeXB0by5oICAgICAgICAgICAgfCAgMTMgKy0NCj4gICA2IGZpbGVzIGNoYW5nZWQs IDE4NiBpbnNlcnRpb25zKCspLCAyMTEgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9jcnlwdG8vY2NwL2NjcC1jcnlwdG8tYWVzLWdhbG9pcy5jIGIvZHJpdmVycy9jcnlw dG8vY2NwL2NjcC1jcnlwdG8tYWVzLWdhbG9pcy5jDQo+IGluZGV4IDk0YzFhZDdlZWRkZi4uZmY1 MGVlODBkMjIzIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1h ZXMtZ2Fsb2lzLmMNCj4gKysrIGIvZHJpdmVycy9jcnlwdG8vY2NwL2NjcC1jcnlwdG8tYWVzLWdh bG9pcy5jDQo+IEBAIC0xNzIsMTQgKzE3MiwxMiBAQCBzdGF0aWMgc3RydWN0IGFlYWRfYWxnIGNj cF9hZXNfZ2NtX2RlZmF1bHRzID0gew0KPiAgIAkuaXZzaXplID0gR0NNX0FFU19JVl9TSVpFLA0K PiAgIAkubWF4YXV0aHNpemUgPSBBRVNfQkxPQ0tfU0laRSwNCj4gICAJLmJhc2UgPSB7DQo+IC0J CS5jcmFfZmxhZ3MJPSBDUllQVE9fQUxHX1RZUEVfQUJMS0NJUEhFUiB8DQo+IC0JCQkJICBDUllQ VE9fQUxHX0FTWU5DIHwNCj4gKwkJLmNyYV9mbGFncwk9IENSWVBUT19BTEdfQVNZTkMgfA0KPiAg IAkJCQkgIENSWVBUT19BTEdfS0VSTl9EUklWRVJfT05MWSB8DQo+ICAgCQkJCSAgQ1JZUFRPX0FM R19ORUVEX0ZBTExCQUNLLA0KPiAgIAkJLmNyYV9ibG9ja3NpemUJPSBBRVNfQkxPQ0tfU0laRSwN Cj4gICAJCS5jcmFfY3R4c2l6ZQk9IHNpemVvZihzdHJ1Y3QgY2NwX2N0eCksDQo+ICAgCQkuY3Jh X3ByaW9yaXR5CT0gQ0NQX0NSQV9QUklPUklUWSwNCj4gLQkJLmNyYV90eXBlCT0gJmNyeXB0b19h YmxrY2lwaGVyX3R5cGUsDQo+ICAgCQkuY3JhX2V4aXQJPSBjY3BfYWVzX2djbV9jcmFfZXhpdCwN Cj4gICAJCS5jcmFfbW9kdWxlCT0gVEhJU19NT0RVTEUsDQo+ICAgCX0sDQo+IEBAIC0yMjksMTEg KzIyNywxMCBAQCBzdGF0aWMgaW50IGNjcF9yZWdpc3Rlcl9hZXNfYWVhZChzdHJ1Y3QgbGlzdF9o ZWFkICpoZWFkLA0KPiAgIAlzbnByaW50ZihhbGctPmJhc2UuY3JhX2RyaXZlcl9uYW1lLCBDUllQ VE9fTUFYX0FMR19OQU1FLCAiJXMiLA0KPiAgIAkJIGRlZi0+ZHJpdmVyX25hbWUpOw0KPiAgIAlh bGctPmJhc2UuY3JhX2Jsb2Nrc2l6ZSA9IGRlZi0+YmxvY2tzaXplOw0KPiAtCWFsZy0+YmFzZS5j cmFfYWJsa2NpcGhlci5pdnNpemUgPSBkZWYtPml2c2l6ZTsNCj4gICANCj4gICAJcmV0ID0gY3J5 cHRvX3JlZ2lzdGVyX2FlYWQoYWxnKTsNCj4gICAJaWYgKHJldCkgew0KPiAtCQlwcl9lcnIoIiVz IGFibGtjaXBoZXIgYWxnb3JpdGhtIHJlZ2lzdHJhdGlvbiBlcnJvciAoJWQpXG4iLA0KPiArCQlw cl9lcnIoIiVzIGFlYWQgYWxnb3JpdGhtIHJlZ2lzdHJhdGlvbiBlcnJvciAoJWQpXG4iLA0KPiAg IAkJICAgICAgIGFsZy0+YmFzZS5jcmFfbmFtZSwgcmV0KTsNCj4gICAJCWtmcmVlKGNjcF9hZWFk KTsNCj4gICAJCXJldHVybiByZXQ7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9jY3Av Y2NwLWNyeXB0by1hZXMteHRzLmMgYi9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1hZXMt eHRzLmMNCj4gaW5kZXggOGU0YTUzMWY0ZjcwLi4wNGIyNTE3ZGY5NTUgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy14dHMuYw0KPiArKysgYi9kcml2ZXJz L2NyeXB0by9jY3AvY2NwLWNyeXB0by1hZXMteHRzLmMNCj4gQEAgLTI0LDcgKzI0LDcgQEAgc3Ry dWN0IGNjcF9hZXNfeHRzX2RlZiB7DQo+ICAgCWNvbnN0IGNoYXIgKmRydl9uYW1lOw0KPiAgIH07 DQo+ICAgDQo+IC1zdGF0aWMgc3RydWN0IGNjcF9hZXNfeHRzX2RlZiBhZXNfeHRzX2FsZ3NbXSA9 IHsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2NwX2Flc194dHNfZGVmIGFlc194dHNfYWxnc1td ID0gew0KPiAgIAl7DQo+ICAgCQkubmFtZQkJPSAieHRzKGFlcykiLA0KPiAgIAkJLmRydl9uYW1l CT0gInh0cy1hZXMtY2NwIiwNCj4gQEAgLTYxLDI2ICs2MSwyNSBAQCBzdGF0aWMgc3RydWN0IGNj cF91bml0X3NpemVfbWFwIHh0c191bml0X3NpemVzW10gPSB7DQo+ICAgDQo+ICAgc3RhdGljIGlu dCBjY3BfYWVzX3h0c19jb21wbGV0ZShzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKmFzeW5j X3JlcSwgaW50IHJldCkNCj4gICB7DQo+IC0Jc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVx ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2Nhc3QoYXN5bmNfcmVxKTsNCj4gLQlzdHJ1Y3QgY2NwX2Fl c19yZXFfY3R4ICpyY3R4ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOw0KPiArCXN0cnVj dCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEgPSBza2NpcGhlcl9yZXF1ZXN0X2Nhc3QoYXN5bmNfcmVx KTsNCj4gKwlzdHJ1Y3QgY2NwX2Flc19yZXFfY3R4ICpyY3R4ID0gc2tjaXBoZXJfcmVxdWVzdF9j dHgocmVxKTsNCj4gICANCj4gICAJaWYgKHJldCkNCj4gICAJCXJldHVybiByZXQ7DQo+ICAgDQo+ IC0JbWVtY3B5KHJlcS0+aW5mbywgcmN0eC0+aXYsIEFFU19CTE9DS19TSVpFKTsNCj4gKwltZW1j cHkocmVxLT5pdiwgcmN0eC0+aXYsIEFFU19CTE9DS19TSVpFKTsNCj4gICANCj4gICAJcmV0dXJu IDA7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfYWVzX3h0c19zZXRrZXkoc3RydWN0 IGNyeXB0b19hYmxrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICprZXksDQo+ICtzdGF0aWMgaW50IGNj cF9hZXNfeHRzX3NldGtleShzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICpr ZXksDQo+ICAgCQkJICAgICAgdW5zaWduZWQgaW50IGtleV9sZW4pDQo+ICAgew0KPiAtCXN0cnVj dCBjcnlwdG9fdGZtICp4Zm0gPSBjcnlwdG9fYWJsa2NpcGhlcl90Zm0odGZtKTsNCj4gLQlzdHJ1 Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgoeGZtKTsNCj4gKwlzdHJ1Y3QgY2NwX2N0 eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0eCh0Zm0pOw0KPiAgIAl1bnNpZ25lZCBpbnQgY2Nw dmVyc2lvbiA9IGNjcF92ZXJzaW9uKCk7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+IC0JcmV0ID0g eHRzX2NoZWNrX2tleSh4Zm0sIGtleSwga2V5X2xlbik7DQo+ICsJcmV0ID0geHRzX3ZlcmlmeV9r ZXkodGZtLCBrZXksIGtleV9sZW4pOw0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJuIHJldDsN Cj4gICANCj4gQEAgLTEwMiwxMSArMTAxLDEyIEBAIHN0YXRpYyBpbnQgY2NwX2Flc194dHNfc2V0 a2V5KHN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqdGZtLCBjb25zdCB1OCAqa2V5LA0KPiAgIAly ZXR1cm4gY3J5cHRvX3N5bmNfc2tjaXBoZXJfc2V0a2V5KGN0eC0+dS5hZXMudGZtX3NrY2lwaGVy LCBrZXksIGtleV9sZW4pOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgY2NwX2Flc194dHNf Y3J5cHQoc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLA0KPiArc3RhdGljIGludCBjY3Bf YWVzX3h0c19jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxLA0KPiAgIAkJCSAgICAg dW5zaWduZWQgaW50IGVuY3J5cHQpDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBj cnlwdG9fdGZtX2N0eChyZXEtPmJhc2UudGZtKTsNCj4gLQlzdHJ1Y3QgY2NwX2Flc19yZXFfY3R4 ICpyY3R4ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOw0KPiArCXN0cnVjdCBjcnlwdG9f c2tjaXBoZXIgKnRmbSA9IGNyeXB0b19za2NpcGhlcl9yZXF0Zm0ocmVxKTsNCj4gKwlzdHJ1Y3Qg Y2NwX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0eCh0Zm0pOw0KPiArCXN0cnVjdCBjY3Bf YWVzX3JlcV9jdHggKnJjdHggPSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOw0KPiAgIAl1bnNp Z25lZCBpbnQgY2NwdmVyc2lvbiA9IGNjcF92ZXJzaW9uKCk7DQo+ICAgCXVuc2lnbmVkIGludCBm YWxsYmFjayA9IDA7DQo+ICAgCXVuc2lnbmVkIGludCB1bml0Ow0KPiBAQCAtMTE2LDcgKzExNiw3 IEBAIHN0YXRpYyBpbnQgY2NwX2Flc194dHNfY3J5cHQoc3RydWN0IGFibGtjaXBoZXJfcmVxdWVz dCAqcmVxLA0KPiAgIAlpZiAoIWN0eC0+dS5hZXMua2V5X2xlbikNCj4gICAJCXJldHVybiAtRUlO VkFMOw0KPiAgIA0KPiAtCWlmICghcmVxLT5pbmZvKQ0KPiArCWlmICghcmVxLT5pdikNCj4gICAJ CXJldHVybiAtRUlOVkFMOw0KPiAgIA0KPiAgIAkvKiBDaGVjayBjb25kaXRpb25zIHVuZGVyIHdo aWNoIHRoZSBDQ1AgY2FuIGZ1bGZpbGwgYSByZXF1ZXN0LiBUaGUNCj4gQEAgLTEyNyw3ICsxMjcs NyBAQCBzdGF0aWMgaW50IGNjcF9hZXNfeHRzX2NyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVl c3QgKnJlcSwNCj4gICAJICovDQo+ICAgCXVuaXRfc2l6ZSA9IENDUF9YVFNfQUVTX1VOSVRfU0la RV9fTEFTVDsNCj4gICAJZm9yICh1bml0ID0gMDsgdW5pdCA8IEFSUkFZX1NJWkUoeHRzX3VuaXRf c2l6ZXMpOyB1bml0KyspIHsNCj4gLQkJaWYgKHJlcS0+bmJ5dGVzID09IHh0c191bml0X3NpemVz W3VuaXRdLnNpemUpIHsNCj4gKwkJaWYgKHJlcS0+Y3J5cHRsZW4gPT0geHRzX3VuaXRfc2l6ZXNb dW5pdF0uc2l6ZSkgew0KPiAgIAkJCXVuaXRfc2l6ZSA9IHVuaXQ7DQo+ICAgCQkJYnJlYWs7DQo+ ICAgCQl9DQo+IEBAIC0xNTUsMTQgKzE1NSwxNCBAQCBzdGF0aWMgaW50IGNjcF9hZXNfeHRzX2Ny eXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSwNCj4gICAJCXNrY2lwaGVyX3JlcXVl c3Rfc2V0X2NhbGxiYWNrKHN1YnJlcSwgcmVxLT5iYXNlLmZsYWdzLA0KPiAgIAkJCQkJICAgICAg TlVMTCwgTlVMTCk7DQo+ICAgCQlza2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChzdWJyZXEsIHJl cS0+c3JjLCByZXEtPmRzdCwNCj4gLQkJCQkJICAgcmVxLT5uYnl0ZXMsIHJlcS0+aW5mbyk7DQo+ ICsJCQkJCSAgIHJlcS0+Y3J5cHRsZW4sIHJlcS0+aXYpOw0KPiAgIAkJcmV0ID0gZW5jcnlwdCA/ IGNyeXB0b19za2NpcGhlcl9lbmNyeXB0KHN1YnJlcSkgOg0KPiAgIAkJCQljcnlwdG9fc2tjaXBo ZXJfZGVjcnlwdChzdWJyZXEpOw0KPiAgIAkJc2tjaXBoZXJfcmVxdWVzdF96ZXJvKHN1YnJlcSk7 DQo+ICAgCQlyZXR1cm4gcmV0Ow0KPiAgIAl9DQo+ICAgDQo+IC0JbWVtY3B5KHJjdHgtPml2LCBy ZXEtPmluZm8sIEFFU19CTE9DS19TSVpFKTsNCj4gKwltZW1jcHkocmN0eC0+aXYsIHJlcS0+aXYs IEFFU19CTE9DS19TSVpFKTsNCj4gICAJc2dfaW5pdF9vbmUoJnJjdHgtPml2X3NnLCByY3R4LT5p diwgQUVTX0JMT0NLX1NJWkUpOw0KPiAgIA0KPiAgIAltZW1zZXQoJnJjdHgtPmNtZCwgMCwgc2l6 ZW9mKHJjdHgtPmNtZCkpOw0KPiBAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBpbnQgY2NwX2Fl c194dHNfY3J5cHQoc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLA0KPiAgIAlyY3R4LT5j bWQudS54dHMuaXYgPSAmcmN0eC0+aXZfc2c7DQo+ICAgCXJjdHgtPmNtZC51Lnh0cy5pdl9sZW4g PSBBRVNfQkxPQ0tfU0laRTsNCj4gICAJcmN0eC0+Y21kLnUueHRzLnNyYyA9IHJlcS0+c3JjOw0K PiAtCXJjdHgtPmNtZC51Lnh0cy5zcmNfbGVuID0gcmVxLT5uYnl0ZXM7DQo+ICsJcmN0eC0+Y21k LnUueHRzLnNyY19sZW4gPSByZXEtPmNyeXB0bGVuOw0KPiAgIAlyY3R4LT5jbWQudS54dHMuZHN0 ID0gcmVxLT5kc3Q7DQo+ICAgDQo+ICAgCXJldCA9IGNjcF9jcnlwdG9fZW5xdWV1ZV9yZXF1ZXN0 KCZyZXEtPmJhc2UsICZyY3R4LT5jbWQpOw0KPiBAQCAtMTg1LDE5ICsxODUsMTkgQEAgc3RhdGlj IGludCBjY3BfYWVzX3h0c19jcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEsDQo+ ICAgCXJldHVybiByZXQ7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfYWVzX3h0c19l bmNyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4gK3N0YXRpYyBpbnQgY2Nw X2Flc194dHNfZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQ0KPiAgIHsNCj4g ICAJcmV0dXJuIGNjcF9hZXNfeHRzX2NyeXB0KHJlcSwgMSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIGludCBjY3BfYWVzX3h0c19kZWNyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJl cSkNCj4gK3N0YXRpYyBpbnQgY2NwX2Flc194dHNfZGVjcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVx dWVzdCAqcmVxKQ0KPiAgIHsNCj4gICAJcmV0dXJuIGNjcF9hZXNfeHRzX2NyeXB0KHJlcSwgMCk7 DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfYWVzX3h0c19jcmFfaW5pdChzdHJ1Y3Qg Y3J5cHRvX3RmbSAqdGZtKQ0KPiArc3RhdGljIGludCBjY3BfYWVzX3h0c19pbml0X3RmbShzdHJ1 Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0pDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3R4ICpjdHgg PSBjcnlwdG9fdGZtX2N0eCh0Zm0pOw0KPiArCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9f c2tjaXBoZXJfY3R4KHRmbSk7DQo+ICAgCXN0cnVjdCBjcnlwdG9fc3luY19za2NpcGhlciAqZmFs bGJhY2tfdGZtOw0KPiAgIA0KPiAgIAljdHgtPmNvbXBsZXRlID0gY2NwX2Flc194dHNfY29tcGxl dGU7DQo+IEBAIC0yMTIsMTQgKzIxMiwxNCBAQCBzdGF0aWMgaW50IGNjcF9hZXNfeHRzX2NyYV9p bml0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pDQo+ICAgCX0NCj4gICAJY3R4LT51LmFlcy50Zm1f c2tjaXBoZXIgPSBmYWxsYmFja190Zm07DQo+ICAgDQo+IC0JdGZtLT5jcnRfYWJsa2NpcGhlci5y ZXFzaXplID0gc2l6ZW9mKHN0cnVjdCBjY3BfYWVzX3JlcV9jdHgpOw0KPiArCWNyeXB0b19za2Np cGhlcl9zZXRfcmVxc2l6ZSh0Zm0sIHNpemVvZihzdHJ1Y3QgY2NwX2Flc19yZXFfY3R4KSk7DQo+ ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGNjcF9hZXNf eHRzX2NyYV9leGl0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pDQo+ICtzdGF0aWMgdm9pZCBjY3Bf YWVzX3h0c19leGl0X3RmbShzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0pDQo+ICAgew0KPiAt CXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0Zm0pOw0KPiArCXN0cnVjdCBj Y3BfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7DQo+ICAgDQo+ICAgCWNyeXB0 b19mcmVlX3N5bmNfc2tjaXBoZXIoY3R4LT51LmFlcy50Zm1fc2tjaXBoZXIpOw0KPiAgIH0NCj4g QEAgLTIyNyw4ICsyMjcsOCBAQCBzdGF0aWMgdm9pZCBjY3BfYWVzX3h0c19jcmFfZXhpdChzdHJ1 Y3QgY3J5cHRvX3RmbSAqdGZtKQ0KPiAgIHN0YXRpYyBpbnQgY2NwX3JlZ2lzdGVyX2Flc194dHNf YWxnKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsDQo+ICAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgY2Nw X2Flc194dHNfZGVmICpkZWYpDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3J5cHRvX2FibGtjaXBo ZXJfYWxnICpjY3BfYWxnOw0KPiAtCXN0cnVjdCBjcnlwdG9fYWxnICphbGc7DQo+ICsJc3RydWN0 IGNjcF9jcnlwdG9fc2tjaXBoZXJfYWxnICpjY3BfYWxnOw0KPiArCXN0cnVjdCBza2NpcGhlcl9h bGcgKmFsZzsNCj4gICAJaW50IHJldDsNCj4gICANCj4gICAJY2NwX2FsZyA9IGt6YWxsb2Moc2l6 ZW9mKCpjY3BfYWxnKSwgR0ZQX0tFUk5FTCk7DQo+IEBAIC0yMzksMzAgKzIzOSwzMCBAQCBzdGF0 aWMgaW50IGNjcF9yZWdpc3Rlcl9hZXNfeHRzX2FsZyhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLA0K PiAgIA0KPiAgIAlhbGcgPSAmY2NwX2FsZy0+YWxnOw0KPiAgIA0KPiAtCXNucHJpbnRmKGFsZy0+ Y3JhX25hbWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIsIGRlZi0+bmFtZSk7DQo+IC0Jc25w cmludGYoYWxnLT5jcmFfZHJpdmVyX25hbWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIsDQo+ ICsJc25wcmludGYoYWxnLT5iYXNlLmNyYV9uYW1lLCBDUllQVE9fTUFYX0FMR19OQU1FLCAiJXMi LCBkZWYtPm5hbWUpOw0KPiArCXNucHJpbnRmKGFsZy0+YmFzZS5jcmFfZHJpdmVyX25hbWUsIENS WVBUT19NQVhfQUxHX05BTUUsICIlcyIsDQo+ICAgCQkgZGVmLT5kcnZfbmFtZSk7DQo+IC0JYWxn LT5jcmFfZmxhZ3MgPSBDUllQVE9fQUxHX1RZUEVfQUJMS0NJUEhFUiB8IENSWVBUT19BTEdfQVNZ TkMgfA0KPiAtCQkJIENSWVBUT19BTEdfS0VSTl9EUklWRVJfT05MWSB8DQo+IC0JCQkgQ1JZUFRP X0FMR19ORUVEX0ZBTExCQUNLOw0KPiAtCWFsZy0+Y3JhX2Jsb2Nrc2l6ZSA9IEFFU19CTE9DS19T SVpFOw0KPiAtCWFsZy0+Y3JhX2N0eHNpemUgPSBzaXplb2Yoc3RydWN0IGNjcF9jdHgpOw0KPiAt CWFsZy0+Y3JhX3ByaW9yaXR5ID0gQ0NQX0NSQV9QUklPUklUWTsNCj4gLQlhbGctPmNyYV90eXBl ID0gJmNyeXB0b19hYmxrY2lwaGVyX3R5cGU7DQo+IC0JYWxnLT5jcmFfYWJsa2NpcGhlci5zZXRr ZXkgPSBjY3BfYWVzX3h0c19zZXRrZXk7DQo+IC0JYWxnLT5jcmFfYWJsa2NpcGhlci5lbmNyeXB0 ID0gY2NwX2Flc194dHNfZW5jcnlwdDsNCj4gLQlhbGctPmNyYV9hYmxrY2lwaGVyLmRlY3J5cHQg PSBjY3BfYWVzX3h0c19kZWNyeXB0Ow0KPiAtCWFsZy0+Y3JhX2FibGtjaXBoZXIubWluX2tleXNp emUgPSBBRVNfTUlOX0tFWV9TSVpFICogMjsNCj4gLQlhbGctPmNyYV9hYmxrY2lwaGVyLm1heF9r ZXlzaXplID0gQUVTX01BWF9LRVlfU0laRSAqIDI7DQo+IC0JYWxnLT5jcmFfYWJsa2NpcGhlci5p dnNpemUgPSBBRVNfQkxPQ0tfU0laRTsNCj4gLQlhbGctPmNyYV9pbml0ID0gY2NwX2Flc194dHNf Y3JhX2luaXQ7DQo+IC0JYWxnLT5jcmFfZXhpdCA9IGNjcF9hZXNfeHRzX2NyYV9leGl0Ow0KPiAt CWFsZy0+Y3JhX21vZHVsZSA9IFRISVNfTU9EVUxFOw0KPiAtDQo+IC0JcmV0ID0gY3J5cHRvX3Jl Z2lzdGVyX2FsZyhhbGcpOw0KPiArCWFsZy0+YmFzZS5jcmFfZmxhZ3MJPSBDUllQVE9fQUxHX0FT WU5DIHwNCj4gKwkJCQkgIENSWVBUT19BTEdfS0VSTl9EUklWRVJfT05MWSB8DQo+ICsJCQkJICBD UllQVE9fQUxHX05FRURfRkFMTEJBQ0s7DQo+ICsJYWxnLT5iYXNlLmNyYV9ibG9ja3NpemUJPSBB RVNfQkxPQ0tfU0laRTsNCj4gKwlhbGctPmJhc2UuY3JhX2N0eHNpemUJPSBzaXplb2Yoc3RydWN0 IGNjcF9jdHgpOw0KPiArCWFsZy0+YmFzZS5jcmFfcHJpb3JpdHkJPSBDQ1BfQ1JBX1BSSU9SSVRZ Ow0KPiArCWFsZy0+YmFzZS5jcmFfbW9kdWxlCT0gVEhJU19NT0RVTEU7DQo+ICsNCj4gKwlhbGct PnNldGtleQkJPSBjY3BfYWVzX3h0c19zZXRrZXk7DQo+ICsJYWxnLT5lbmNyeXB0CQk9IGNjcF9h ZXNfeHRzX2VuY3J5cHQ7DQo+ICsJYWxnLT5kZWNyeXB0CQk9IGNjcF9hZXNfeHRzX2RlY3J5cHQ7 DQo+ICsJYWxnLT5taW5fa2V5c2l6ZQk9IEFFU19NSU5fS0VZX1NJWkUgKiAyOw0KPiArCWFsZy0+ bWF4X2tleXNpemUJPSBBRVNfTUFYX0tFWV9TSVpFICogMjsNCj4gKwlhbGctPml2c2l6ZQkJPSBB RVNfQkxPQ0tfU0laRTsNCj4gKwlhbGctPmluaXQJCT0gY2NwX2Flc194dHNfaW5pdF90Zm07DQo+ ICsJYWxnLT5leGl0CQk9IGNjcF9hZXNfeHRzX2V4aXRfdGZtOw0KPiArDQo+ICsJcmV0ID0gY3J5 cHRvX3JlZ2lzdGVyX3NrY2lwaGVyKGFsZyk7DQo+ICAgCWlmIChyZXQpIHsNCj4gLQkJcHJfZXJy KCIlcyBhYmxrY2lwaGVyIGFsZ29yaXRobSByZWdpc3RyYXRpb24gZXJyb3IgKCVkKVxuIiwNCj4g LQkJICAgICAgIGFsZy0+Y3JhX25hbWUsIHJldCk7DQo+ICsJCXByX2VycigiJXMgc2tjaXBoZXIg YWxnb3JpdGhtIHJlZ2lzdHJhdGlvbiBlcnJvciAoJWQpXG4iLA0KPiArCQkgICAgICAgYWxnLT5i YXNlLmNyYV9uYW1lLCByZXQpOw0KPiAgIAkJa2ZyZWUoY2NwX2FsZyk7DQo+ICAgCQlyZXR1cm4g cmV0Ow0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0 by1hZXMuYyBiL2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLWFlcy5jDQo+IGluZGV4IDU4 YzZkZGRmYzVlMS4uMzMzMjhhMTUzMjI1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2NyeXB0by9j Y3AvY2NwLWNyeXB0by1hZXMuYw0KPiArKysgYi9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0 by1hZXMuYw0KPiBAQCAtMjEsMjUgKzIxLDI0IEBADQo+ICAgDQo+ICAgc3RhdGljIGludCBjY3Bf YWVzX2NvbXBsZXRlKHN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqYXN5bmNfcmVxLCBpbnQg cmV0KQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEgPSBhYmxrY2lw aGVyX3JlcXVlc3RfY2FzdChhc3luY19yZXEpOw0KPiArCXN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0 ICpyZXEgPSBza2NpcGhlcl9yZXF1ZXN0X2Nhc3QoYXN5bmNfcmVxKTsNCj4gICAJc3RydWN0IGNj cF9jdHggKmN0eCA9IGNyeXB0b190Zm1fY3R4KHJlcS0+YmFzZS50Zm0pOw0KPiAtCXN0cnVjdCBj Y3BfYWVzX3JlcV9jdHggKnJjdHggPSBhYmxrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7DQo+ICsJ c3RydWN0IGNjcF9hZXNfcmVxX2N0eCAqcmN0eCA9IHNrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7 DQo+ICAgDQo+ICAgCWlmIChyZXQpDQo+ICAgCQlyZXR1cm4gcmV0Ow0KPiAgIA0KPiAgIAlpZiAo Y3R4LT51LmFlcy5tb2RlICE9IENDUF9BRVNfTU9ERV9FQ0IpDQo+IC0JCW1lbWNweShyZXEtPmlu Zm8sIHJjdHgtPml2LCBBRVNfQkxPQ0tfU0laRSk7DQo+ICsJCW1lbWNweShyZXEtPml2LCByY3R4 LT5pdiwgQUVTX0JMT0NLX1NJWkUpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAg DQo+IC1zdGF0aWMgaW50IGNjcF9hZXNfc2V0a2V5KHN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAq dGZtLCBjb25zdCB1OCAqa2V5LA0KPiArc3RhdGljIGludCBjY3BfYWVzX3NldGtleShzdHJ1Y3Qg Y3J5cHRvX3NrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICprZXksDQo+ICAgCQkJICB1bnNpZ25lZCBp bnQga2V5X2xlbikNCj4gICB7DQo+IC0Jc3RydWN0IGNjcF9jdHggKmN0eCA9IGNyeXB0b190Zm1f Y3R4KGNyeXB0b19hYmxrY2lwaGVyX3RmbSh0Zm0pKTsNCj4gLQlzdHJ1Y3QgY2NwX2NyeXB0b19h YmxrY2lwaGVyX2FsZyAqYWxnID0NCj4gLQkJY2NwX2NyeXB0b19hYmxrY2lwaGVyX2FsZyhjcnlw dG9fYWJsa2NpcGhlcl90Zm0odGZtKSk7DQo+ICsJc3RydWN0IGNjcF9jcnlwdG9fc2tjaXBoZXJf YWxnICphbGcgPSBjY3BfY3J5cHRvX3NrY2lwaGVyX2FsZyh0Zm0pOw0KPiArCXN0cnVjdCBjY3Bf Y3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7DQo+ICAgDQo+ICAgCXN3aXRjaCAo a2V5X2xlbikgew0KPiAgIAljYXNlIEFFU19LRVlTSVpFXzEyODoNCj4gQEAgLTUyLDcgKzUxLDcg QEAgc3RhdGljIGludCBjY3BfYWVzX3NldGtleShzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnRm bSwgY29uc3QgdTggKmtleSwNCj4gICAJCWN0eC0+dS5hZXMudHlwZSA9IENDUF9BRVNfVFlQRV8y NTY7DQo+ICAgCQlicmVhazsNCj4gICAJZGVmYXVsdDoNCj4gLQkJY3J5cHRvX2FibGtjaXBoZXJf c2V0X2ZsYWdzKHRmbSwgQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU4pOw0KPiArCQljcnlwdG9f c2tjaXBoZXJfc2V0X2ZsYWdzKHRmbSwgQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU4pOw0KPiAg IAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgCX0NCj4gICAJY3R4LT51LmFlcy5tb2RlID0gYWxnLT5t b2RlOw0KPiBAQCAtNjQsMTAgKzYzLDExIEBAIHN0YXRpYyBpbnQgY2NwX2Flc19zZXRrZXkoc3Ry dWN0IGNyeXB0b19hYmxrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICprZXksDQo+ICAgCXJldHVybiAw Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgY2NwX2Flc19jcnlwdChzdHJ1Y3QgYWJsa2Np cGhlcl9yZXF1ZXN0ICpyZXEsIGJvb2wgZW5jcnlwdCkNCj4gK3N0YXRpYyBpbnQgY2NwX2Flc19j cnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxLCBib29sIGVuY3J5cHQpDQo+ICAgew0K PiAtCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eChyZXEtPmJhc2UudGZtKTsN Cj4gLQlzdHJ1Y3QgY2NwX2Flc19yZXFfY3R4ICpyY3R4ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2N0 eChyZXEpOw0KPiArCXN0cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSA9IGNyeXB0b19za2NpcGhl cl9yZXF0Zm0ocmVxKTsNCj4gKwlzdHJ1Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVy X2N0eCh0Zm0pOw0KPiArCXN0cnVjdCBjY3BfYWVzX3JlcV9jdHggKnJjdHggPSBza2NpcGhlcl9y ZXF1ZXN0X2N0eChyZXEpOw0KPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKml2X3NnID0gTlVMTDsN Cj4gICAJdW5zaWduZWQgaW50IGl2X2xlbiA9IDA7DQo+ICAgCWludCByZXQ7DQo+IEBAIC03Nywx NCArNzcsMTQgQEAgc3RhdGljIGludCBjY3BfYWVzX2NyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3Jl cXVlc3QgKnJlcSwgYm9vbCBlbmNyeXB0KQ0KPiAgIA0KPiAgIAlpZiAoKChjdHgtPnUuYWVzLm1v ZGUgPT0gQ0NQX0FFU19NT0RFX0VDQikgfHwNCj4gICAJICAgICAoY3R4LT51LmFlcy5tb2RlID09 IENDUF9BRVNfTU9ERV9DQkMpKSAmJg0KPiAtCSAgICAocmVxLT5uYnl0ZXMgJiAoQUVTX0JMT0NL X1NJWkUgLSAxKSkpDQo+ICsJICAgIChyZXEtPmNyeXB0bGVuICYgKEFFU19CTE9DS19TSVpFIC0g MSkpKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgDQo+ICAgCWlmIChjdHgtPnUuYWVzLm1v ZGUgIT0gQ0NQX0FFU19NT0RFX0VDQikgew0KPiAtCQlpZiAoIXJlcS0+aW5mbykNCj4gKwkJaWYg KCFyZXEtPml2KQ0KPiAgIAkJCXJldHVybiAtRUlOVkFMOw0KPiAgIA0KPiAtCQltZW1jcHkocmN0 eC0+aXYsIHJlcS0+aW5mbywgQUVTX0JMT0NLX1NJWkUpOw0KPiArCQltZW1jcHkocmN0eC0+aXYs IHJlcS0+aXYsIEFFU19CTE9DS19TSVpFKTsNCj4gICAJCWl2X3NnID0gJnJjdHgtPml2X3NnOw0K PiAgIAkJaXZfbGVuID0gQUVTX0JMT0NLX1NJWkU7DQo+ICAgCQlzZ19pbml0X29uZShpdl9zZywg cmN0eC0+aXYsIGl2X2xlbik7DQo+IEBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIGludCBjY3Bf YWVzX2NyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSwgYm9vbCBlbmNyeXB0KQ0K PiAgIAlyY3R4LT5jbWQudS5hZXMuaXYgPSBpdl9zZzsNCj4gICAJcmN0eC0+Y21kLnUuYWVzLml2 X2xlbiA9IGl2X2xlbjsNCj4gICAJcmN0eC0+Y21kLnUuYWVzLnNyYyA9IHJlcS0+c3JjOw0KPiAt CXJjdHgtPmNtZC51LmFlcy5zcmNfbGVuID0gcmVxLT5uYnl0ZXM7DQo+ICsJcmN0eC0+Y21kLnUu YWVzLnNyY19sZW4gPSByZXEtPmNyeXB0bGVuOw0KPiAgIAlyY3R4LT5jbWQudS5hZXMuZHN0ID0g cmVxLT5kc3Q7DQo+ICAgDQo+ICAgCXJldCA9IGNjcF9jcnlwdG9fZW5xdWV1ZV9yZXF1ZXN0KCZy ZXEtPmJhc2UsICZyY3R4LT5jbWQpOw0KPiBAQCAtMTEwLDQ4ICsxMTAsNDQgQEAgc3RhdGljIGlu dCBjY3BfYWVzX2NyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSwgYm9vbCBlbmNy eXB0KQ0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgY2NwX2Fl c19lbmNyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4gK3N0YXRpYyBpbnQg Y2NwX2Flc19lbmNyeXB0KHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpDQo+ICAgew0KPiAg IAlyZXR1cm4gY2NwX2Flc19jcnlwdChyZXEsIHRydWUpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRp YyBpbnQgY2NwX2Flc19kZWNyeXB0KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4g K3N0YXRpYyBpbnQgY2NwX2Flc19kZWNyeXB0KHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEp DQo+ICAgew0KPiAgIAlyZXR1cm4gY2NwX2Flc19jcnlwdChyZXEsIGZhbHNlKTsNCj4gICB9DQo+ ICAgDQo+IC1zdGF0aWMgaW50IGNjcF9hZXNfY3JhX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRm bSkNCj4gK3N0YXRpYyBpbnQgY2NwX2Flc19pbml0X3RmbShzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVy ICp0Zm0pDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0 Zm0pOw0KPiArCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7 DQo+ICAgDQo+ICAgCWN0eC0+Y29tcGxldGUgPSBjY3BfYWVzX2NvbXBsZXRlOw0KPiAgIAljdHgt PnUuYWVzLmtleV9sZW4gPSAwOw0KPiAgIA0KPiAtCXRmbS0+Y3J0X2FibGtjaXBoZXIucmVxc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgY2NwX2Flc19yZXFfY3R4KTsNCj4gKwljcnlwdG9fc2tjaXBoZXJf c2V0X3JlcXNpemUodGZtLCBzaXplb2Yoc3RydWN0IGNjcF9hZXNfcmVxX2N0eCkpOw0KPiAgIA0K PiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBjY3BfYWVzX2NyYV9l eGl0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pDQo+IC17DQo+IC19DQo+IC0NCj4gICBzdGF0aWMg aW50IGNjcF9hZXNfcmZjMzY4Nl9jb21wbGV0ZShzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3Qg KmFzeW5jX3JlcSwNCj4gICAJCQkJICAgIGludCByZXQpDQo+ICAgew0KPiAtCXN0cnVjdCBhYmxr Y2lwaGVyX3JlcXVlc3QgKnJlcSA9IGFibGtjaXBoZXJfcmVxdWVzdF9jYXN0KGFzeW5jX3JlcSk7 DQo+IC0Jc3RydWN0IGNjcF9hZXNfcmVxX2N0eCAqcmN0eCA9IGFibGtjaXBoZXJfcmVxdWVzdF9j dHgocmVxKTsNCj4gKwlzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxID0gc2tjaXBoZXJfcmVx dWVzdF9jYXN0KGFzeW5jX3JlcSk7DQo+ICsJc3RydWN0IGNjcF9hZXNfcmVxX2N0eCAqcmN0eCA9 IHNrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7DQo+ICAgDQo+ICAgCS8qIFJlc3RvcmUgdGhlIG9y aWdpbmFsIHBvaW50ZXIgKi8NCj4gLQlyZXEtPmluZm8gPSByY3R4LT5yZmMzNjg2X2luZm87DQo+ ICsJcmVxLT5pdiA9IHJjdHgtPnJmYzM2ODZfaW5mbzsNCj4gICANCj4gICAJcmV0dXJuIGNjcF9h ZXNfY29tcGxldGUoYXN5bmNfcmVxLCByZXQpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQg Y2NwX2Flc19yZmMzNjg2X3NldGtleShzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnRmbSwgY29u c3QgdTggKmtleSwNCj4gK3N0YXRpYyBpbnQgY2NwX2Flc19yZmMzNjg2X3NldGtleShzdHJ1Y3Qg Y3J5cHRvX3NrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICprZXksDQo+ICAgCQkJCSAgdW5zaWduZWQg aW50IGtleV9sZW4pDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fdGZt X2N0eChjcnlwdG9fYWJsa2NpcGhlcl90Zm0odGZtKSk7DQo+ICsJc3RydWN0IGNjcF9jdHggKmN0 eCA9IGNyeXB0b19za2NpcGhlcl9jdHgodGZtKTsNCj4gICANCj4gICAJaWYgKGtleV9sZW4gPCBD VFJfUkZDMzY4Nl9OT05DRV9TSVpFKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+IEBAIC0xNjIs MTAgKzE1OCwxMSBAQCBzdGF0aWMgaW50IGNjcF9hZXNfcmZjMzY4Nl9zZXRrZXkoc3RydWN0IGNy eXB0b19hYmxrY2lwaGVyICp0Zm0sIGNvbnN0IHU4ICprZXksDQo+ICAgCXJldHVybiBjY3BfYWVz X3NldGtleSh0Zm0sIGtleSwga2V5X2xlbik7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBj Y3BfYWVzX3JmYzM2ODZfY3J5cHQoc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLCBib29s IGVuY3J5cHQpDQo+ICtzdGF0aWMgaW50IGNjcF9hZXNfcmZjMzY4Nl9jcnlwdChzdHJ1Y3Qgc2tj aXBoZXJfcmVxdWVzdCAqcmVxLCBib29sIGVuY3J5cHQpDQo+ICAgew0KPiAtCXN0cnVjdCBjY3Bf Y3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eChyZXEtPmJhc2UudGZtKTsNCj4gLQlzdHJ1Y3QgY2Nw X2Flc19yZXFfY3R4ICpyY3R4ID0gYWJsa2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEpOw0KPiArCXN0 cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSA9IGNyeXB0b19za2NpcGhlcl9yZXF0Zm0ocmVxKTsN Cj4gKwlzdHJ1Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0eCh0Zm0pOw0KPiAr CXN0cnVjdCBjY3BfYWVzX3JlcV9jdHggKnJjdHggPSBza2NpcGhlcl9yZXF1ZXN0X2N0eChyZXEp Ow0KPiAgIAl1OCAqaXY7DQo+ICAgDQo+ICAgCS8qIEluaXRpYWxpemUgdGhlIENUUiBibG9jayAq Lw0KPiBAQCAtMTczLDg0ICsxNzAsNzIgQEAgc3RhdGljIGludCBjY3BfYWVzX3JmYzM2ODZfY3J5 cHQoc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqcmVxLCBib29sIGVuY3J5cHQpDQo+ICAgCW1l bWNweShpdiwgY3R4LT51LmFlcy5ub25jZSwgQ1RSX1JGQzM2ODZfTk9OQ0VfU0laRSk7DQo+ICAg DQo+ICAgCWl2ICs9IENUUl9SRkMzNjg2X05PTkNFX1NJWkU7DQo+IC0JbWVtY3B5KGl2LCByZXEt PmluZm8sIENUUl9SRkMzNjg2X0lWX1NJWkUpOw0KPiArCW1lbWNweShpdiwgcmVxLT5pdiwgQ1RS X1JGQzM2ODZfSVZfU0laRSk7DQo+ICAgDQo+ICAgCWl2ICs9IENUUl9SRkMzNjg2X0lWX1NJWkU7 DQo+ICAgCSooX19iZTMyICopaXYgPSBjcHVfdG9fYmUzMigxKTsNCj4gICANCj4gICAJLyogUG9p bnQgdG8gdGhlIG5ldyBJViAqLw0KPiAtCXJjdHgtPnJmYzM2ODZfaW5mbyA9IHJlcS0+aW5mbzsN Cj4gLQlyZXEtPmluZm8gPSByY3R4LT5yZmMzNjg2X2l2Ow0KPiArCXJjdHgtPnJmYzM2ODZfaW5m byA9IHJlcS0+aXY7DQo+ICsJcmVxLT5pdiA9IHJjdHgtPnJmYzM2ODZfaXY7DQo+ICAgDQo+ICAg CXJldHVybiBjY3BfYWVzX2NyeXB0KHJlcSwgZW5jcnlwdCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIGludCBjY3BfYWVzX3JmYzM2ODZfZW5jcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0 ICpyZXEpDQo+ICtzdGF0aWMgaW50IGNjcF9hZXNfcmZjMzY4Nl9lbmNyeXB0KHN0cnVjdCBza2Np cGhlcl9yZXF1ZXN0ICpyZXEpDQo+ICAgew0KPiAgIAlyZXR1cm4gY2NwX2Flc19yZmMzNjg2X2Ny eXB0KHJlcSwgdHJ1ZSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfYWVzX3JmYzM2 ODZfZGVjcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEpDQo+ICtzdGF0aWMgaW50 IGNjcF9hZXNfcmZjMzY4Nl9kZWNyeXB0KHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpDQo+ ICAgew0KPiAgIAlyZXR1cm4gY2NwX2Flc19yZmMzNjg2X2NyeXB0KHJlcSwgZmFsc2UpOw0KPiAg IH0NCj4gICANCj4gLXN0YXRpYyBpbnQgY2NwX2Flc19yZmMzNjg2X2NyYV9pbml0KHN0cnVjdCBj cnlwdG9fdGZtICp0Zm0pDQo+ICtzdGF0aWMgaW50IGNjcF9hZXNfcmZjMzY4Nl9pbml0X3RmbShz dHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0pDQo+ICAgew0KPiAtCXN0cnVjdCBjY3BfY3R4ICpj dHggPSBjcnlwdG9fdGZtX2N0eCh0Zm0pOw0KPiArCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlw dG9fc2tjaXBoZXJfY3R4KHRmbSk7DQo+ICAgDQo+ICAgCWN0eC0+Y29tcGxldGUgPSBjY3BfYWVz X3JmYzM2ODZfY29tcGxldGU7DQo+ICAgCWN0eC0+dS5hZXMua2V5X2xlbiA9IDA7DQo+ICAgDQo+ IC0JdGZtLT5jcnRfYWJsa2NpcGhlci5yZXFzaXplID0gc2l6ZW9mKHN0cnVjdCBjY3BfYWVzX3Jl cV9jdHgpOw0KPiArCWNyeXB0b19za2NpcGhlcl9zZXRfcmVxc2l6ZSh0Zm0sIHNpemVvZihzdHJ1 Y3QgY2NwX2Flc19yZXFfY3R4KSk7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICAN Cj4gLXN0YXRpYyB2b2lkIGNjcF9hZXNfcmZjMzY4Nl9jcmFfZXhpdChzdHJ1Y3QgY3J5cHRvX3Rm bSAqdGZtKQ0KPiAtew0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgY2Nw X2Flc19kZWZhdWx0cyA9IHsNCj4gLQkuY3JhX2ZsYWdzCT0gQ1JZUFRPX0FMR19UWVBFX0FCTEtD SVBIRVIgfA0KPiAtCQkJICBDUllQVE9fQUxHX0FTWU5DIHwNCj4gLQkJCSAgQ1JZUFRPX0FMR19L RVJOX0RSSVZFUl9PTkxZIHwNCj4gLQkJCSAgQ1JZUFRPX0FMR19ORUVEX0ZBTExCQUNLLA0KPiAt CS5jcmFfYmxvY2tzaXplCT0gQUVTX0JMT0NLX1NJWkUsDQo+IC0JLmNyYV9jdHhzaXplCT0gc2l6 ZW9mKHN0cnVjdCBjY3BfY3R4KSwNCj4gLQkuY3JhX3ByaW9yaXR5CT0gQ0NQX0NSQV9QUklPUklU WSwNCj4gLQkuY3JhX3R5cGUJPSAmY3J5cHRvX2FibGtjaXBoZXJfdHlwZSwNCj4gLQkuY3JhX2lu aXQJPSBjY3BfYWVzX2NyYV9pbml0LA0KPiAtCS5jcmFfZXhpdAk9IGNjcF9hZXNfY3JhX2V4aXQs DQo+IC0JLmNyYV9tb2R1bGUJPSBUSElTX01PRFVMRSwNCj4gLQkuY3JhX2FibGtjaXBoZXIJPSB7 DQo+IC0JCS5zZXRrZXkJCT0gY2NwX2Flc19zZXRrZXksDQo+IC0JCS5lbmNyeXB0CT0gY2NwX2Fl c19lbmNyeXB0LA0KPiAtCQkuZGVjcnlwdAk9IGNjcF9hZXNfZGVjcnlwdCwNCj4gLQkJLm1pbl9r ZXlzaXplCT0gQUVTX01JTl9LRVlfU0laRSwNCj4gLQkJLm1heF9rZXlzaXplCT0gQUVTX01BWF9L RVlfU0laRSwNCj4gLQl9LA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBza2NpcGhlcl9hbGcgY2Nw X2Flc19kZWZhdWx0cyA9IHsNCj4gKwkuc2V0a2V5CQkJPSBjY3BfYWVzX3NldGtleSwNCj4gKwku ZW5jcnlwdAkJPSBjY3BfYWVzX2VuY3J5cHQsDQo+ICsJLmRlY3J5cHQJCT0gY2NwX2Flc19kZWNy eXB0LA0KPiArCS5taW5fa2V5c2l6ZQkJPSBBRVNfTUlOX0tFWV9TSVpFLA0KPiArCS5tYXhfa2V5 c2l6ZQkJPSBBRVNfTUFYX0tFWV9TSVpFLA0KPiArCS5pbml0CQkJPSBjY3BfYWVzX2luaXRfdGZt LA0KPiArDQo+ICsJLmJhc2UuY3JhX2ZsYWdzCQk9IENSWVBUT19BTEdfQVNZTkMgfA0KPiArCQkJ CSAgQ1JZUFRPX0FMR19LRVJOX0RSSVZFUl9PTkxZIHwNCj4gKwkJCQkgIENSWVBUT19BTEdfTkVF RF9GQUxMQkFDSywNCj4gKwkuYmFzZS5jcmFfYmxvY2tzaXplCT0gQUVTX0JMT0NLX1NJWkUsDQo+ ICsJLmJhc2UuY3JhX2N0eHNpemUJPSBzaXplb2Yoc3RydWN0IGNjcF9jdHgpLA0KPiArCS5iYXNl LmNyYV9wcmlvcml0eQk9IENDUF9DUkFfUFJJT1JJVFksDQo+ICsJLmJhc2UuY3JhX21vZHVsZQk9 IFRISVNfTU9EVUxFLA0KPiAgIH07DQo+ICAgDQo+IC1zdGF0aWMgc3RydWN0IGNyeXB0b19hbGcg Y2NwX2Flc19yZmMzNjg2X2RlZmF1bHRzID0gew0KPiAtCS5jcmFfZmxhZ3MJPSBDUllQVE9fQUxH X1RZUEVfQUJMS0NJUEhFUiB8DQo+IC0JCQkgICBDUllQVE9fQUxHX0FTWU5DIHwNCj4gLQkJCSAg IENSWVBUT19BTEdfS0VSTl9EUklWRVJfT05MWSB8DQo+IC0JCQkgICBDUllQVE9fQUxHX05FRURf RkFMTEJBQ0ssDQo+IC0JLmNyYV9ibG9ja3NpemUJPSBDVFJfUkZDMzY4Nl9CTE9DS19TSVpFLA0K PiAtCS5jcmFfY3R4c2l6ZQk9IHNpemVvZihzdHJ1Y3QgY2NwX2N0eCksDQo+IC0JLmNyYV9wcmlv cml0eQk9IENDUF9DUkFfUFJJT1JJVFksDQo+IC0JLmNyYV90eXBlCT0gJmNyeXB0b19hYmxrY2lw aGVyX3R5cGUsDQo+IC0JLmNyYV9pbml0CT0gY2NwX2Flc19yZmMzNjg2X2NyYV9pbml0LA0KPiAt CS5jcmFfZXhpdAk9IGNjcF9hZXNfcmZjMzY4Nl9jcmFfZXhpdCwNCj4gLQkuY3JhX21vZHVsZQk9 IFRISVNfTU9EVUxFLA0KPiAtCS5jcmFfYWJsa2NpcGhlcgk9IHsNCj4gLQkJLnNldGtleQkJPSBj Y3BfYWVzX3JmYzM2ODZfc2V0a2V5LA0KPiAtCQkuZW5jcnlwdAk9IGNjcF9hZXNfcmZjMzY4Nl9l bmNyeXB0LA0KPiAtCQkuZGVjcnlwdAk9IGNjcF9hZXNfcmZjMzY4Nl9kZWNyeXB0LA0KPiAtCQku bWluX2tleXNpemUJPSBBRVNfTUlOX0tFWV9TSVpFICsgQ1RSX1JGQzM2ODZfTk9OQ0VfU0laRSwN Cj4gLQkJLm1heF9rZXlzaXplCT0gQUVTX01BWF9LRVlfU0laRSArIENUUl9SRkMzNjg2X05PTkNF X1NJWkUsDQo+IC0JfSwNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2tjaXBoZXJfYWxnIGNjcF9h ZXNfcmZjMzY4Nl9kZWZhdWx0cyA9IHsNCj4gKwkuc2V0a2V5CQkJPSBjY3BfYWVzX3JmYzM2ODZf c2V0a2V5LA0KPiArCS5lbmNyeXB0CQk9IGNjcF9hZXNfcmZjMzY4Nl9lbmNyeXB0LA0KPiArCS5k ZWNyeXB0CQk9IGNjcF9hZXNfcmZjMzY4Nl9kZWNyeXB0LA0KPiArCS5taW5fa2V5c2l6ZQkJPSBB RVNfTUlOX0tFWV9TSVpFICsgQ1RSX1JGQzM2ODZfTk9OQ0VfU0laRSwNCj4gKwkubWF4X2tleXNp emUJCT0gQUVTX01BWF9LRVlfU0laRSArIENUUl9SRkMzNjg2X05PTkNFX1NJWkUsDQo+ICsJLmlu aXQJCQk9IGNjcF9hZXNfcmZjMzY4Nl9pbml0X3RmbSwNCj4gKw0KPiArCS5iYXNlLmNyYV9mbGFn cwkJPSBDUllQVE9fQUxHX0FTWU5DIHwNCj4gKwkJCQkgIENSWVBUT19BTEdfS0VSTl9EUklWRVJf T05MWSB8DQo+ICsJCQkJICBDUllQVE9fQUxHX05FRURfRkFMTEJBQ0ssDQo+ICsJLmJhc2UuY3Jh X2Jsb2Nrc2l6ZQk9IENUUl9SRkMzNjg2X0JMT0NLX1NJWkUsDQo+ICsJLmJhc2UuY3JhX2N0eHNp emUJPSBzaXplb2Yoc3RydWN0IGNjcF9jdHgpLA0KPiArCS5iYXNlLmNyYV9wcmlvcml0eQk9IEND UF9DUkFfUFJJT1JJVFksDQo+ICsJLmJhc2UuY3JhX21vZHVsZQk9IFRISVNfTU9EVUxFLA0KPiAg IH07DQo+ICAgDQo+ICAgc3RydWN0IGNjcF9hZXNfZGVmIHsNCj4gQEAgLTI2MCw3ICsyNDUsNyBA QCBzdHJ1Y3QgY2NwX2Flc19kZWYgew0KPiAgIAljb25zdCBjaGFyICpkcml2ZXJfbmFtZTsNCj4g ICAJdW5zaWduZWQgaW50IGJsb2Nrc2l6ZTsNCj4gICAJdW5zaWduZWQgaW50IGl2c2l6ZTsNCj4g LQlzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnX2RlZmF1bHRzOw0KPiArCWNvbnN0IHN0cnVjdCBza2Np cGhlcl9hbGcgKmFsZ19kZWZhdWx0czsNCj4gICB9Ow0KPiAgIA0KPiAgIHN0YXRpYyBzdHJ1Y3Qg Y2NwX2Flc19kZWYgYWVzX2FsZ3NbXSA9IHsNCj4gQEAgLTMyMyw4ICszMDgsOCBAQCBzdGF0aWMg c3RydWN0IGNjcF9hZXNfZGVmIGFlc19hbGdzW10gPSB7DQo+ICAgc3RhdGljIGludCBjY3BfcmVn aXN0ZXJfYWVzX2FsZyhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLA0KPiAgIAkJCQljb25zdCBzdHJ1 Y3QgY2NwX2Flc19kZWYgKmRlZikNCj4gICB7DQo+IC0Jc3RydWN0IGNjcF9jcnlwdG9fYWJsa2Np cGhlcl9hbGcgKmNjcF9hbGc7DQo+IC0Jc3RydWN0IGNyeXB0b19hbGcgKmFsZzsNCj4gKwlzdHJ1 Y3QgY2NwX2NyeXB0b19za2NpcGhlcl9hbGcgKmNjcF9hbGc7DQo+ICsJc3RydWN0IHNrY2lwaGVy X2FsZyAqYWxnOw0KPiAgIAlpbnQgcmV0Ow0KPiAgIA0KPiAgIAljY3BfYWxnID0ga3phbGxvYyhz aXplb2YoKmNjcF9hbGcpLCBHRlBfS0VSTkVMKTsNCj4gQEAgLTMzOCwxNiArMzIzLDE2IEBAIHN0 YXRpYyBpbnQgY2NwX3JlZ2lzdGVyX2Flc19hbGcoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwNCj4g ICAJLyogQ29weSB0aGUgZGVmYXVsdHMgYW5kIG92ZXJyaWRlIGFzIG5lY2Vzc2FyeSAqLw0KPiAg IAlhbGcgPSAmY2NwX2FsZy0+YWxnOw0KPiAgIAkqYWxnID0gKmRlZi0+YWxnX2RlZmF1bHRzOw0K PiAtCXNucHJpbnRmKGFsZy0+Y3JhX25hbWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIsIGRl Zi0+bmFtZSk7DQo+IC0Jc25wcmludGYoYWxnLT5jcmFfZHJpdmVyX25hbWUsIENSWVBUT19NQVhf QUxHX05BTUUsICIlcyIsDQo+ICsJc25wcmludGYoYWxnLT5iYXNlLmNyYV9uYW1lLCBDUllQVE9f TUFYX0FMR19OQU1FLCAiJXMiLCBkZWYtPm5hbWUpOw0KPiArCXNucHJpbnRmKGFsZy0+YmFzZS5j cmFfZHJpdmVyX25hbWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIsDQo+ICAgCQkgZGVmLT5k cml2ZXJfbmFtZSk7DQo+IC0JYWxnLT5jcmFfYmxvY2tzaXplID0gZGVmLT5ibG9ja3NpemU7DQo+ IC0JYWxnLT5jcmFfYWJsa2NpcGhlci5pdnNpemUgPSBkZWYtPml2c2l6ZTsNCj4gKwlhbGctPmJh c2UuY3JhX2Jsb2Nrc2l6ZSA9IGRlZi0+YmxvY2tzaXplOw0KPiArCWFsZy0+aXZzaXplID0gZGVm LT5pdnNpemU7DQo+ICAgDQo+IC0JcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZyhhbGcpOw0KPiAr CXJldCA9IGNyeXB0b19yZWdpc3Rlcl9za2NpcGhlcihhbGcpOw0KPiAgIAlpZiAocmV0KSB7DQo+ IC0JCXByX2VycigiJXMgYWJsa2NpcGhlciBhbGdvcml0aG0gcmVnaXN0cmF0aW9uIGVycm9yICgl ZClcbiIsDQo+IC0JCSAgICAgICBhbGctPmNyYV9uYW1lLCByZXQpOw0KPiArCQlwcl9lcnIoIiVz IHNrY2lwaGVyIGFsZ29yaXRobSByZWdpc3RyYXRpb24gZXJyb3IgKCVkKVxuIiwNCj4gKwkJICAg ICAgIGFsZy0+YmFzZS5jcmFfbmFtZSwgcmV0KTsNCj4gICAJCWtmcmVlKGNjcF9hbGcpOw0KPiAg IAkJcmV0dXJuIHJldDsNCj4gICAJfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vY2Nw L2NjcC1jcnlwdG8tZGVzMy5jIGIvZHJpdmVycy9jcnlwdG8vY2NwL2NjcC1jcnlwdG8tZGVzMy5j DQo+IGluZGV4IGQyYzQ5YjJmMDMyMy4uOWMxMjlkZWZkYjUwIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1kZXMzLmMNCj4gKysrIGIvZHJpdmVycy9jcnlwdG8v Y2NwL2NjcC1jcnlwdG8tZGVzMy5jDQo+IEBAIC0yMCwyOCArMjAsMjcgQEANCj4gICANCj4gICBz dGF0aWMgaW50IGNjcF9kZXMzX2NvbXBsZXRlKHN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAq YXN5bmNfcmVxLCBpbnQgcmV0KQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0 ICpyZXEgPSBhYmxrY2lwaGVyX3JlcXVlc3RfY2FzdChhc3luY19yZXEpOw0KPiArCXN0cnVjdCBz a2NpcGhlcl9yZXF1ZXN0ICpyZXEgPSBza2NpcGhlcl9yZXF1ZXN0X2Nhc3QoYXN5bmNfcmVxKTsN Cj4gICAJc3RydWN0IGNjcF9jdHggKmN0eCA9IGNyeXB0b190Zm1fY3R4KHJlcS0+YmFzZS50Zm0p Ow0KPiAtCXN0cnVjdCBjY3BfZGVzM19yZXFfY3R4ICpyY3R4ID0gYWJsa2NpcGhlcl9yZXF1ZXN0 X2N0eChyZXEpOw0KPiArCXN0cnVjdCBjY3BfZGVzM19yZXFfY3R4ICpyY3R4ID0gc2tjaXBoZXJf cmVxdWVzdF9jdHgocmVxKTsNCj4gICANCj4gICAJaWYgKHJldCkNCj4gICAJCXJldHVybiByZXQ7 DQo+ICAgDQo+ICAgCWlmIChjdHgtPnUuZGVzMy5tb2RlICE9IENDUF9ERVMzX01PREVfRUNCKQ0K PiAtCQltZW1jcHkocmVxLT5pbmZvLCByY3R4LT5pdiwgREVTM19FREVfQkxPQ0tfU0laRSk7DQo+ ICsJCW1lbWNweShyZXEtPml2LCByY3R4LT5pdiwgREVTM19FREVfQkxPQ0tfU0laRSk7DQo+ICAg DQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgY2NwX2RlczNfc2V0 a2V5KHN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqdGZtLCBjb25zdCB1OCAqa2V5LA0KPiArc3Rh dGljIGludCBjY3BfZGVzM19zZXRrZXkoc3RydWN0IGNyeXB0b19za2NpcGhlciAqdGZtLCBjb25z dCB1OCAqa2V5LA0KPiAgIAkJdW5zaWduZWQgaW50IGtleV9sZW4pDQo+ICAgew0KPiAtCXN0cnVj dCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eChjcnlwdG9fYWJsa2NpcGhlcl90Zm0odGZt KSk7DQo+IC0Jc3RydWN0IGNjcF9jcnlwdG9fYWJsa2NpcGhlcl9hbGcgKmFsZyA9DQo+IC0JCWNj cF9jcnlwdG9fYWJsa2NpcGhlcl9hbGcoY3J5cHRvX2FibGtjaXBoZXJfdGZtKHRmbSkpOw0KPiAr CXN0cnVjdCBjY3BfY3J5cHRvX3NrY2lwaGVyX2FsZyAqYWxnID0gY2NwX2NyeXB0b19za2NpcGhl cl9hbGcodGZtKTsNCj4gKwlzdHJ1Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0 eCh0Zm0pOw0KPiAgIAlpbnQgZXJyOw0KPiAgIA0KPiAtCWVyciA9IHZlcmlmeV9hYmxrY2lwaGVy X2RlczNfa2V5KHRmbSwga2V5KTsNCj4gKwllcnIgPSB2ZXJpZnlfc2tjaXBoZXJfZGVzM19rZXko dGZtLCBrZXkpOw0KPiAgIAlpZiAoZXJyKQ0KPiAgIAkJcmV0dXJuIGVycjsNCj4gICANCj4gQEAg LTU4LDEwICs1NywxMSBAQCBzdGF0aWMgaW50IGNjcF9kZXMzX3NldGtleShzdHJ1Y3QgY3J5cHRv X2FibGtjaXBoZXIgKnRmbSwgY29uc3QgdTggKmtleSwNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0K PiAgIA0KPiAtc3RhdGljIGludCBjY3BfZGVzM19jcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1 ZXN0ICpyZXEsIGJvb2wgZW5jcnlwdCkNCj4gK3N0YXRpYyBpbnQgY2NwX2RlczNfY3J5cHQoc3Ry dWN0IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSwgYm9vbCBlbmNyeXB0KQ0KPiAgIHsNCj4gLQlzdHJ1 Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgocmVxLT5iYXNlLnRmbSk7DQo+IC0Jc3Ry dWN0IGNjcF9kZXMzX3JlcV9jdHggKnJjdHggPSBhYmxrY2lwaGVyX3JlcXVlc3RfY3R4KHJlcSk7 DQo+ICsJc3RydWN0IGNyeXB0b19za2NpcGhlciAqdGZtID0gY3J5cHRvX3NrY2lwaGVyX3JlcXRm bShyZXEpOw0KPiArCXN0cnVjdCBjY3BfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRm bSk7DQo+ICsJc3RydWN0IGNjcF9kZXMzX3JlcV9jdHggKnJjdHggPSBza2NpcGhlcl9yZXF1ZXN0 X2N0eChyZXEpOw0KPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKml2X3NnID0gTlVMTDsNCj4gICAJ dW5zaWduZWQgaW50IGl2X2xlbiA9IDA7DQo+ICAgCWludCByZXQ7DQo+IEBAIC03MSwxNCArNzEs MTQgQEAgc3RhdGljIGludCBjY3BfZGVzM19jcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0 ICpyZXEsIGJvb2wgZW5jcnlwdCkNCj4gICANCj4gICAJaWYgKCgoY3R4LT51LmRlczMubW9kZSA9 PSBDQ1BfREVTM19NT0RFX0VDQikgfHwNCj4gICAJICAgICAoY3R4LT51LmRlczMubW9kZSA9PSBD Q1BfREVTM19NT0RFX0NCQykpICYmDQo+IC0JICAgIChyZXEtPm5ieXRlcyAmIChERVMzX0VERV9C TE9DS19TSVpFIC0gMSkpKQ0KPiArCSAgICAocmVxLT5jcnlwdGxlbiAmIChERVMzX0VERV9CTE9D S19TSVpFIC0gMSkpKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgDQo+ICAgCWlmIChjdHgt PnUuZGVzMy5tb2RlICE9IENDUF9ERVMzX01PREVfRUNCKSB7DQo+IC0JCWlmICghcmVxLT5pbmZv KQ0KPiArCQlpZiAoIXJlcS0+aXYpDQo+ICAgCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgDQo+IC0J CW1lbWNweShyY3R4LT5pdiwgcmVxLT5pbmZvLCBERVMzX0VERV9CTE9DS19TSVpFKTsNCj4gKwkJ bWVtY3B5KHJjdHgtPml2LCByZXEtPml2LCBERVMzX0VERV9CTE9DS19TSVpFKTsNCj4gICAJCWl2 X3NnID0gJnJjdHgtPml2X3NnOw0KPiAgIAkJaXZfbGVuID0gREVTM19FREVfQkxPQ0tfU0laRTsN Cj4gICAJCXNnX2luaXRfb25lKGl2X3NnLCByY3R4LT5pdiwgaXZfbGVuKTsNCj4gQEAgLTk3LDcg Kzk3LDcgQEAgc3RhdGljIGludCBjY3BfZGVzM19jcnlwdChzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1 ZXN0ICpyZXEsIGJvb2wgZW5jcnlwdCkNCj4gICAJcmN0eC0+Y21kLnUuZGVzMy5pdiA9IGl2X3Nn Ow0KPiAgIAlyY3R4LT5jbWQudS5kZXMzLml2X2xlbiA9IGl2X2xlbjsNCj4gICAJcmN0eC0+Y21k LnUuZGVzMy5zcmMgPSByZXEtPnNyYzsNCj4gLQlyY3R4LT5jbWQudS5kZXMzLnNyY19sZW4gPSBy ZXEtPm5ieXRlczsNCj4gKwlyY3R4LT5jbWQudS5kZXMzLnNyY19sZW4gPSByZXEtPmNyeXB0bGVu Ow0KPiAgIAlyY3R4LT5jbWQudS5kZXMzLmRzdCA9IHJlcS0+ZHN0Ow0KPiAgIA0KPiAgIAlyZXQg PSBjY3BfY3J5cHRvX2VucXVldWVfcmVxdWVzdCgmcmVxLT5iYXNlLCAmcmN0eC0+Y21kKTsNCj4g QEAgLTEwNSw1MSArMTA1LDQzIEBAIHN0YXRpYyBpbnQgY2NwX2RlczNfY3J5cHQoc3RydWN0IGFi bGtjaXBoZXJfcmVxdWVzdCAqcmVxLCBib29sIGVuY3J5cHQpDQo+ICAgCXJldHVybiByZXQ7DQo+ ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfZGVzM19lbmNyeXB0KHN0cnVjdCBhYmxrY2lw aGVyX3JlcXVlc3QgKnJlcSkNCj4gK3N0YXRpYyBpbnQgY2NwX2RlczNfZW5jcnlwdChzdHJ1Y3Qg c2tjaXBoZXJfcmVxdWVzdCAqcmVxKQ0KPiAgIHsNCj4gICAJcmV0dXJuIGNjcF9kZXMzX2NyeXB0 KHJlcSwgdHJ1ZSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBjY3BfZGVzM19kZWNyeXB0 KHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcSkNCj4gK3N0YXRpYyBpbnQgY2NwX2RlczNf ZGVjcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQ0KPiAgIHsNCj4gICAJcmV0dXJu IGNjcF9kZXMzX2NyeXB0KHJlcSwgZmFsc2UpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQg Y2NwX2RlczNfY3JhX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkNCj4gK3N0YXRpYyBpbnQg Y2NwX2RlczNfaW5pdF90Zm0oc3RydWN0IGNyeXB0b19za2NpcGhlciAqdGZtKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgY2NwX2N0eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgodGZtKTsNCj4gKwlzdHJ1Y3Qg Y2NwX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0eCh0Zm0pOw0KPiAgIA0KPiAgIAljdHgt PmNvbXBsZXRlID0gY2NwX2RlczNfY29tcGxldGU7DQo+ICAgCWN0eC0+dS5kZXMzLmtleV9sZW4g PSAwOw0KPiAgIA0KPiAtCXRmbS0+Y3J0X2FibGtjaXBoZXIucmVxc2l6ZSA9IHNpemVvZihzdHJ1 Y3QgY2NwX2RlczNfcmVxX2N0eCk7DQo+ICsJY3J5cHRvX3NrY2lwaGVyX3NldF9yZXFzaXplKHRm bSwgc2l6ZW9mKHN0cnVjdCBjY3BfZGVzM19yZXFfY3R4KSk7DQo+ICAgDQo+ICAgCXJldHVybiAw Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGNjcF9kZXMzX2NyYV9leGl0KHN0cnVjdCBj cnlwdG9fdGZtICp0Zm0pDQo+IC17DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3QgY3J5cHRv X2FsZyBjY3BfZGVzM19kZWZhdWx0cyA9IHsNCj4gLQkuY3JhX2ZsYWdzCT0gQ1JZUFRPX0FMR19U WVBFX0FCTEtDSVBIRVIgfA0KPiAtCQlDUllQVE9fQUxHX0FTWU5DIHwNCj4gLQkJQ1JZUFRPX0FM R19LRVJOX0RSSVZFUl9PTkxZIHwNCj4gLQkJQ1JZUFRPX0FMR19ORUVEX0ZBTExCQUNLLA0KPiAt CS5jcmFfYmxvY2tzaXplCT0gREVTM19FREVfQkxPQ0tfU0laRSwNCj4gLQkuY3JhX2N0eHNpemUJ PSBzaXplb2Yoc3RydWN0IGNjcF9jdHgpLA0KPiAtCS5jcmFfcHJpb3JpdHkJPSBDQ1BfQ1JBX1BS SU9SSVRZLA0KPiAtCS5jcmFfdHlwZQk9ICZjcnlwdG9fYWJsa2NpcGhlcl90eXBlLA0KPiAtCS5j cmFfaW5pdAk9IGNjcF9kZXMzX2NyYV9pbml0LA0KPiAtCS5jcmFfZXhpdAk9IGNjcF9kZXMzX2Ny YV9leGl0LA0KPiAtCS5jcmFfbW9kdWxlCT0gVEhJU19NT0RVTEUsDQo+IC0JLmNyYV9hYmxrY2lw aGVyCT0gew0KPiAtCQkuc2V0a2V5CQk9IGNjcF9kZXMzX3NldGtleSwNCj4gLQkJLmVuY3J5cHQJ PSBjY3BfZGVzM19lbmNyeXB0LA0KPiAtCQkuZGVjcnlwdAk9IGNjcF9kZXMzX2RlY3J5cHQsDQo+ IC0JCS5taW5fa2V5c2l6ZQk9IERFUzNfRURFX0tFWV9TSVpFLA0KPiAtCQkubWF4X2tleXNpemUJ PSBERVMzX0VERV9LRVlfU0laRSwNCj4gLQl9LA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBza2Np cGhlcl9hbGcgY2NwX2RlczNfZGVmYXVsdHMgPSB7DQo+ICsJLnNldGtleQkJCT0gY2NwX2RlczNf c2V0a2V5LA0KPiArCS5lbmNyeXB0CQk9IGNjcF9kZXMzX2VuY3J5cHQsDQo+ICsJLmRlY3J5cHQJ CT0gY2NwX2RlczNfZGVjcnlwdCwNCj4gKwkubWluX2tleXNpemUJCT0gREVTM19FREVfS0VZX1NJ WkUsDQo+ICsJLm1heF9rZXlzaXplCQk9IERFUzNfRURFX0tFWV9TSVpFLA0KPiArCS5pbml0CQkJ PSBjY3BfZGVzM19pbml0X3RmbSwNCj4gKw0KPiArCS5iYXNlLmNyYV9mbGFncwkJPSBDUllQVE9f QUxHX0FTWU5DIHwNCj4gKwkJCQkgIENSWVBUT19BTEdfS0VSTl9EUklWRVJfT05MWSB8DQo+ICsJ CQkJICBDUllQVE9fQUxHX05FRURfRkFMTEJBQ0ssDQo+ICsJLmJhc2UuY3JhX2Jsb2Nrc2l6ZQk9 IERFUzNfRURFX0JMT0NLX1NJWkUsDQo+ICsJLmJhc2UuY3JhX2N0eHNpemUJPSBzaXplb2Yoc3Ry dWN0IGNjcF9jdHgpLA0KPiArCS5iYXNlLmNyYV9wcmlvcml0eQk9IENDUF9DUkFfUFJJT1JJVFks DQo+ICsJLmJhc2UuY3JhX21vZHVsZQk9IFRISVNfTU9EVUxFLA0KPiAgIH07DQo+ICAgDQo+ICAg c3RydWN0IGNjcF9kZXMzX2RlZiB7DQo+IEBAIC0xNTksMTAgKzE1MSwxMCBAQCBzdHJ1Y3QgY2Nw X2RlczNfZGVmIHsNCj4gICAJY29uc3QgY2hhciAqZHJpdmVyX25hbWU7DQo+ICAgCXVuc2lnbmVk IGludCBibG9ja3NpemU7DQo+ICAgCXVuc2lnbmVkIGludCBpdnNpemU7DQo+IC0Jc3RydWN0IGNy eXB0b19hbGcgKmFsZ19kZWZhdWx0czsNCj4gKwljb25zdCBzdHJ1Y3Qgc2tjaXBoZXJfYWxnICph bGdfZGVmYXVsdHM7DQo+ICAgfTsNCj4gICANCj4gLXN0YXRpYyBzdHJ1Y3QgY2NwX2RlczNfZGVm IGRlczNfYWxnc1tdID0gew0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjY3BfZGVzM19kZWYgZGVz M19hbGdzW10gPSB7DQo+ICAgCXsNCj4gICAJCS5tb2RlCQk9IENDUF9ERVMzX01PREVfRUNCLA0K PiAgIAkJLnZlcnNpb24JPSBDQ1BfVkVSU0lPTig1LCAwKSwNCj4gQEAgLTE4Niw4ICsxNzgsOCBA QCBzdGF0aWMgc3RydWN0IGNjcF9kZXMzX2RlZiBkZXMzX2FsZ3NbXSA9IHsNCj4gICBzdGF0aWMg aW50IGNjcF9yZWdpc3Rlcl9kZXMzX2FsZyhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLA0KPiAgIAkJ CQkgY29uc3Qgc3RydWN0IGNjcF9kZXMzX2RlZiAqZGVmKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgY2Nw X2NyeXB0b19hYmxrY2lwaGVyX2FsZyAqY2NwX2FsZzsNCj4gLQlzdHJ1Y3QgY3J5cHRvX2FsZyAq YWxnOw0KPiArCXN0cnVjdCBjY3BfY3J5cHRvX3NrY2lwaGVyX2FsZyAqY2NwX2FsZzsNCj4gKwlz dHJ1Y3Qgc2tjaXBoZXJfYWxnICphbGc7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCWNjcF9h bGcgPSBremFsbG9jKHNpemVvZigqY2NwX2FsZyksIEdGUF9LRVJORUwpOw0KPiBAQCAtMjAxLDE2 ICsxOTMsMTYgQEAgc3RhdGljIGludCBjY3BfcmVnaXN0ZXJfZGVzM19hbGcoc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCwNCj4gICAJLyogQ29weSB0aGUgZGVmYXVsdHMgYW5kIG92ZXJyaWRlIGFzIG5l Y2Vzc2FyeSAqLw0KPiAgIAlhbGcgPSAmY2NwX2FsZy0+YWxnOw0KPiAgIAkqYWxnID0gKmRlZi0+ YWxnX2RlZmF1bHRzOw0KPiAtCXNucHJpbnRmKGFsZy0+Y3JhX25hbWUsIENSWVBUT19NQVhfQUxH X05BTUUsICIlcyIsIGRlZi0+bmFtZSk7DQo+IC0Jc25wcmludGYoYWxnLT5jcmFfZHJpdmVyX25h bWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIsDQo+ICsJc25wcmludGYoYWxnLT5iYXNlLmNy YV9uYW1lLCBDUllQVE9fTUFYX0FMR19OQU1FLCAiJXMiLCBkZWYtPm5hbWUpOw0KPiArCXNucHJp bnRmKGFsZy0+YmFzZS5jcmFfZHJpdmVyX25hbWUsIENSWVBUT19NQVhfQUxHX05BTUUsICIlcyIs DQo+ICAgCQkJZGVmLT5kcml2ZXJfbmFtZSk7DQo+IC0JYWxnLT5jcmFfYmxvY2tzaXplID0gZGVm LT5ibG9ja3NpemU7DQo+IC0JYWxnLT5jcmFfYWJsa2NpcGhlci5pdnNpemUgPSBkZWYtPml2c2l6 ZTsNCj4gKwlhbGctPmJhc2UuY3JhX2Jsb2Nrc2l6ZSA9IGRlZi0+YmxvY2tzaXplOw0KPiArCWFs Zy0+aXZzaXplID0gZGVmLT5pdnNpemU7DQo+ICAgDQo+IC0JcmV0ID0gY3J5cHRvX3JlZ2lzdGVy X2FsZyhhbGcpOw0KPiArCXJldCA9IGNyeXB0b19yZWdpc3Rlcl9za2NpcGhlcihhbGcpOw0KPiAg IAlpZiAocmV0KSB7DQo+IC0JCXByX2VycigiJXMgYWJsa2NpcGhlciBhbGdvcml0aG0gcmVnaXN0 cmF0aW9uIGVycm9yICglZClcbiIsDQo+IC0JCQkJYWxnLT5jcmFfbmFtZSwgcmV0KTsNCj4gKwkJ cHJfZXJyKCIlcyBza2NpcGhlciBhbGdvcml0aG0gcmVnaXN0cmF0aW9uIGVycm9yICglZClcbiIs DQo+ICsJCQkJYWxnLT5iYXNlLmNyYV9uYW1lLCByZXQpOw0KPiAgIAkJa2ZyZWUoY2NwX2FsZyk7 DQo+ICAgCQlyZXR1cm4gcmV0Ow0KPiAgIAl9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0 by9jY3AvY2NwLWNyeXB0by1tYWluLmMgYi9kcml2ZXJzL2NyeXB0by9jY3AvY2NwLWNyeXB0by1t YWluLmMNCj4gaW5kZXggOGVlNGNiNDVhM2YzLi44ODI3NWI0ODY3ZWEgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLW1haW4uYw0KPiArKysgYi9kcml2ZXJzL2Ny eXB0by9jY3AvY2NwLWNyeXB0by1tYWluLmMNCj4gQEAgLTQxLDcgKzQxLDcgQEAgTU9EVUxFX1BB Uk1fREVTQyhyc2FfZGlzYWJsZSwgIkRpc2FibGUgdXNlIG9mIFJTQSAtIGFueSBub24temVybyB2 YWx1ZSIpOw0KPiAgIA0KPiAgIC8qIExpc3QgaGVhZHMgZm9yIHRoZSBzdXBwb3J0ZWQgYWxnb3Jp dGhtcyAqLw0KPiAgIHN0YXRpYyBMSVNUX0hFQUQoaGFzaF9hbGdzKTsNCj4gLXN0YXRpYyBMSVNU X0hFQUQoY2lwaGVyX2FsZ3MpOw0KPiArc3RhdGljIExJU1RfSEVBRChza2NpcGhlcl9hbGdzKTsN Cj4gICBzdGF0aWMgTElTVF9IRUFEKGFlYWRfYWxncyk7DQo+ICAgc3RhdGljIExJU1RfSEVBRChh a2NpcGhlcl9hbGdzKTsNCj4gICANCj4gQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgaW50IGNj cF9yZWdpc3Rlcl9hbGdzKHZvaWQpDQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCWlmICghYWVz X2Rpc2FibGUpIHsNCj4gLQkJcmV0ID0gY2NwX3JlZ2lzdGVyX2Flc19hbGdzKCZjaXBoZXJfYWxn cyk7DQo+ICsJCXJldCA9IGNjcF9yZWdpc3Rlcl9hZXNfYWxncygmc2tjaXBoZXJfYWxncyk7DQo+ ICAgCQlpZiAocmV0KQ0KPiAgIAkJCXJldHVybiByZXQ7DQo+ICAgDQo+IEBAIC0zMzgsNyArMzM4 LDcgQEAgc3RhdGljIGludCBjY3BfcmVnaXN0ZXJfYWxncyh2b2lkKQ0KPiAgIAkJaWYgKHJldCkN Cj4gICAJCQlyZXR1cm4gcmV0Ow0KPiAgIA0KPiAtCQlyZXQgPSBjY3BfcmVnaXN0ZXJfYWVzX3h0 c19hbGdzKCZjaXBoZXJfYWxncyk7DQo+ICsJCXJldCA9IGNjcF9yZWdpc3Rlcl9hZXNfeHRzX2Fs Z3MoJnNrY2lwaGVyX2FsZ3MpOw0KPiAgIAkJaWYgKHJldCkNCj4gICAJCQlyZXR1cm4gcmV0Ow0K PiAgIA0KPiBAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBpbnQgY2NwX3JlZ2lzdGVyX2FsZ3Mo dm9pZCkNCj4gICAJfQ0KPiAgIA0KPiAgIAlpZiAoIWRlczNfZGlzYWJsZSkgew0KPiAtCQlyZXQg PSBjY3BfcmVnaXN0ZXJfZGVzM19hbGdzKCZjaXBoZXJfYWxncyk7DQo+ICsJCXJldCA9IGNjcF9y ZWdpc3Rlcl9kZXMzX2FsZ3MoJnNrY2lwaGVyX2FsZ3MpOw0KPiAgIAkJaWYgKHJldCkNCj4gICAJ CQlyZXR1cm4gcmV0Ow0KPiAgIAl9DQo+IEBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCBj Y3BfcmVnaXN0ZXJfYWxncyh2b2lkKQ0KPiAgIHN0YXRpYyB2b2lkIGNjcF91bnJlZ2lzdGVyX2Fs Z3Modm9pZCkNCj4gICB7DQo+ICAgCXN0cnVjdCBjY3BfY3J5cHRvX2FoYXNoX2FsZyAqYWhhc2hf YWxnLCAqYWhhc2hfdG1wOw0KPiAtCXN0cnVjdCBjY3BfY3J5cHRvX2FibGtjaXBoZXJfYWxnICph YmxrX2FsZywgKmFibGtfdG1wOw0KPiArCXN0cnVjdCBjY3BfY3J5cHRvX3NrY2lwaGVyX2FsZyAq YWJsa19hbGcsICphYmxrX3RtcDsNCj4gICAJc3RydWN0IGNjcF9jcnlwdG9fYWVhZCAqYWVhZF9h bGcsICphZWFkX3RtcDsNCj4gICAJc3RydWN0IGNjcF9jcnlwdG9fYWtjaXBoZXJfYWxnICpha2Nf YWxnLCAqYWtjX3RtcDsNCj4gICANCj4gQEAgLTM4MSw4ICszODEsOCBAQCBzdGF0aWMgdm9pZCBj Y3BfdW5yZWdpc3Rlcl9hbGdzKHZvaWQpDQo+ICAgCQlrZnJlZShhaGFzaF9hbGcpOw0KPiAgIAl9 DQo+ICAgDQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFibGtfYWxnLCBhYmxrX3RtcCwg JmNpcGhlcl9hbGdzLCBlbnRyeSkgew0KPiAtCQljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmFibGtf YWxnLT5hbGcpOw0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShhYmxrX2FsZywgYWJsa190 bXAsICZza2NpcGhlcl9hbGdzLCBlbnRyeSkgew0KPiArCQljcnlwdG9fdW5yZWdpc3Rlcl9za2Np cGhlcigmYWJsa19hbGctPmFsZyk7DQo+ICAgCQlsaXN0X2RlbCgmYWJsa19hbGctPmVudHJ5KTsN Cj4gICAJCWtmcmVlKGFibGtfYWxnKTsNCj4gICAJfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9j cnlwdG8vY2NwL2NjcC1jcnlwdG8uaCBiL2RyaXZlcnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLmgN Cj4gaW5kZXggOTAxNWI1ZGE2YmEzLi45MGEwMDllNmI1YzEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvY3J5cHRvL2NjcC9jY3AtY3J5cHRvLmgNCj4gKysrIGIvZHJpdmVycy9jcnlwdG8vY2NwL2Nj cC1jcnlwdG8uaA0KPiBAQCAtMjEsNiArMjEsNyBAQA0KPiAgICNpbmNsdWRlIDxjcnlwdG8vaGFz aC5oPg0KPiAgICNpbmNsdWRlIDxjcnlwdG8vc2hhLmg+DQo+ICAgI2luY2x1ZGUgPGNyeXB0by9h a2NpcGhlci5oPg0KPiArI2luY2x1ZGUgPGNyeXB0by9za2NpcGhlci5oPg0KPiAgICNpbmNsdWRl IDxjcnlwdG8vaW50ZXJuYWwvcnNhLmg+DQo+ICAgDQo+ICAgLyogV2Ugd2FudCB0aGUgbW9kdWxl IG5hbWUgaW4gZnJvbnQgb2Ygb3VyIG1lc3NhZ2VzICovDQo+IEBAIC0zMSwxMiArMzIsMTIgQEAN Cj4gICANCj4gICAjZGVmaW5lIENDUF9DUkFfUFJJT1JJVFkJMzAwDQo+ICAgDQo+IC1zdHJ1Y3Qg Y2NwX2NyeXB0b19hYmxrY2lwaGVyX2FsZyB7DQo+ICtzdHJ1Y3QgY2NwX2NyeXB0b19za2NpcGhl cl9hbGcgew0KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5Ow0KPiAgIA0KPiAgIAl1MzIgbW9k ZTsNCj4gICANCj4gLQlzdHJ1Y3QgY3J5cHRvX2FsZyBhbGc7DQo+ICsJc3RydWN0IHNrY2lwaGVy X2FsZyBhbGc7DQo+ICAgfTsNCj4gICANCj4gICBzdHJ1Y3QgY2NwX2NyeXB0b19hZWFkIHsNCj4g QEAgLTY2LDEyICs2NywxMiBAQCBzdHJ1Y3QgY2NwX2NyeXB0b19ha2NpcGhlcl9hbGcgew0KPiAg IAlzdHJ1Y3QgYWtjaXBoZXJfYWxnIGFsZzsNCj4gICB9Ow0KPiAgIA0KPiAtc3RhdGljIGlubGlu ZSBzdHJ1Y3QgY2NwX2NyeXB0b19hYmxrY2lwaGVyX2FsZyAqDQo+IC0JY2NwX2NyeXB0b19hYmxr Y2lwaGVyX2FsZyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQ0KPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgY2NwX2NyeXB0b19za2NpcGhlcl9hbGcgKg0KPiArCWNjcF9jcnlwdG9fc2tjaXBoZXJfYWxn KHN0cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSkNCj4gICB7DQo+IC0Jc3RydWN0IGNyeXB0b19h bGcgKmFsZyA9IHRmbS0+X19jcnRfYWxnOw0KPiArCXN0cnVjdCBza2NpcGhlcl9hbGcgKmFsZyA9 IGNyeXB0b19za2NpcGhlcl9hbGcodGZtKTsNCj4gICANCj4gLQlyZXR1cm4gY29udGFpbmVyX29m KGFsZywgc3RydWN0IGNjcF9jcnlwdG9fYWJsa2NpcGhlcl9hbGcsIGFsZyk7DQo+ICsJcmV0dXJu IGNvbnRhaW5lcl9vZihhbGcsIHN0cnVjdCBjY3BfY3J5cHRvX3NrY2lwaGVyX2FsZywgYWxnKTsN Cj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY2NwX2NyeXB0b19haGFzaF9h bGcgKg0KPiANCg0K