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=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 EC306C43441 for ; Wed, 28 Nov 2018 23:44:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7659F2081B for ; Wed, 28 Nov 2018 23:44:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microsoft.com header.i=@microsoft.com header.b="WNRE9kQF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7659F2081B Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=microsoft.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727785AbeK2KsG (ORCPT ); Thu, 29 Nov 2018 05:48:06 -0500 Received: from mail-eopbgr770105.outbound.protection.outlook.com ([40.107.77.105]:6450 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726995AbeK2Krz (ORCPT ); Thu, 29 Nov 2018 05:47:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JKzhOwY9+luXnraV6IyF0aZVZhmypXipz+5g/7eccMw=; b=WNRE9kQF38OyghEaNdpYk4wyh4oF6QA+s+0qeJv8aDeBpBEZgJi2/WLTRPGojxlDYAgDv5hnnl3ZqBJHlP5b9XLyD9zDiEZA1tQZMStBYYFw0rciso/Kwj8tFJW89rMMAnyChTwRv1Lf06zzFBtE/0Fei5ZhE964zZG0FqhyP7c= Received: from DM5PR21MB0185.namprd21.prod.outlook.com (10.173.173.136) by DM5PR21MB0700.namprd21.prod.outlook.com (10.175.112.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.4; Wed, 28 Nov 2018 23:43:27 +0000 Received: from DM5PR21MB0185.namprd21.prod.outlook.com ([fe80::9df9:3bfc:6d0:d47a]) by DM5PR21MB0185.namprd21.prod.outlook.com ([fe80::9df9:3bfc:6d0:d47a%16]) with mapi id 15.20.1404.008; Wed, 28 Nov 2018 23:43:26 +0000 From: Long Li To: Pavel Shilovsky CC: Steve French , linux-cifs , samba-technical , Kernel Mailing List Subject: RE: [Patch v4 1/3] CIFS: Add support for direct I/O read Thread-Topic: [Patch v4 1/3] CIFS: Add support for direct I/O read Thread-Index: AQHUcWcRO263Q7OJD0WjYA1KGkmHmaVTMuOAgBLQb9A= Date: Wed, 28 Nov 2018 23:43:26 +0000 Message-ID: References: <20181031221311.2596-1-longli@linuxonhyperv.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [24.22.241.162] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR21MB0700;6:Qk6fZURwmsPJ9vkphxZGC3OqcjrAYCwYBMgtbb8adiW3/AqXCT4rdnH2evLotYGMn/Mety1ByuRYduEUNBHd6MrQATMDyKZCQvN5jPqvFe1UNPwrEw75Ut6DfEfrgrSzd35PMQboujTfwzY3oK2sWjPwdNEL6mf3CxajJwKDs1/980w/o27zOYyEMigA8SqqDjo9lGurQ+6YrtvgjU5AScw84tb3avoH9TG6/n3PeXtK5WWiSqc8MYhp0QpwKHEG6otcleYmqBi31llKMDEEpO6UUPetR7dB0SLjoQkpKMtHTpluLzoxPMe5NYuhiA4OCaug15lfx1O4tXEEv8UyJPJGEx6vFq+H4r/YsErVUig0sR0u1H5DvAmPWckSo5Nq9LIPHDzfYAz37UGd9NtGVsvUki+b8ipCLbPfymd2tnFNGx32JoZxWr8ooULJ986ev/DKclsSvmVmAm5WMmV7xA==;5:NCWULJ//GR11wXnXr9x/toIy2aYmwsQVkDshWpHFDGY0lHZKrnWo/VRzQ6sfmwCgLy0I8dwwpDOjXuXl18CI0jkrrmv6DyozGvK1BaXa2YBoaDoo0jib0ZO9eaCj2aXlek77QuwFcohli5bYVzFZhlh9vxeqdpR03SzWb3/a2uE=;7:VN3m6Y6Cv2aegcYCM6ee/FX+zhtFobsUY392iU8fuZiuCx4SOS5tpOeonGTrC5Y5U3qrH3trkap8pbcmCrB3kgzyGCF8j6a1oulM9w3dCyXM+1b4OSL4UsQoDxfNu+1mWp8ZylkgPjyOCuEr8W2D9A== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: a6cbbdaa-32fd-4098-33ee-08d6558b4b2a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:DM5PR21MB0700; x-ms-traffictypediagnostic: DM5PR21MB0700: authentication-results: spf=none (sender IP is ) smtp.mailfrom=longli@microsoft.com; x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(8220035)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231449)(999002)(944501444)(2018427008)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095);SRVR:DM5PR21MB0700;BCL:0;PCL:0;RULEID:;SRVR:DM5PR21MB0700; x-forefront-prvs: 0870212862 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(366004)(39860400002)(376002)(136003)(396003)(69234005)(199004)(189003)(1411001)(10090500001)(105586002)(33656002)(97736004)(106356001)(25786009)(102836004)(81156014)(7696005)(8676002)(81166006)(6506007)(76176011)(99286004)(486006)(478600001)(8936002)(10290500003)(14444005)(446003)(54906003)(476003)(68736007)(11346002)(26005)(6436002)(186003)(55016002)(316002)(14454004)(2906002)(229853002)(256004)(66066001)(4326008)(305945005)(6246003)(39060400002)(9686003)(53946003)(86362001)(4744004)(6916009)(53936002)(6116002)(7736002)(86612001)(74316002)(3846002)(22452003)(8990500004)(71200400001)(71190400001)(5660300001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR21MB0700;H:DM5PR21MB0185.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Lr4cc10YDV15co9hwUZBiiCaFwktzs93KERZXIli+saBgziRdYedH0UENez2mZbwRZro94YOVvrE+CemGV/VV6Xl+07FVna7xf1lhO0bkO+d162E8UBN7TAcbL9g5grKvKkl4q3eahqpQu2ZPOaR0ZKtJwulX1FBJV8L5qd/0Gtvh4qKz7MN4l9iyiCF+E0581IrFaBifGWY5SyIDLOnRDgwYOmryeP3Jqycgm61OdGerT8/MylNfW/csQrYfIjrzkjWUSgdBkPV/TkjlN4Ncmzfo0iTClO3njiAwuyH41I6KqEjqJG1WAHvrGfhFMtCu6Av6QuMSUI7bOwYV4rFVtlVIISOblT9XqSifiWX6ZE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6cbbdaa-32fd-4098-33ee-08d6558b4b2a X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Nov 2018 23:43:26.7324 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR21MB0700 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY0IDEvM10gQ0lGUzogQWRkIHN1cHBvcnQgZm9yIGRpcmVj dCBJL08gcmVhZA0KPiANCj4gSGkgTG9uZywNCj4gDQo+IFBsZWFzZSBmaW5kIG15IGNvbW1lbnRz IGJlbG93Lg0KPiANCj4gDQo+INGB0YAsIDMxINC+0LrRgi4gMjAxOCDQsy4g0LIgMTU6MTQsIExv bmcgTGkgPGxvbmdsaUBsaW51eG9uaHlwZXJ2LmNvbT46DQo+ID4NCj4gPiBGcm9tOiBMb25nIExp IDxsb25nbGlAbWljcm9zb2Z0LmNvbT4NCj4gPg0KPiA+IFdpdGggZGlyZWN0IEkvTyByZWFkLCB3 ZSB0cmFuc2ZlciB0aGUgZGF0YSBkaXJlY3RseSBmcm9tIHRyYW5zcG9ydA0KPiA+IGxheWVyIHRv IHRoZSB1c2VyIGRhdGEgYnVmZmVyLg0KPiA+DQo+ID4gQ2hhbmdlIGluIHYzOiBhZGQgc3VwcG9y dCBmb3Iga2VybmVsIEFJTw0KPiA+DQo+ID4gQ2hhbmdlIGluIHY0Og0KPiA+IFJlZmFjdG9yIGNv bW1vbiByZWFkIGNvZGUgdG8gX19jaWZzX3JlYWR2IGZvciBkaXJlY3QgYW5kIG5vbi1kaXJlY3Qg SS9PLg0KPiA+IFJldHJ5IG9uIGRpcmVjdCBJL08gZmFpbHVyZS4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IExvbmcgTGkgPGxvbmdsaUBtaWNyb3NvZnQuY29tPg0KPiA+IC0tLQ0KPiA+ICBmcy9j aWZzL2NpZnNmcy5oICAgfCAgIDEgKw0KPiA+ICBmcy9jaWZzL2NpZnNnbG9iLmggfCAgIDUgKysN Cj4gPiAgZnMvY2lmcy9maWxlLmMgICAgIHwgMjE5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLQ0KPiAtLS0tLS0tLQ0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE4 NiBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9m cy9jaWZzL2NpZnNmcy5oIGIvZnMvY2lmcy9jaWZzZnMuaCBpbmRleA0KPiA+IDVmMDIzMTguLjdm YmE5YWEgMTAwNjQ0DQo+ID4gLS0tIGEvZnMvY2lmcy9jaWZzZnMuaA0KPiA+ICsrKyBiL2ZzL2Np ZnMvY2lmc2ZzLmgNCj4gPiBAQCAtMTAyLDYgKzEwMiw3IEBAIGV4dGVybiBpbnQgY2lmc19vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdA0KPiA+IGZpbGUgKmZpbGUpOyAgZXh0ZXJuIGlu dCBjaWZzX2Nsb3NlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlDQo+ID4gKmZpbGUp OyAgZXh0ZXJuIGludCBjaWZzX2Nsb3NlZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm aWxlDQo+ID4gKmZpbGUpOyAgZXh0ZXJuIHNzaXplX3QgY2lmc191c2VyX3JlYWR2KHN0cnVjdCBr aW9jYiAqaW9jYiwgc3RydWN0DQo+ID4gaW92X2l0ZXIgKnRvKTsNCj4gPiArZXh0ZXJuIHNzaXpl X3QgY2lmc19kaXJlY3RfcmVhZHYoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIN Cj4gPiArKnRvKTsNCj4gPiAgZXh0ZXJuIHNzaXplX3QgY2lmc19zdHJpY3RfcmVhZHYoc3RydWN0 IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXINCj4gPiAqdG8pOyAgZXh0ZXJuIHNzaXplX3Qg Y2lmc191c2VyX3dyaXRldihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdA0KPiA+IGlvdl9pdGVy ICpmcm9tKTsgIGV4dGVybiBzc2l6ZV90IGNpZnNfc3RyaWN0X3dyaXRldihzdHJ1Y3Qga2lvY2IN Cj4gPiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKTsgZGlmZiAtLWdpdCBhL2ZzL2NpZnMv Y2lmc2dsb2IuaA0KPiA+IGIvZnMvY2lmcy9jaWZzZ2xvYi5oIGluZGV4IDdmNjJjOTguLjUyMjQ4 ZGQgMTAwNjQ0DQo+ID4gLS0tIGEvZnMvY2lmcy9jaWZzZ2xvYi5oDQo+ID4gKysrIGIvZnMvY2lm cy9jaWZzZ2xvYi5oDQo+ID4gQEAgLTExNDYsNiArMTE0NiwxMSBAQCBzdHJ1Y3QgY2lmc19haW9f Y3R4IHsNCj4gPiAgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIGxlbjsNCj4gPiAgICAg ICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgIHRvdGFsX2xlbjsNCj4gPiAgICAgICAgIGJvb2wg ICAgICAgICAgICAgICAgICAgIHNob3VsZF9kaXJ0eTsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAg ICAgICAgKiBJbmRpY2F0ZXMgaWYgdGhpcyBhaW9fY3R4IGlzIGZvciBkaXJlY3RfaW8sDQo+ID4g KyAgICAgICAgKiBJZiB5ZXMsIGl0ZXIgaXMgYSBjb3B5IG9mIHRoZSB1c2VyIHBhc3NlZCBpb3Zf aXRlcg0KPiA+ICsgICAgICAgICovDQo+ID4gKyAgICAgICBib29sICAgICAgICAgICAgICAgICAg ICBkaXJlY3RfaW87DQo+ID4gIH07DQo+ID4NCj4gPiAgc3RydWN0IGNpZnNfcmVhZGRhdGE7DQo+ ID4gZGlmZiAtLWdpdCBhL2ZzL2NpZnMvZmlsZS5jIGIvZnMvY2lmcy9maWxlLmMgaW5kZXggODdl ZWNlNi4uZGFhYjg3OA0KPiA+IDEwMDY0NA0KPiA+IC0tLSBhL2ZzL2NpZnMvZmlsZS5jDQo+ID4g KysrIGIvZnMvY2lmcy9maWxlLmMNCj4gPiBAQCAtMjk2NSw3ICsyOTY1LDYgQEAgY2lmc191bmNh Y2hlZF9yZWFkZGF0YV9yZWxlYXNlKHN0cnVjdCBrcmVmDQo+ICpyZWZjb3VudCkNCj4gPiAgICAg ICAgIGtyZWZfcHV0KCZyZGF0YS0+Y3R4LT5yZWZjb3VudCwgY2lmc19haW9fY3R4X3JlbGVhc2Up Ow0KPiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJkYXRhLT5ucl9wYWdlczsgaSsrKSB7DQo+ ID4gICAgICAgICAgICAgICAgIHB1dF9wYWdlKHJkYXRhLT5wYWdlc1tpXSk7DQo+ID4gLSAgICAg ICAgICAgICAgIHJkYXRhLT5wYWdlc1tpXSA9IE5VTEw7DQo+ID4gICAgICAgICB9DQo+ID4gICAg ICAgICBjaWZzX3JlYWRkYXRhX3JlbGVhc2UocmVmY291bnQpOyAgfSBAQCAtMzA5Miw2ICszMDkx LDYzIEBADQo+ID4gY2lmc191bmNhY2hlZF9jb3B5X2ludG9fcGFnZXMoc3RydWN0IFRDUF9TZXJ2 ZXJfSW5mbyAqc2VydmVyLA0KPiA+ICAgICAgICAgcmV0dXJuIHVuY2FjaGVkX2ZpbGxfcGFnZXMo c2VydmVyLCByZGF0YSwgaXRlciwgaXRlci0+Y291bnQpOw0KPiA+IH0NCj4gPg0KPiA+ICtzdGF0 aWMgaW50IGNpZnNfcmVzZW5kX3JkYXRhKHN0cnVjdCBjaWZzX3JlYWRkYXRhICpyZGF0YSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcmRhdGFfbGlzdCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNpZnNfYWlvX2N0eCAqY3R4KSB7DQo+ID4g KyAgICAgICBpbnQgd2FpdF9yZXRyeSA9IDA7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgcnNp emUsIGNyZWRpdHM7DQo+ID4gKyAgICAgICBpbnQgcmM7DQo+ID4gKyAgICAgICBzdHJ1Y3QgVENQ X1NlcnZlcl9JbmZvICpzZXJ2ZXIgPQ0KPiA+ICt0bGlua190Y29uKHJkYXRhLT5jZmlsZS0+dGxp bmspLT5zZXMtPnNlcnZlcjsNCj4gPiArDQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgICog VHJ5IHRvIHJlc2VuZCB0aGlzIHJkYXRhLCB3YWl0aW5nIGZvciBjcmVkaXRzIHVwIHRvIDMgc2Vj b25kcy4NCj4gPiArICAgICAgICAqIE5vdGU6IHdlIGFyZSBhdHRlbXB0aW5nIHRvIHJlc2VuZCB0 aGUgd2hvbGUgcmRhdGEgbm90IGluIHNlZ21lbnRzDQo+ID4gKyAgICAgICAgKi8NCj4gPiArICAg ICAgIGRvIHsNCj4gPiArICAgICAgICAgICAgICAgcmMgPSBzZXJ2ZXItPm9wcy0+d2FpdF9tdHVf Y3JlZGl0cyhzZXJ2ZXIsIHJkYXRhLT5ieXRlcywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmcnNpemUsICZjcmVkaXRzKTsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgIGlmIChyYykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyc2l6ZSA8IHJkYXRhLT5ieXRlcykg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNl cnZlciwgY3JlZGl0cywgMCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbXNsZWVwKDEw MDApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcmV0cnkrKzsNCj4gPiArICAg ICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfSB3aGlsZSAocnNpemUgPCByZGF0YS0+Ynl0ZXMg JiYgd2FpdF9yZXRyeSA8IDMpOw0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAg KiBJZiB3ZSBjYW4ndCBmaW5kIGVub3VnaCBjcmVkaXRzIHRvIHNlbmQgdGhpcyByZGF0YQ0KPiA+ ICsgICAgICAgICogcmVsZWFzZSB0aGUgcmRhdGEgYW5kIHJldHVybiBmYWlsdXJlLCB0aGlzIHdp bGwgcGFzcw0KPiA+ICsgICAgICAgICogd2hhdGV2ZXIgSS9PIGFtb3VudCB3ZSBoYXZlIGZpbmlz aGVkIHRvIFZGUy4NCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKHJzaXplIDwgcmRh dGEtPmJ5dGVzKSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJjID0gLUVCVVNZOw0KPiANCj4gV2Ug ZG9uJ3QgaGF2ZSBlbm91Z2ggY3JlZGl0cyBhbmQgcmV0dXJuIEVCVVNZIGhlcmUuLi4NCj4gDQo+ ID4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICAgIHJjID0gLUVBR0FJTjsNCj4gPiArICAgICAgIHdoaWxlIChyYyA9PSAtRUFHQUlOKQ0K PiA+ICsgICAgICAgICAgICAgICBpZiAoIXJkYXRhLT5jZmlsZS0+aW52YWxpZEhhbmRsZSB8fA0K PiA+ICsgICAgICAgICAgICAgICAgICAgIShyYyA9IGNpZnNfcmVvcGVuX2ZpbGUocmRhdGEtPmNm aWxlLCB0cnVlKSkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBzZXJ2ZXItPm9w cy0+YXN5bmNfcmVhZHYocmRhdGEpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghcmMpIHsNCj4g PiArICAgICAgICAgICAgICAgLyogQWRkIHRvIGFpbyBwZW5kaW5nIGxpc3QgKi8NCj4gPiArICAg ICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcmRhdGEtPmxpc3QsIHJkYXRhX2xpc3QpOw0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICBhZGRfY3JlZGl0c19hbmRfd2FrZV9pZihzZXJ2ZXIsIHJkYXRhLT5jcmVkaXRzLCAwKTsN Cj4gPiArb3V0Og0KPiA+ICsgICAgICAga3JlZl9wdXQoJnJkYXRhLT5yZWZjb3VudCwNCj4gPiAr ICAgICAgICAgICAgICAgY2lmc191bmNhY2hlZF9yZWFkZGF0YV9yZWxlYXNlKTsNCj4gPiArDQo+ ID4gKyAgICAgICByZXR1cm4gcmM7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQNCj4g PiAgY2lmc19zZW5kX2FzeW5jX3JlYWQobG9mZl90IG9mZnNldCwgc2l6ZV90IGxlbiwgc3RydWN0 IGNpZnNGaWxlSW5mbyAqb3Blbl9maWxlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsIHN0cnVjdCBsaXN0X2hlYWQNCj4gPiAqcmRhdGFfbGlz dCwgQEAgLTMxMDMsNiArMzE1OSw5IEBAIGNpZnNfc2VuZF9hc3luY19yZWFkKGxvZmZfdCBvZmZz ZXQsDQo+IHNpemVfdCBsZW4sIHN0cnVjdCBjaWZzRmlsZUluZm8gKm9wZW5fZmlsZSwNCj4gPiAg ICAgICAgIGludCByYzsNCj4gPiAgICAgICAgIHBpZF90IHBpZDsNCj4gPiAgICAgICAgIHN0cnVj dCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcjsNCj4gPiArICAgICAgIHN0cnVjdCBwYWdlICoqcGFn ZXZlYzsNCj4gPiArICAgICAgIHNpemVfdCBzdGFydDsNCj4gPiArICAgICAgIHN0cnVjdCBpb3Zf aXRlciBkaXJlY3RfaW92ID0gY3R4LT5pdGVyOw0KPiA+DQo+ID4gICAgICAgICBzZXJ2ZXIgPSB0 bGlua190Y29uKG9wZW5fZmlsZS0+dGxpbmspLT5zZXMtPnNlcnZlcjsNCj4gPg0KPiA+IEBAIC0z MTExLDYgKzMxNzAsOSBAQCBjaWZzX3NlbmRfYXN5bmNfcmVhZChsb2ZmX3Qgb2Zmc2V0LCBzaXpl X3QgbGVuLA0KPiBzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpvcGVuX2ZpbGUsDQo+ID4gICAgICAgICBl bHNlDQo+ID4gICAgICAgICAgICAgICAgIHBpZCA9IGN1cnJlbnQtPnRnaWQ7DQo+ID4NCj4gPiAr ICAgICAgIGlmIChjdHgtPmRpcmVjdF9pbykNCj4gPiArICAgICAgICAgICAgICAgaW92X2l0ZXJf YWR2YW5jZSgmZGlyZWN0X2lvdiwgb2Zmc2V0IC0gY3R4LT5wb3MpOw0KPiA+ICsNCj4gPiAgICAg ICAgIGRvIHsNCj4gPiAgICAgICAgICAgICAgICAgcmMgPSBzZXJ2ZXItPm9wcy0+d2FpdF9tdHVf Y3JlZGl0cyhzZXJ2ZXIsIGNpZnNfc2ItPnJzaXplLA0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc2l6ZSwgJmNyZWRpdHMpOw0KPiA+IEBA IC0zMTE4LDIwICszMTgwLDU2IEBAIGNpZnNfc2VuZF9hc3luY19yZWFkKGxvZmZfdCBvZmZzZXQs IHNpemVfdCBsZW4sDQo+IHN0cnVjdCBjaWZzRmlsZUluZm8gKm9wZW5fZmlsZSwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICBjdXJf bGVuID0gbWluX3QoY29uc3Qgc2l6ZV90LCBsZW4sIHJzaXplKTsNCj4gPiAtICAgICAgICAgICAg ICAgbnBhZ2VzID0gRElWX1JPVU5EX1VQKGN1cl9sZW4sIFBBR0VfU0laRSk7DQo+ID4NCj4gPiAt ICAgICAgICAgICAgICAgLyogYWxsb2NhdGUgYSByZWFkZGF0YSBzdHJ1Y3QgKi8NCj4gPiAtICAg ICAgICAgICAgICAgcmRhdGEgPSBjaWZzX3JlYWRkYXRhX2FsbG9jKG5wYWdlcywNCj4gPiArICAg ICAgICAgICAgICAgaWYgKGN0eC0+ZGlyZWN0X2lvKSB7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGN1cl9sZW4gPSBpb3ZfaXRlcl9nZXRfcGFnZXNfYWxsb2MoDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkaXJlY3RfaW92LCAmcGFnZXZl YywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xlbiwg JnN0YXJ0KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyX2xlbiA8IDApIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZnNfZGJnKFZGUywNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IGdldCB1c2Vy IHBhZ2VzIChjdXJfbGVuPSV6ZCkiDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIgaXRlciB0eXBlICVkIg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiIGlvdl9vZmZzZXQgJXpkIGNvdW50ICV6ZFxuIiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xlbiwgZGlyZWN0X2lvdi50eXBl LCBkaXJlY3RfaW92Lmlvdl9vZmZzZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRpcmVjdF9pb3YuY291bnQpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZHVtcF9zdGFjaygpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlvdl9pdGVyX2FkdmFuY2UoJmRpcmVjdF9pb3YsIGN1cl9sZW4pOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZGF0YSA9IGNpZnNfcmVhZGRhdGFf ZGlyZWN0X2FsbG9jKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYWdldmVjLCBjaWZzX3VuY2FjaGVkX3JlYWR2X2NvbXBsZXRlKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIXJkYXRhKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhZGRfY3JlZGl0c19hbmRfd2FrZV9pZihzZXJ2ZXIsIGNyZWRpdHMsIDApOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBucGFnZXMgPSAoY3Vy X2xlbiArIHN0YXJ0ICsgUEFHRV9TSVpFLTEpIC8gUEFHRV9TSVpFOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJkYXRhLT5wYWdlX29mZnNldCA9IHN0YXJ0Ow0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJkYXRhLT50YWlsc3ogPSBucGFnZXMgPiAxID8NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN1cl9sZW4tKFBBR0VfU0laRS1zdGFydCktKG5wYWdlcy0y KSpQQUdFX1NJWkUgOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xl bjsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIG5wYWdlcyA9IERJVl9ST1VORF9VUChjdXJfbGVuLCBQQUdFX1NJ WkUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIGFsbG9jYXRlIGEgcmVhZGRhdGEg c3RydWN0ICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmRhdGEgPSBjaWZzX3JlYWRk YXRhX2FsbG9jKG5wYWdlcywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNpZnNfdW5jYWNoZWRfcmVhZHZfY29tcGxldGUpOw0KPiA+IC0gICAgICAgICAg ICAgICBpZiAoIXJkYXRhKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYWRkX2NyZWRp dHNfYW5kX3dha2VfaWYoc2VydmVyLCBjcmVkaXRzLCAwKTsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICByYyA9IC1FTk9NRU07DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gLSAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo IXJkYXRhKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY3JlZGl0 c19hbmRfd2FrZV9pZihzZXJ2ZXIsIGNyZWRpdHMsIDApOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+DQo+ID4g LSAgICAgICAgICAgICAgIHJjID0gY2lmc19yZWFkX2FsbG9jYXRlX3BhZ2VzKHJkYXRhLCBucGFn ZXMpOw0KPiA+IC0gICAgICAgICAgICAgICBpZiAocmMpDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgZ290byBlcnJvcjsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByYyA9IGNpZnNf cmVhZF9hbGxvY2F0ZV9wYWdlcyhyZGF0YSwgbnBhZ2VzKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAocmMpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycm9yOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZGF0YS0+dGFpbHN6 ID0gUEFHRV9TSVpFOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICAg ICAgICAgcmRhdGEtPmNmaWxlID0gY2lmc0ZpbGVJbmZvX2dldChvcGVuX2ZpbGUpOw0KPiA+ICAg ICAgICAgICAgICAgICByZGF0YS0+bnJfcGFnZXMgPSBucGFnZXM7IEBAIC0zMTM5LDcgKzMyMzcs NiBAQA0KPiA+IGNpZnNfc2VuZF9hc3luY19yZWFkKGxvZmZfdCBvZmZzZXQsIHNpemVfdCBsZW4s IHN0cnVjdCBjaWZzRmlsZUluZm8gKm9wZW5fZmlsZSwNCj4gPiAgICAgICAgICAgICAgICAgcmRh dGEtPmJ5dGVzID0gY3VyX2xlbjsNCj4gPiAgICAgICAgICAgICAgICAgcmRhdGEtPnBpZCA9IHBp ZDsNCj4gPiAgICAgICAgICAgICAgICAgcmRhdGEtPnBhZ2VzeiA9IFBBR0VfU0laRTsNCj4gPiAt ICAgICAgICAgICAgICAgcmRhdGEtPnRhaWxzeiA9IFBBR0VfU0laRTsNCj4gPiAgICAgICAgICAg ICAgICAgcmRhdGEtPnJlYWRfaW50b19wYWdlcyA9IGNpZnNfdW5jYWNoZWRfcmVhZF9pbnRvX3Bh Z2VzOw0KPiA+ICAgICAgICAgICAgICAgICByZGF0YS0+Y29weV9pbnRvX3BhZ2VzID0gY2lmc191 bmNhY2hlZF9jb3B5X2ludG9fcGFnZXM7DQo+ID4gICAgICAgICAgICAgICAgIHJkYXRhLT5jcmVk aXRzID0gY3JlZGl0czsgQEAgLTMxNTMsOSArMzI1MCwxMSBAQA0KPiA+IGNpZnNfc2VuZF9hc3lu Y19yZWFkKGxvZmZfdCBvZmZzZXQsIHNpemVfdCBsZW4sIHN0cnVjdCBjaWZzRmlsZUluZm8gKm9w ZW5fZmlsZSwNCj4gPiAgICAgICAgICAgICAgICAgaWYgKHJjKSB7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgYWRkX2NyZWRpdHNfYW5kX3dha2VfaWYoc2VydmVyLCByZGF0YS0+Y3JlZGl0 cywgMCk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAga3JlZl9wdXQoJnJkYXRhLT5yZWZj b3VudCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWZzX3VuY2FjaGVk X3JlYWRkYXRhX3JlbGVhc2UpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA9 PSAtRUFHQUlOKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lmc191bmNh Y2hlZF9yZWFkZGF0YV9yZWxlYXNlKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo cmMgPT0gLUVBR0FJTikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW92 X2l0ZXJfcmV2ZXJ0KCZkaXJlY3RfaW92LCBjdXJfbGVuKTsNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgICAgICAg fQ0KPiA+DQo+ID4gQEAgLTMyMTEsNDUgKzMzMTAsNjIgQEAgY29sbGVjdF91bmNhY2hlZF9yZWFk X2RhdGEoc3RydWN0DQo+IGNpZnNfYWlvX2N0eCAqY3R4KQ0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICogcmVhZGluZy4NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdvdF9i eXRlcyAmJiBnb3RfYnl0ZXMgPCByZGF0YS0+Ynl0ZXMpIHsNCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBjaWZzX3JlYWRkYXRhX3RvX2lvdihyZGF0YSwg dG8pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IDA7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3R4LT5k aXJlY3RfaW8pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmMgPQ0KPiA+ICsgY2lmc19yZWFkZGF0YV90b19pb3YocmRhdGEsIHRvKTsNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjKSB7DQo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JlZl9wdXQoJnJk YXRhLT5yZWZjb3VudCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaWZzX3VuY2FjaGVkX3JlYWRkYXRhX3JlbGVhc2UpOw0KPiA+ICsNCj4gPiAr IGNpZnNfdW5jYWNoZWRfcmVhZGRhdGFfcmVsZWFzZSk7DQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMg PSBjaWZzX3NlbmRfYXN5bmNfcmVhZCgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChjdHgtPmRpcmVjdF9pbykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKiBSZS11c2UgcmRhdGEgYXMgdGhpcyBpcyBhDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGRpcmVjdCBJL08NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJjID0gY2lmc19yZXNlbmRfcmRhdGEoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmRhdGEsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRtcF9saXN0LCBjdHgpOw0K PiANCj4gLi4uc28gd2Ugc2V0IHJjIHRvIC1FQlVTWS4uLg0KPiANCj4gDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByYyA9IGNpZnNfc2VuZF9hc3luY19yZWFkKA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkYXRhLT5vZmZzZXQg KyBnb3RfYnl0ZXMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmRhdGEtPmJ5dGVzIC0gZ290X2J5dGVzLA0KPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkYXRhLT5jZmlsZSwgY2lmc19zYiwNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG1wX2xp c3QsIGN0eCk7DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAga3JlZl9wdXQoJnJkYXRhLT5yZWZjb3VudCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaWZzX3VuY2FjaGVkX3JlYWRkYXRhX3JlbGVhc2Up Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfc3BsaWNlKCZ0bXBfbGlzdCwgJmN0eC0+ bGlzdCk7DQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyZWZfcHV0 KCZyZGF0YS0+cmVmY291bnQsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaWZzX3VuY2FjaGVkX3JlYWRkYXRhX3JlbGVhc2UpOw0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ290byBhZ2FpbjsNCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgaWYgKHJkYXRhLT5yZXN1bHQpDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByYyA9IHJkYXRhLT5yZXN1bHQ7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFjdHgtPmRpcmVj dF9pbykNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gY2lmc19yZWFk ZGF0YV90b19pb3YocmRhdGEsIHRvKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IC8qIGlmIHRoZXJlIHdhcyBhIHNob3J0IHJlYWQgLS0gZGlzY2FyZCBhbnl0aGluZyBsZWZ0ICov DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJkYXRhLT5nb3RfYnl0ZXMgJiYgcmRh dGEtPmdvdF9ieXRlcyA8IHJkYXRhLT5ieXRlcykNCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJjID0gLUVOT0RBVEE7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+dG90YWxfbGVuICs9IHJkYXRhLT5nb3RfYnl0ZXM7DQo+ID4gICAgICAgICAgICAg ICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmcmRhdGEtPmxpc3QpOw0K PiA+ICAgICAgICAgICAgICAgICBrcmVmX3B1dCgmcmRhdGEtPnJlZmNvdW50LCBjaWZzX3VuY2Fj aGVkX3JlYWRkYXRhX3JlbGVhc2UpOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gLSAgICAgICBm b3IgKGkgPSAwOyBpIDwgY3R4LT5ucGFnZXM7IGkrKykgew0KPiA+IC0gICAgICAgICAgICAgICBp ZiAoY3R4LT5zaG91bGRfZGlydHkpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgc2V0X3Bh Z2VfZGlydHkoY3R4LT5idltpXS5idl9wYWdlKTsNCj4gPiAtICAgICAgICAgICAgICAgcHV0X3Bh Z2UoY3R4LT5idltpXS5idl9wYWdlKTsNCj4gPiAtICAgICAgIH0NCj4gPiArICAgICAgIGlmICgh Y3R4LT5kaXJlY3RfaW8pIHsNCj4gPiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0 eC0+bnBhZ2VzOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5z aG91bGRfZGlydHkpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfcGFn ZV9kaXJ0eShjdHgtPmJ2W2ldLmJ2X3BhZ2UpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHB1dF9wYWdlKGN0eC0+YnZbaV0uYnZfcGFnZSk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4g Pg0KPiA+IC0gICAgICAgY3R4LT50b3RhbF9sZW4gPSBjdHgtPmxlbiAtIGlvdl9pdGVyX2NvdW50 KHRvKTsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT50b3RhbF9sZW4gPSBjdHgtPmxlbiAtIGlv dl9pdGVyX2NvdW50KHRvKTsNCj4gPiArICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgY2lmc19z dGF0c19ieXRlc19yZWFkKHRjb24sIGN0eC0+dG90YWxfbGVuKTsNCj4gPg0KPiA+IEBAIC0zMjY3 LDE4ICszMzgzLDI3IEBAIGNvbGxlY3RfdW5jYWNoZWRfcmVhZF9kYXRhKHN0cnVjdA0KPiBjaWZz X2Fpb19jdHggKmN0eCkNCj4gPiAgICAgICAgICAgICAgICAgY29tcGxldGUoJmN0eC0+ZG9uZSk7 DQo+IA0KPiBhbmQgdGhlbiBjdHgtPnJjIGlzIHNldCB0byAtRUJVU1kgdG9vLg0KPiANCj4gPiAg fQ0KPiA+DQo+ID4gLXNzaXplX3QgY2lmc191c2VyX3JlYWR2KHN0cnVjdCBraW9jYiAqaW9jYiwg c3RydWN0IGlvdl9pdGVyICp0bykNCj4gPiArc3NpemVfdCBfX2NpZnNfcmVhZHYoc3RydWN0IGtp b2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvLCBib29sDQo+ID4gK2RpcmVjdCkNCj4gPiAg ew0KPiA+IC0gICAgICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2NiLT5raV9maWxwOw0KPiA+IC0g ICAgICAgc3NpemVfdCByYzsNCj4gPiAgICAgICAgIHNpemVfdCBsZW47DQo+ID4gLSAgICAgICBz c2l6ZV90IHRvdGFsX3JlYWQgPSAwOw0KPiA+IC0gICAgICAgbG9mZl90IG9mZnNldCA9IGlvY2It PmtpX3BvczsNCj4gPiArICAgICAgIHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi0+a2lfZmlscDsN Cj4gPiAgICAgICAgIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2I7DQo+ID4gLSAgICAgICBz dHJ1Y3QgY2lmc190Y29uICp0Y29uOw0KPiA+ICAgICAgICAgc3RydWN0IGNpZnNGaWxlSW5mbyAq Y2ZpbGU7DQo+ID4gKyAgICAgICBzdHJ1Y3QgY2lmc190Y29uICp0Y29uOw0KPiA+ICsgICAgICAg c3NpemVfdCByYywgdG90YWxfcmVhZCA9IDA7DQo+ID4gKyAgICAgICBsb2ZmX3Qgb2Zmc2V0ID0g aW9jYi0+a2lfcG9zOw0KPiA+ICAgICAgICAgc3RydWN0IGNpZnNfYWlvX2N0eCAqY3R4Ow0KPiA+ DQo+ID4gKyAgICAgICAvKg0KPiA+ICsgICAgICAgICogaW92X2l0ZXJfZ2V0X3BhZ2VzX2FsbG9j KCkgZG9lc24ndCB3b3JrIHdpdGggSVRFUl9LVkVDLA0KPiA+ICsgICAgICAgICogZmFsbCBiYWNr IHRvIGRhdGEgY29weSByZWFkIHBhdGgNCj4gPiArICAgICAgICAqIHRoaXMgY291bGQgYmUgaW1w cm92ZWQgYnkgZ2V0dGluZyBwYWdlcyBkaXJlY3RseSBpbiBJVEVSX0tWRUMNCj4gPiArICAgICAg ICAqLw0KPiA+ICsgICAgICAgaWYgKGRpcmVjdCAmJiB0by0+dHlwZSAmIElURVJfS1ZFQykgew0K PiA+ICsgICAgICAgICAgICAgICBjaWZzX2RiZyhGWUksICJ1c2Ugbm9uLWRpcmVjdCBjaWZzX3Vz ZXJfcmVhZHYgZm9yIGt2ZWMgSS9PXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZGlyZWN0ID0g ZmFsc2U7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICAgICAgICAgbGVuID0gaW92X2l0ZXJf Y291bnQodG8pOw0KPiA+ICAgICAgICAgaWYgKCFsZW4pDQo+ID4gICAgICAgICAgICAgICAgIHJl dHVybiAwOw0KPiA+IEBAIC0zMzA1LDE0ICszNDMwLDIwIEBAIHNzaXplX3QgY2lmc191c2VyX3Jl YWR2KHN0cnVjdCBraW9jYiAqaW9jYiwNCj4gc3RydWN0IGlvdl9pdGVyICp0bykNCj4gPiAgICAg ICAgIGlmICh0by0+dHlwZSA9PSBJVEVSX0lPVkVDKQ0KPiA+ICAgICAgICAgICAgICAgICBjdHgt PnNob3VsZF9kaXJ0eSA9IHRydWU7DQo+ID4NCj4gPiAtICAgICAgIHJjID0gc2V0dXBfYWlvX2N0 eF9pdGVyKGN0eCwgdG8sIFJFQUQpOw0KPiA+IC0gICAgICAgaWYgKHJjKSB7DQo+ID4gLSAgICAg ICAgICAgICAgIGtyZWZfcHV0KCZjdHgtPnJlZmNvdW50LCBjaWZzX2Fpb19jdHhfcmVsZWFzZSk7 DQo+ID4gLSAgICAgICAgICAgICAgIHJldHVybiByYzsNCj4gPiArICAgICAgIGlmIChkaXJlY3Qp IHsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5wb3MgPSBvZmZzZXQ7DQo+ID4gKyAgICAgICAg ICAgICAgIGN0eC0+ZGlyZWN0X2lvID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5p dGVyID0gKnRvOw0KPiA+ICsgICAgICAgICAgICAgICBjdHgtPmxlbiA9IGxlbjsNCj4gPiArICAg ICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJjID0gc2V0dXBfYWlvX2N0eF9pdGVy KGN0eCwgdG8sIFJFQUQpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAocmMpIHsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBrcmVmX3B1dCgmY3R4LT5yZWZjb3VudCwgY2lmc19haW9fY3R4 X3JlbGVhc2UpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsNCj4gPiAr ICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICBsZW4gPSBjdHgtPmxlbjsNCj4g PiAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgbGVuID0gY3R4LT5sZW47DQo+ID4gLQ0KPiA+ ICAgICAgICAgLyogZ3JhYiBhIGxvY2sgaGVyZSBkdWUgdG8gcmVhZCByZXNwb25zZSBoYW5kbGVy cyBjYW4gYWNjZXNzIGN0eCAqLw0KPiA+ICAgICAgICAgbXV0ZXhfbG9jaygmY3R4LT5haW9fbXV0 ZXgpOw0KPiA+DQo+ID4gQEAgLTMzNTQsNiArMzQ4NSwxNiBAQCBzc2l6ZV90IGNpZnNfdXNlcl9y ZWFkdihzdHJ1Y3Qga2lvY2IgKmlvY2IsDQo+IHN0cnVjdCBpb3ZfaXRlciAqdG8pDQo+ID4gICAg ICAgICByZXR1cm4gcmM7DQo+IA0KPiBJbiBjYXNlIG9mIGEgYmxvY2tpbmcgcmVhZCB3ZSB3aWxs IHJldHVybiAtRUJVU1kgdG8gdGhlIGNhbGxlciBidXQgcmVhZCBtYW4NCj4gcGFnZSBkb2Vzbid0 IHNheSBhbnl0aGluZyBhYm91dCBhIHBvc3NpYmlsaXR5IHRvIHJldHVybiB0aGlzIGVycm9yIGNv ZGUuIElzIGl0DQo+IGJlaW5nIG1hcHBlZCBzb21laG93IGJ5IFZGUyBvciBpcyB0aGVyZSBhbm90 aGVyIGNvbnNpZGVyYXRpb24/IFRoZSBzYW1lDQo+IHF1ZXN0aW9uIGFwcGxpZXMgdG8gdGhlIHdy aXRlIHBhdGNoIGFzIHdlbGwuDQoNClRoYW5rcyBQYXZlbCwgIFllcyB0aGlzIGlzIGEgYnVnLg0K DQpJbiBwcmFjdGljZSwgdGhlIHJldHJ5IGxvZ2ljIHdpbGwgcmFyZWx5IGdldCBoaXQuIElmIGdl dHRpbmcgaGl0LCBub3JtYWxseSB0aGUgc2VydmVyIHdpbGwgZ2l2ZSB1cyBmYXIgbW9yZSBjcmVk aXRzIGZvciByZXNlbmRpbmcgdGhpcyB3aG9sZSBwYWNrZXQuDQoNCkhvdyBhYm91dCBqdXN0IHJl dHJ5aW5nIGZvcmV2ZXIgKGluc3RlYWQgb2YgdHJ5aW5nIDMgdGltZXMpIG9uIHRoaXMgcmVzZW5k IHBhY2tldD8gVGhpcyB3aWxsIGNoYW5nZSB0aGUgY29kZSB0byB0aGUgc2FtZSBiZWhhdmlvciBi ZWZvcmUgZGlyZWN0IEkvTyBwYXRjaGVzLiANCg0KZS5nLjoNCg0KICAgICAgICAvKg0KICAgICAg ICAgKiBUcnkgdG8gcmVzZW5kIHRoaXMgd2RhdGEsIHdhaXRpbmcgZm9yIGNyZWRpdHMgYmVmb3Jl IHNlbmRpbmcNCiAgICAgICAgICogTm90ZTogd2UgYXJlIGF0dGVtcHRpbmcgdG8gcmVzZW5kIHRo ZSB3aG9sZSB3ZGF0YSBub3QgaW4gc2VnbWVudHMNCiAgICAgICAgICovDQogICAgICAgIGRvIHsN CiAgICAgICAgICAgICAgICByYyA9IHNlcnZlci0+b3BzLT53YWl0X210dV9jcmVkaXRzKA0KICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCB3ZGF0YS0+Ynl0ZXMsICZ3c2l6ZSwgJmNyZWRp dHMpOw0KDQogICAgICAgICAgICAgICAgaWYgKHJjKQ0KICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQoNCiAgICAgICAgICAgICAgICBpZiAod3NpemUgPCB3ZGF0YS0+Ynl0ZXMpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3Jl ZGl0cywgMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBtc2xlZXAoMTAwMCk7DQogICAgICAg ICAgICAgICAgfQ0KICAgICAgICB9IHdoaWxlICh3c2l6ZSA8IHdkYXRhLT5ieXRlcyk7DQoNCj4g DQo+ID4gIH0NCj4gPg0KPiA+ICtzc2l6ZV90IGNpZnNfZGlyZWN0X3JlYWR2KHN0cnVjdCBraW9j YiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bykgew0KPiA+ICsgICAgICAgcmV0dXJuIF9fY2lm c19yZWFkdihpb2NiLCB0bywgdHJ1ZSk7IH0NCj4gPiArDQo+ID4gK3NzaXplX3QgY2lmc191c2Vy X3JlYWR2KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bykgew0KPiA+ICsg ICAgICAgcmV0dXJuIF9fY2lmc19yZWFkdihpb2NiLCB0bywgZmFsc2UpOyB9DQo+ID4gKw0KPiA+ ICBzc2l6ZV90DQo+ID4gIGNpZnNfc3RyaWN0X3JlYWR2KHN0cnVjdCBraW9jYiAqaW9jYiwgc3Ry dWN0IGlvdl9pdGVyICp0bykgIHsNCj4gPiAtLQ0KPiA+IDIuNy40DQo+ID4NCj4gDQo+IC0tDQo+ IEJlc3QgcmVnYXJkcywNCj4gUGF2ZWwgU2hpbG92c2t5DQo=