Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2984549imu; Thu, 29 Nov 2018 13:30:35 -0800 (PST) X-Google-Smtp-Source: AFSGD/XWEld6l8TZz2tjmrz+Tz2rhvogG1O060HGaFfMOexutjJGBY/aCZisEpyYKqsykp/y6gj1 X-Received: by 2002:a17:902:bc43:: with SMTP id t3mr2876728plz.124.1543527035336; Thu, 29 Nov 2018 13:30:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543527035; cv=none; d=google.com; s=arc-20160816; b=lGNSR83tmYZymHbyAPtUuAjzpjesrYLBeGvpqIVpzhQi6Qy+Jy/9IjMfh/jVyo60rl JdAuv9r6g4Lu5LartAfS8z3NlEeTSTkOHk6I2XbsEsR7+vAljd7HgFpsj6nSk7Ei16OX ns7he/HHoqyNMcVsFqzPn7ls16eV8vLclvRMktqF7I9lO4JROa8JvHwsKnL2tz1Z/8FV Z8Mk3ReUjJMrhBRH566gcgoE0QmKoKtY9VOXHUda6LxRfhamh7gRy2u7AGP7YX7lv2N2 b/PywDdeFzv34B1r9zZaRhFjg56vXLGkMgJa4H2bHROhRpqg96Nn61rAGLcdY8b9xgOI FwrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature; bh=6otV/co2Du21N/Fm4MkIm02olHMSEqURvskL169lqfY=; b=P/UnN7rjbrbjurSpvYfNl7YMkO7MRDe8D3fPE8nZyUfdJCDYITO0ton9iWaGfhjE76 ZgOy/WsRz8ZmFdG+5EajAYxbXrTkrfRxDGlpAXGbTDp4wITbnW/OQD0o62ejoNujvw62 5I7rSmdfcsxgHu+iJIkFk/jIl5JzMT58XAk3QATgAW40Q+lqhUUHUTyDCJr5Y4I++Jpm J8eSdPEBFj98KsGVLu+aOImsXN2L23W4ETtOE9BF2c3D7HgJB87axXkyiGA60z9DAa4c oP6aYZ1kCiPyaSQD+zaEM1sF6xScT18U9a0BH1PHraOwRY+/WUX0gMGCOztBBba1bySS utfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microsoft.com header.s=selector1 header.b=hlwVfuOu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d69si2760663pga.184.2018.11.29.13.30.19; Thu, 29 Nov 2018 13:30:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-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=@microsoft.com header.s=selector1 header.b=hlwVfuOu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726957AbeK3Ig3 (ORCPT + 99 others); Fri, 30 Nov 2018 03:36:29 -0500 Received: from mail-eopbgr810125.outbound.protection.outlook.com ([40.107.81.125]:55952 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726336AbeK3Ig2 (ORCPT ); Fri, 30 Nov 2018 03:36:28 -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=6otV/co2Du21N/Fm4MkIm02olHMSEqURvskL169lqfY=; b=hlwVfuOuhs6sSDX56+npe9llbPnPItNCH4RgCFhFmSNa+6Lbqc+igxZyufDOSc1r6y12vB6iHx6oHSMDuc3/YJc7/zQxFoV6j6mGzDUruArlZQirUF3HjFntvRYJ/yCfroZDVtleptGJvlVoVOOPjV4/Fhat+cj+Du5oNBTZwJM= Received: from DM5PR21MB0185.namprd21.prod.outlook.com (10.173.173.136) by DM5PR21MB0761.namprd21.prod.outlook.com (10.173.172.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.1404.4; Thu, 29 Nov 2018 21:29:36 +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.010; Thu, 29 Nov 2018 21:29:36 +0000 From: Long Li To: Pavel Shilovsky CC: Steve French , linux-cifs , samba-technical , Kernel Mailing List Subject: RE: [Patch v4 2/3] CIFS: Add support for direct I/O write Thread-Topic: [Patch v4 2/3] CIFS: Add support for direct I/O write Thread-Index: AQHUcWcbo2xQffhBNUe24acTC0Ajt6VTM/QAgBL5jyCAARMSAIAAL6Nw Date: Thu, 29 Nov 2018 21:29:36 +0000 Message-ID: References: <20181031221311.2596-1-longli@linuxonhyperv.com> <20181031221311.2596-2-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;DM5PR21MB0761;6:nRDvS7HnuIj+yTeatfVhpXcohK0MuolS0U4erqM93B6ve40Bp8LcZr0wXm6ynMz1X7F7CAymzQQp3gfZamSW7uBsh1FvphuTxvhiFLxMs19C34SP4LPGnynt4bOrbJ0uM0w7NJ63fUbFoV5RBCNn/jHBZyZd/AAbkl8WE5s0U8ohWleG90DFUh77/iLcB1Hee+i0Bf0oCo5Zk47hybixkX+5uXTqHA0apG1sIvQ/9e/X9tRCrsZhM+aiGLawMHhT/I6aVDmp0gPr+5EvGUlT7NuYzeJgfhuUzLbR0xYpOekshh31mMzPEYDRsIHysc4YiUAOpG8eFlFBrqQJGl7k4NTY+U0CIvOCtS4xCWiDq4x/Z152+4NHyFoa64ZKSeaQrFNuJA3nNxxdB5Jm/Y35GhZnl3DeAp9yJOnLQwZYapyV6IXdLVVcmEGpyiKYIYzYEwwbIatGiFaNGclE6DJzXg==;5:llHZxk6AiN/Q1bEGEheU4sC6qs4Gv36HDlIEjR7JB7y7fTBYx8WIWVMGi2WW26eIj6NhP16nbul97bjNetd+CRy/bvWWQVVOenpT5pOyMzlJm1gN+Se4afST8qBzYOzjgQbjM1jEg/x8UscaI1uIwTFyR050Ay6K1gxnvdbRFvM=;7:PpZtp0SIudsILlNFryOcusYEzAmrF/iL/Krf4xJ3TRMJyNQZuTBudlej0sOa54eTU6of+zN9x4jIXFd2ypqqv+5atC1iYFKDWplbgKvs7lCifbfDIud+F5ZxNXHS0wP/TGbCxfveeEMcGbkhpX4uEg== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 808f2b18-571d-47e5-64a9-08d65641c302 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:DM5PR21MB0761; x-ms-traffictypediagnostic: DM5PR21MB0761: x-ms-exchange-purlcount: -3 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)(93006095)(93001095)(3231453)(999002)(944501451)(2018427008)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:DM5PR21MB0761;BCL:0;PCL:0;RULEID:;SRVR:DM5PR21MB0761; x-forefront-prvs: 0871917CDA x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(136003)(346002)(376002)(396003)(366004)(39860400002)(69234005)(189003)(199004)(6506007)(81166006)(2906002)(14454004)(4744004)(66066001)(7696005)(4326008)(93886005)(6916009)(102836004)(316002)(53936002)(26005)(53946003)(99286004)(305945005)(6246003)(446003)(74316002)(55016002)(8936002)(11346002)(22452003)(7736002)(86612001)(1411001)(8990500004)(106356001)(186003)(86362001)(476003)(105586002)(33656002)(508600001)(10290500003)(486006)(9686003)(256004)(25786009)(14444005)(6436002)(97736004)(6116002)(5660300001)(3846002)(76176011)(8676002)(39060400002)(71190400001)(71200400001)(68736007)(229853002)(54906003)(81156014)(10090500001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR21MB0761;H:DM5PR21MB0185.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: QgpicUteE5VvwSWYDqJGqXk+rPzS6G6EwBVU81fS986yLU/1RYQEW6j0/RHbpSe5g9lrZUgnUn9iU7L0v1+lHFOQ5cSYlIYcsh3aTUl6QqoC4CJoajyCrgpni8OA/IqnSghjLQpUznJbEwwzZKXjV2n/9bVWiBjz9agPfllXIkrVEEqbELHg514Yec9bqdNy/iiVSF42nAWSqnhU6rrhI0q3+N15gLMVTG/JUArDuq6PkWDoIWWWRExtU6q4b94h+G3HMku4bc/g6oT7LC1na3rSMO9kgwntoGU9DQQ51RUzDNXVSBoxNq62DQqPsXEWvoDoAlDm0gQwgMlakC4i6lrdhaUqv+UeaBspgaFr3tY= 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: 808f2b18-571d-47e5-64a9-08d65641c302 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2018 21:29:36.2099 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR21MB0761 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY0IDIvM10gQ0lGUzogQWRkIHN1cHBvcnQgZm9yIGRpcmVj dCBJL08gd3JpdGUNCj4gDQo+INGB0YAsIDI4INC90L7Rj9CxLiAyMDE4INCzLiDQsiAxODoyMCwg TG9uZyBMaSA8bG9uZ2xpQG1pY3Jvc29mdC5jb20+Og0KPiA+DQo+ID4gPiBTdWJqZWN0OiBSZTog W1BhdGNoIHY0IDIvM10gQ0lGUzogQWRkIHN1cHBvcnQgZm9yIGRpcmVjdCBJL08gd3JpdGUNCj4g PiA+DQo+ID4gPiDRgdGALCAzMSDQvtC60YIuIDIwMTgg0LMuINCyIDE1OjI2LCBMb25nIExpIDxs b25nbGlAbGludXhvbmh5cGVydi5jb20+Og0KPiA+ID4gPg0KPiA+ID4gPiBGcm9tOiBMb25nIExp IDxsb25nbGlAbWljcm9zb2Z0LmNvbT4NCj4gPiA+ID4NCj4gPiA+ID4gV2l0aCBkaXJlY3QgSS9P IHdyaXRlLCB1c2VyIHN1cHBsaWVkIGJ1ZmZlcnMgYXJlIHBpbm5lZCB0byB0aGUNCj4gPiA+ID4g bWVtb3J5IGFuZCBkYXRhIGFyZSB0cmFuc2ZlcnJlZCBkaXJlY3RseSBmcm9tIHVzZXIgYnVmZmVy cyB0byB0aGUNCj4gdHJhbnNwb3J0IGxheWVyLg0KPiA+ID4gPg0KPiA+ID4gPiBDaGFuZ2UgaW4g djM6IGFkZCBzdXBwb3J0IGZvciBrZXJuZWwgQUlPDQo+ID4gPiA+DQo+ID4gPiA+IENoYW5nZSBp biB2NDoNCj4gPiA+ID4gUmVmYWN0b3IgY29tbW9uIHdyaXRlIGNvZGUgdG8gX19jaWZzX3dyaXRl diBmb3IgZGlyZWN0IGFuZCBub24tZGlyZWN0DQo+IEkvTy4NCj4gPiA+ID4gUmV0cnkgb24gZGly ZWN0IEkvTyBmYWlsdXJlLg0KPiA+ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMb25nIExp IDxsb25nbGlAbWljcm9zb2Z0LmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+ICBmcy9jaWZzL2Np ZnNmcy5oIHwgICAxICsNCj4gPiA+ID4gIGZzL2NpZnMvZmlsZS5jICAgfCAxOTQNCj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4gPiA+IC0tLS0tLS0t DQo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlv bnMoLSkNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2ZzLmggYi9m cy9jaWZzL2NpZnNmcy5oIGluZGV4DQo+ID4gPiA+IDdmYmE5YWEuLmU5YzUxMDMgMTAwNjQ0DQo+ ID4gPiA+IC0tLSBhL2ZzL2NpZnMvY2lmc2ZzLmgNCj4gPiA+ID4gKysrIGIvZnMvY2lmcy9jaWZz ZnMuaA0KPiA+ID4gPiBAQCAtMTA1LDYgKzEwNSw3IEBAIGV4dGVybiBzc2l6ZV90IGNpZnNfdXNl cl9yZWFkdihzdHJ1Y3Qga2lvY2INCj4gPiA+ID4gKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8p OyAgZXh0ZXJuIHNzaXplX3QNCj4gPiA+ID4gY2lmc19kaXJlY3RfcmVhZHYoc3RydWN0IGtpb2Ni ICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKTsNCj4gPiA+ID4gZXh0ZXJuIHNzaXplX3QgY2lm c19zdHJpY3RfcmVhZHYoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QNCj4gPiA+ID4gaW92X2l0 ZXIgKnRvKTsgIGV4dGVybiBzc2l6ZV90IGNpZnNfdXNlcl93cml0ZXYoc3RydWN0IGtpb2NiDQo+ ID4gPiA+ICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pOw0KPiA+ID4gPiArZXh0ZXJuIHNz aXplX3QgY2lmc19kaXJlY3Rfd3JpdGV2KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0DQo+ID4g PiA+ICtpb3ZfaXRlciAqZnJvbSk7DQo+ID4gPiA+ICBleHRlcm4gc3NpemVfdCBjaWZzX3N0cmlj dF93cml0ZXYoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QNCj4gPiA+ID4gaW92X2l0ZXIgKmZy b20pOyAgZXh0ZXJuIGludCBjaWZzX2xvY2soc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QNCj4g PiA+ID4gZmlsZV9sb2NrICopOyBleHRlcm4gaW50IGNpZnNfZnN5bmMoc3RydWN0IGZpbGUgKiwg bG9mZl90LCBsb2ZmX3QsDQo+ID4gPiA+IGludCk7IGRpZmYgLS1naXQgYS9mcy9jaWZzL2ZpbGUu YyBiL2ZzL2NpZnMvZmlsZS5jIGluZGV4DQo+ID4gPiA+IGRhYWI4NzguLjFhNDFjMDQgMTAwNjQ0 DQo+ID4gPiA+IC0tLSBhL2ZzL2NpZnMvZmlsZS5jDQo+ID4gPiA+ICsrKyBiL2ZzL2NpZnMvZmls ZS5jDQo+ID4gPiA+IEBAIC0yNTI0LDYgKzI1MjQsNTUgQEAgd2RhdGFfZmlsbF9mcm9tX2lvdmVj KHN0cnVjdCBjaWZzX3dyaXRlZGF0YQ0KPiA+ID4gPiAqd2RhdGEsIHN0cnVjdCBpb3ZfaXRlciAq ZnJvbSwgIH0NCj4gPiA+ID4NCj4gPiA+ID4gIHN0YXRpYyBpbnQNCj4gPiA+ID4gK2NpZnNfcmVz ZW5kX3dkYXRhKHN0cnVjdCBjaWZzX3dyaXRlZGF0YSAqd2RhdGEsIHN0cnVjdCBsaXN0X2hlYWQN Cj4gPiA+ID4gKyp3ZGF0YV9saXN0LCBzdHJ1Y3QgY2lmc19haW9fY3R4ICpjdHgpIHsNCj4gPiA+ ID4gKyAgICAgICBpbnQgd2FpdF9yZXRyeSA9IDA7DQo+ID4gPiA+ICsgICAgICAgdW5zaWduZWQg aW50IHdzaXplLCBjcmVkaXRzOw0KPiA+ID4gPiArICAgICAgIGludCByYzsNCj4gPiA+ID4gKyAg ICAgICBzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIgPQ0KPiA+ID4gPiArdGxpbmtfdGNv bih3ZGF0YS0+Y2ZpbGUtPnRsaW5rKS0+c2VzLT5zZXJ2ZXI7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgICAgICAvKg0KPiA+ID4gPiArICAgICAgICAqIFRyeSB0byByZXNlbmQgdGhpcyB3ZGF0YSwg d2FpdGluZyBmb3IgY3JlZGl0cyB1cCB0byAzIHNlY29uZHMuDQo+ID4gPiA+ICsgICAgICAgICog Tm90ZTogd2UgYXJlIGF0dGVtcHRpbmcgdG8gcmVzZW5kIHRoZSB3aG9sZSB3ZGF0YSBub3QNCj4g PiA+ID4gKyBpbg0KPiA+ID4gc2VnbWVudHMNCj4gPiA+ID4gKyAgICAgICAgKi8NCj4gPiA+ID4g KyAgICAgICBkbyB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICByYyA9IHNlcnZlci0+b3BzLT53 YWl0X210dV9jcmVkaXRzKHNlcnZlciwNCj4gPiA+ID4gKyB3ZGF0YS0+Ynl0ZXMsICZ3c2l6ZSwg JmNyZWRpdHMpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAocmMpDQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICBpZiAod3NpemUgPCB3ZGF0YS0+Ynl0ZXMpIHsNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgYWRkX2NyZWRpdHNfYW5kX3dha2VfaWYoc2VydmVyLCBjcmVk aXRzLCAwKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbXNsZWVwKDEwMDApOw0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3JldHJ5Kys7DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgfSB3aGlsZSAod3NpemUgPCB3ZGF0YS0+ Ynl0ZXMgJiYgd2FpdF9yZXRyeSA8IDMpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgaWYg KHdzaXplIDwgd2RhdGEtPmJ5dGVzKSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICByYyA9IC1F QlVTWTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ID4gPiArICAgICAg IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIHJjID0gLUVBR0FJTjsNCj4gPiA+ID4gKyAg ICAgICB3aGlsZSAocmMgPT0gLUVBR0FJTikNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmICgh d2RhdGEtPmNmaWxlLT5pbnZhbGlkSGFuZGxlIHx8DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgIShyYyA9IGNpZnNfcmVvcGVuX2ZpbGUod2RhdGEtPmNmaWxlLCBmYWxzZSkpKQ0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICByYyA9IHNlcnZlci0+b3BzLT5hc3luY193cml0ZXYo d2RhdGEsDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyBjaWZzX3VuY2FjaGVkX3dyaXRlZGF0YV9yZWxl YXNlKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIGlmICghcmMpIHsNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJndkYXRhLT5saXN0LCB3ZGF0YV9saXN0KTsNCj4g PiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgd2Rh dGEtPmNyZWRpdHMsIDApOw0KPiA+ID4gPiArb3V0Og0KPiA+ID4gPiArICAgICAgIGtyZWZfcHV0 KCZ3ZGF0YS0+cmVmY291bnQsDQo+ID4gPiA+ICtjaWZzX3VuY2FjaGVkX3dyaXRlZGF0YV9yZWxl YXNlKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIHJldHVybiByYzsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludA0KPiA+ID4gPiAgY2lmc193cml0ZV9mcm9t X2l0ZXIobG9mZl90IG9mZnNldCwgc2l6ZV90IGxlbiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLA0K PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpvcGVuX2Zp bGUsDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNp ZnNfc2IsIHN0cnVjdA0KPiA+ID4gPiBsaXN0X2hlYWQgKndkYXRhX2xpc3QsIEBAIC0yNTM3LDYg KzI1ODYsOCBAQA0KPiA+ID4gPiBjaWZzX3dyaXRlX2Zyb21faXRlcihsb2ZmX3Qgb2Zmc2V0LA0K PiA+ID4gc2l6ZV90IGxlbiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLA0KPiA+ID4gPiAgICAgICAg IGxvZmZfdCBzYXZlZF9vZmZzZXQgPSBvZmZzZXQ7DQo+ID4gPiA+ICAgICAgICAgcGlkX3QgcGlk Ow0KPiA+ID4gPiAgICAgICAgIHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNlcnZlcjsNCj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2V2ZWM7DQo+ID4gPiA+ICsgICAgICAgc2l6ZV90 IHN0YXJ0Ow0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgIGlmIChjaWZzX3NiLT5tbnRfY2lmc19m bGFncyAmIENJRlNfTU9VTlRfUldQSURGT1JXQVJEKQ0KPiA+ID4gPiAgICAgICAgICAgICAgICAg cGlkID0gb3Blbl9maWxlLT5waWQ7IEBAIC0yNTUzLDM4ICsyNjA0LDc0IEBADQo+ID4gPiA+IGNp ZnNfd3JpdGVfZnJvbV9pdGVyKGxvZmZfdCBvZmZzZXQsIHNpemVfdCBsZW4sDQo+ID4gPiBzdHJ1 Y3QgaW92X2l0ZXIgKmZyb20sDQo+ID4gPiA+ICAgICAgICAgICAgICAgICBpZiAocmMpDQo+ID4g PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPg0KPiA+ID4gPiAtICAg ICAgICAgICAgICAgbnJfcGFnZXMgPSBnZXRfbnVtcGFnZXMod3NpemUsIGxlbiwgJmN1cl9sZW4p Ow0KPiA+ID4gPiAtICAgICAgICAgICAgICAgd2RhdGEgPSBjaWZzX3dyaXRlZGF0YV9hbGxvYyhu cl9wYWdlcywNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmIChjdHgtPmRpcmVjdF9pbykgew0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjdXJfbGVuID0gaW92X2l0ZXJfZ2V0X3Bh Z2VzX2FsbG9jKA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20s ICZwYWdldmVjLCB3c2l6ZSwgJnN0YXJ0KTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGN1cl9sZW4gPCAwKSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2lmc19kYmcoVkZTLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImRpcmVjdF93cml0ZXYgY291bGRuJ3QgZ2V0IHVzZXIgcGFnZXMgIg0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihyYz0lemQpIGl0 ZXIgdHlwZSAlZCBpb3Zfb2Zmc2V0ICV6ZCBjb3VudCINCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgJXpkXG4iLA0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xlbiwgZnJvbS0+dHlwZSwNCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20tPmlvdl9vZmZzZXQs IGZyb20tPmNvdW50KTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk dW1wX3N0YWNrKCk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgaW92X2l0ZXJfYWR2YW5jZShmcm9tLCBjdXJfbGVuKTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdlcyA9IChjdXJfbGVuICsg c3RhcnQgKyBQQUdFX1NJWkUgLQ0KPiA+ID4gPiArIDEpIC8gUEFHRV9TSVpFOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHdkYXRhID0NCj4gPiA+ID4gKyBjaWZz X3dyaXRlZGF0YV9kaXJlY3RfYWxsb2MocGFnZXZlYywNCj4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lmc191bmNhY2hlZF93cml0ZXZfY29tcGxl dGUpOw0KPiA+ID4gPiAtICAgICAgICAgICAgICAgaWYgKCF3ZGF0YSkgew0KPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICByYyA9IC1FTk9NRU07DQo+ID4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3JlZGl0cywgMCk7DQo+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gPiAtICAgICAgICAg ICAgICAgfQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdkYXRhKSB7DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtl X2lmKHNlcnZlciwgY3JlZGl0cywgMCk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+ ID4NCj4gPiA+ID4gLSAgICAgICAgICAgICAgIHJjID0gY2lmc193cml0ZV9hbGxvY2F0ZV9wYWdl cyh3ZGF0YS0+cGFnZXMsIG5yX3BhZ2VzKTsNCj4gPiA+ID4gLSAgICAgICAgICAgICAgIGlmIChy Yykgew0KPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBrZnJlZSh3ZGF0YSk7DQo+ID4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZl ciwgY3JlZGl0cywgMCk7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiA+ID4gPiAtICAgICAgICAgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAtICAgICAgICAgICAg ICAgbnVtX3BhZ2VzID0gbnJfcGFnZXM7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICByYyA9IHdk YXRhX2ZpbGxfZnJvbV9pb3ZlYyh3ZGF0YSwgZnJvbSwgJmN1cl9sZW4sDQo+ICZudW1fcGFnZXMp Ow0KPiA+ID4gPiAtICAgICAgICAgICAgICAgaWYgKHJjKSB7DQo+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsrKQ0KPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlKHdkYXRhLT5wYWdlc1tpXSk7DQo+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGtmcmVlKHdkYXRhKTsNCj4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgYWRkX2NyZWRpdHNfYW5kX3dha2VfaWYoc2VydmVyLCBjcmVk aXRzLCAwKTsNCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ IC0gICAgICAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHdkYXRh LT5wYWdlX29mZnNldCA9IHN0YXJ0Ow0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICB3 ZGF0YS0+dGFpbHN6ID0NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu cl9wYWdlcyA+IDEgPw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3VyX2xlbiAtIChQQUdFX1NJWkUgLSBzdGFydCkgLQ0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5yX3BhZ2VzIC0gMikgKiBQQUdFX1NJWkUg Og0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyX2xl bjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIG5yX3BhZ2VzID0gZ2V0X251bXBhZ2VzKHdzaXplLCBsZW4sICZjdXJfbGVu KTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgd2RhdGEgPSBjaWZzX3dyaXRlZGF0 YV9hbGxvYyhucl9wYWdlcywNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2lmc191bmNhY2hlZF93cml0ZXZfY29tcGxldGUpOw0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdkYXRhKSB7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3JlZGl0 cywgMCk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gLSAgICAg ICAgICAgICAgIC8qDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgKiBCcmluZyBucl9wYWdlcyBk b3duIHRvIHRoZSBudW1iZXIgb2YgcGFnZXMgd2UgYWN0dWFsbHkNCj4gdXNlZCwNCj4gPiA+ID4g LSAgICAgICAgICAgICAgICAqIGFuZCBmcmVlIGFueSBwYWdlcyB0aGF0IHdlIGRpZG4ndCB1c2Uu DQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgKi8NCj4gPiA+ID4gLSAgICAgICAgICAgICAgIGZv ciAoIDsgbnJfcGFnZXMgPiBudW1fcGFnZXM7IG5yX3BhZ2VzLS0pDQo+ID4gPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIHB1dF9wYWdlKHdkYXRhLT5wYWdlc1tucl9wYWdlcyAtIDFdKTsNCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBjaWZzX3dyaXRlX2FsbG9jYXRlX3Bh Z2VzKHdkYXRhLT5wYWdlcywgbnJfcGFnZXMpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmMpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr ZnJlZSh3ZGF0YSk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRk X2NyZWRpdHNfYW5kX3dha2VfaWYoc2VydmVyLCBjcmVkaXRzLCAwKTsNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG51 bV9wYWdlcyA9IG5yX3BhZ2VzOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICByYyA9 IHdkYXRhX2ZpbGxfZnJvbV9pb3ZlYyh3ZGF0YSwgZnJvbSwNCj4gPiA+ID4gKyAmY3VyX2xlbiwN Cj4gPiA+ICZudW1fcGFnZXMpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo cmMpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbnJfcGFnZXM7IGkrKykNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHB1dF9wYWdlKHdkYXRhLT5wYWdlc1tpXSk7DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2ZyZWUod2RhdGEpOw0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3Jl ZGl0cywgMCk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAvKg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgKiBCcmluZyBucl9wYWdlcyBkb3duIHRvIHRoZSBudW1iZXIgb2YNCj4gPiA+ID4gKyBwYWdl cyB3ZSBhY3R1YWxseQ0KPiA+ID4gdXNlZCwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICogYW5kIGZyZWUgYW55IHBhZ2VzIHRoYXQgd2UgZGlkbid0IHVzZS4NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICovDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGZvciAoIDsgbnJfcGFnZXMgPiBudW1fcGFnZXM7IG5yX3BhZ2VzLS0pDQo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2Uod2RhdGEtPnBhZ2VzW25yX3BhZ2Vz IC0NCj4gPiA+ID4gKyAxXSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgd2RhdGEtPnRhaWxzeiA9IGN1cl9sZW4gLSAoKG5yX3BhZ2VzIC0gMSkgKiBQQUdFX1NJ WkUpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAg ICAgICAgICAgd2RhdGEtPnN5bmNfbW9kZSA9IFdCX1NZTkNfQUxMOw0KPiA+ID4gPiAgICAgICAg ICAgICAgICAgd2RhdGEtPm5yX3BhZ2VzID0gbnJfcGFnZXM7IEBAIC0yNTkzLDcgKzI2ODAsNiBA QA0KPiA+ID4gPiBjaWZzX3dyaXRlX2Zyb21faXRlcihsb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbGVu LCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sDQo+ID4gPiA+ICAgICAgICAgICAgICAgICB3ZGF0YS0+ cGlkID0gcGlkOw0KPiA+ID4gPiAgICAgICAgICAgICAgICAgd2RhdGEtPmJ5dGVzID0gY3VyX2xl bjsNCj4gPiA+ID4gICAgICAgICAgICAgICAgIHdkYXRhLT5wYWdlc3ogPSBQQUdFX1NJWkU7DQo+ ID4gPiA+IC0gICAgICAgICAgICAgICB3ZGF0YS0+dGFpbHN6ID0gY3VyX2xlbiAtICgobnJfcGFn ZXMgLSAxKSAqIFBBR0VfU0laRSk7DQo+ID4gPiA+ICAgICAgICAgICAgICAgICB3ZGF0YS0+Y3Jl ZGl0cyA9IGNyZWRpdHM7DQo+ID4gPiA+ICAgICAgICAgICAgICAgICB3ZGF0YS0+Y3R4ID0gY3R4 Ow0KPiA+ID4gPiAgICAgICAgICAgICAgICAga3JlZl9nZXQoJmN0eC0+cmVmY291bnQpOyBAQCAt MjY2OCwxMyArMjc1NCwxNyBAQA0KPiA+ID4gPiBzdGF0aWMgdm9pZCBjb2xsZWN0X3VuY2FjaGVk X3dyaXRlX2RhdGEoc3RydWN0IGNpZnNfYWlvX2N0eCAqY3R4KQ0KPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZ0bXBfbGlzdCk7DQo+ID4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmd2RhdGEtPmxp c3QpOw0KPiA+ID4gPg0KPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlv dl9pdGVyX2FkdmFuY2UoJnRtcF9mcm9tLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChjdHgtPmRpcmVjdF9pbykNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJjID0gY2lmc19yZXNlbmRfd2RhdGEod2RhdGEsICZ0bXBf bGlzdCwgY3R4KTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl IHsNCj4gPiA+ID4gKw0KPiA+ID4gPiArIGlvdl9pdGVyX2FkdmFuY2UoJnRtcF9mcm9tLA0KPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Rh dGEtPm9mZnNldCAtDQo+ID4gPiA+IGN0eC0+cG9zKTsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IGNpZnNfd3JpdGVfZnJvbV9pdGVyKHdkYXRh LT5vZmZzZXQsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByYyA9DQo+ID4gPiA+ICsgY2lmc193cml0ZV9mcm9tX2l0ZXIod2RhdGEtPm9mZnNldCwNCj4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Rh dGEtPmJ5dGVzLCAmdG1wX2Zyb20sDQo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y2ZpbGUsIGNpZnNfc2IsICZ0bXBfbGlzdCwNCj4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4 KTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9zcGxpY2UoJnRtcF9s aXN0LA0KPiA+ID4gPiAmY3R4LT5saXN0KTsNCj4gPiA+ID4NCj4gPiA+ID4gQEAgLTI2ODcsOCAr Mjc3Nyw5IEBAIHN0YXRpYyB2b2lkDQo+ID4gPiA+IGNvbGxlY3RfdW5jYWNoZWRfd3JpdGVfZGF0 YShzdHJ1Y3QNCj4gPiA+IGNpZnNfYWlvX2N0eCAqY3R4KQ0KPiA+ID4gPiAgICAgICAgICAgICAg ICAga3JlZl9wdXQoJndkYXRhLT5yZWZjb3VudCwNCj4gY2lmc191bmNhY2hlZF93cml0ZWRhdGFf cmVsZWFzZSk7DQo+ID4gPiA+ICAgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAtICAgICAgIGZv ciAoaSA9IDA7IGkgPCBjdHgtPm5wYWdlczsgaSsrKQ0KPiA+ID4gPiAtICAgICAgICAgICAgICAg cHV0X3BhZ2UoY3R4LT5idltpXS5idl9wYWdlKTsNCj4gPiA+ID4gKyAgICAgICBpZiAoIWN0eC0+ ZGlyZWN0X2lvKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+ bnBhZ2VzOyBpKyspDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlKGN0 eC0+YnZbaV0uYnZfcGFnZSk7DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgY2lmc19zdGF0c19i eXRlc193cml0dGVuKHRjb24sIGN0eC0+dG90YWxfbGVuKTsNCj4gPiA+ID4gICAgICAgICBzZXRf Yml0KENJRlNfSU5PX0lOVkFMSURfTUFQUElORywNCj4gPiA+ID4gJkNJRlNfSShkZW50cnktPmRf aW5vZGUpLT5mbGFncyk7IEBAIC0yNzAzLDcgKzI3OTQsNyBAQCBzdGF0aWMNCj4gPiA+ID4gdm9p ZA0KPiA+ID4gY29sbGVjdF91bmNhY2hlZF93cml0ZV9kYXRhKHN0cnVjdCBjaWZzX2Fpb19jdHgg KmN0eCkNCj4gPiA+ID4gICAgICAgICAgICAgICAgIGNvbXBsZXRlKCZjdHgtPmRvbmUpOyAgfQ0K PiA+ID4gPg0KPiA+ID4gPiAtc3NpemVfdCBjaWZzX3VzZXJfd3JpdGV2KHN0cnVjdCBraW9jYiAq aW9jYiwgc3RydWN0IGlvdl9pdGVyDQo+ID4gPiA+ICpmcm9tKQ0KPiA+ID4gPiArc3RhdGljIHNz aXplX3QgX19jaWZzX3dyaXRldihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlcg0K PiA+ID4gPiArKmZyb20sIGJvb2wgZGlyZWN0KQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgICAgICAg IHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi0+a2lfZmlscDsNCj4gPiA+ID4gICAgICAgICBzc2l6 ZV90IHRvdGFsX3dyaXR0ZW4gPSAwOyBAQCAtMjcxMiwxMyArMjgwMywxOCBAQCBzc2l6ZV90DQo+ ID4gPiA+IGNpZnNfdXNlcl93cml0ZXYoc3RydWN0IGtpb2NiICppb2NiLA0KPiA+ID4gc3RydWN0 IGlvdl9pdGVyICpmcm9tKQ0KPiA+ID4gPiAgICAgICAgIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNp ZnNfc2I7DQo+ID4gPiA+ICAgICAgICAgc3RydWN0IGNpZnNfYWlvX2N0eCAqY3R4Ow0KPiA+ID4g PiAgICAgICAgIHN0cnVjdCBpb3ZfaXRlciBzYXZlZF9mcm9tID0gKmZyb207DQo+ID4gPiA+ICsg ICAgICAgc2l6ZV90IGxlbiA9IGlvdl9pdGVyX2NvdW50KGZyb20pOw0KPiA+ID4gPiAgICAgICAg IGludCByYzsNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICAvKg0KPiA+ID4gPiAtICAgICAgICAq IEJCIC0gb3B0aW1pemUgdGhlIHdheSB3aGVuIHNpZ25pbmcgaXMgZGlzYWJsZWQuIFdlIGNhbiBk cm9wIHRoaXMNCj4gPiA+ID4gLSAgICAgICAgKiBleHRyYSBtZW1vcnktdG8tbWVtb3J5IGNvcHlp bmcgYW5kIHVzZSBpb3ZlYyBidWZmZXJzIGZvcg0KPiA+ID4gY29uc3RydWN0aW5nDQo+ID4gPiA+ IC0gICAgICAgICogd3JpdGUgcmVxdWVzdC4NCj4gPiA+ID4gKyAgICAgICAgKiBpb3ZfaXRlcl9n ZXRfcGFnZXNfYWxsb2MgZG9lc24ndCB3b3JrIHdpdGggSVRFUl9LVkVDLg0KPiA+ID4gPiArICAg ICAgICAqIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIHRvIG5vbi1kaXJlY3Qgd3JpdGUgZnVuY3Rp b24uDQo+ID4gPiA+ICsgICAgICAgICogdGhpcyBjb3VsZCBiZSBpbXByb3ZlZCBieSBnZXR0aW5n IHBhZ2VzIGRpcmVjdGx5IGluDQo+ID4gPiA+ICsgSVRFUl9LVkVDDQo+ID4gPiA+ICAgICAgICAg ICovDQo+ID4gPiA+ICsgICAgICAgaWYgKGRpcmVjdCAmJiBmcm9tLT50eXBlICYgSVRFUl9LVkVD KSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBjaWZzX2RiZyhGWUksICJ1c2Ugbm9uLWRpcmVj dCBjaWZzX3dyaXRldiBmb3Iga3ZlYyBJL09cbiIpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAg ZGlyZWN0ID0gZmFsc2U7DQo+ID4gPiA+ICsgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgICAg ICAgIHJjID0gZ2VuZXJpY193cml0ZV9jaGVja3MoaW9jYiwgZnJvbSk7DQo+ID4gPiA+ICAgICAg ICAgaWYgKHJjIDw9IDApDQo+ID4gPiA+IEBAIC0yNzQyLDEwICsyODM4LDE2IEBAIHNzaXplX3Qg Y2lmc191c2VyX3dyaXRldihzdHJ1Y3Qga2lvY2INCj4gPiA+ID4gKmlvY2IsIHN0cnVjdCBpb3Zf aXRlciAqZnJvbSkNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBjdHgtPnBvcyA9IGlvY2ItPmtp X3BvczsNCj4gPiA+ID4NCj4gPiA+ID4gLSAgICAgICByYyA9IHNldHVwX2Fpb19jdHhfaXRlcihj dHgsIGZyb20sIFdSSVRFKTsNCj4gPiA+ID4gLSAgICAgICBpZiAocmMpIHsNCj4gPiA+ID4gLSAg ICAgICAgICAgICAgIGtyZWZfcHV0KCZjdHgtPnJlZmNvdW50LCBjaWZzX2Fpb19jdHhfcmVsZWFz ZSk7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICByZXR1cm4gcmM7DQo+ID4gPiA+ICsgICAgICAg aWYgKGRpcmVjdCkgew0KPiA+ID4gPiArICAgICAgICAgICAgICAgY3R4LT5kaXJlY3RfaW8gPSB0 cnVlOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgY3R4LT5pdGVyID0gKmZyb207DQo+ID4gPiA+ ICsgICAgICAgICAgICAgICBjdHgtPmxlbiA9IGxlbjsNCj4gPiA+ID4gKyAgICAgICB9IGVsc2Ug ew0KPiA+ID4gPiArICAgICAgICAgICAgICAgcmMgPSBzZXR1cF9haW9fY3R4X2l0ZXIoY3R4LCBm cm9tLCBXUklURSk7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAocmMpIHsNCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAga3JlZl9wdXQoJmN0eC0+cmVmY291bnQsIGNpZnNfYWlv X2N0eF9yZWxlYXNlKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJj Ow0KPiA+ID4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiAgICAgICAgIH0NCj4gPiA+ID4N Cj4gPiA+ID4gICAgICAgICAvKiBncmFiIGEgbG9jayBoZXJlIGR1ZSB0byByZWFkIHJlc3BvbnNl IGhhbmRsZXJzIGNhbg0KPiA+ID4gPiBhY2Nlc3MgY3R4ICovIEBAIC0yNzk1LDYgKzI4OTcsMTYg QEAgc3NpemVfdA0KPiA+ID4gPiBjaWZzX3VzZXJfd3JpdGV2KHN0cnVjdCBraW9jYg0KPiA+ID4g KmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCj4gPiA+ID4gICAgICAgICByZXR1cm4gdG90 YWxfd3JpdHRlbjsNCj4gPiA+ID4gIH0NCj4gPiA+ID4NCj4gPiA+ID4gK3NzaXplX3QgY2lmc19k aXJlY3Rfd3JpdGV2KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyDQo+ID4gPiA+ ICsqZnJvbSkgew0KPiA+ID4gPiArICAgICAgIHJldHVybiBfX2NpZnNfd3JpdGV2KGlvY2IsIGZy b20sIHRydWUpOyB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gK3NzaXplX3QgY2lmc191c2VyX3dyaXRl dihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkgew0KPiA+ID4gPiAr ICAgICAgIHJldHVybiBfX2NpZnNfd3JpdGV2KGlvY2IsIGZyb20sIGZhbHNlKTsgfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICBzdGF0aWMgc3NpemVfdA0KPiA+ID4gPiAgY2lmc193cml0ZXYoc3RydWN0 IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pICB7DQo+ID4gPiA+IC0tDQo+ID4g PiA+IDIuNy40DQo+ID4gPiA+DQo+ID4gPg0KPiA+ID4gRGlkIHlvdSBtZWFzdXJlIHRoZSBwZXJm b3JtYW5jZSBiZW5lZml0IG9mIHVzaW5nIE9fRElSRUNUIHdpdGggeW91cg0KPiA+ID4gcGF0Y2hl cyBmb3Igbm9uLVJETUEgbW9kZT8NCj4gPg0KPiA+IEhlcmUgYXJlIHNvbWUgb2YgdGhlIHJlc3Vs dHMgbWVhc3VyZWQgb24gVENQL0lQIG92ZXIgSVBvSUIgNDBHIEluZmluaWJhbmQuDQo+IFBsZWFz ZSBub3RlIHRoYXQgSVBvSUIgaXMgZG9uZSBpbiBzb2Z0d2FyZSBzbyBpdCdzIHNsb3dlciB0aGFu IGEgNDBHIEV0aGVybmV0DQo+IE5JQy4NCj4gPg0KPiA+IEFsbCBzZXJ2ZXJzIGFyZSBydW5uaW5n IDIgWCBJbnRlbChSKSBYZW9uKFIpIENQVSBFNS0yNjUwIHYzIEAgMi4zMEdIei4NCj4gVGVzdGVk IG9uIEZJTyA2NGsgcmVhZCBvciB3cml0ZSB3aXRoIHF1ZXVlIGRlcHRocyAxIG9yIDE2LiBBbGwg dGhlIHRlc3RzIGFyZQ0KPiBydW5uaW5nIHdpdGggMSBGSU8gam9iLCBhbmQgd2l0aCAiZGlyZWN0 PTEiLg0KPiA+DQo+ID4gV2l0aG91dCBkaXJlY3QgSS9POg0KPiA+IHJlYWQgNjRrIGQxICAgICAx MTM2NjlLQi9zDQo+ID4gcmVhZCA2NGsgZDE2ICAgIDYxODQyOEtCL3MNCj4gPiB3cml0ZSA2NGsg ZDEgICAgMTM0OTExS0Ivcw0KPiA+IHdyaXRlIDY0ayBkMTYgICA0NTcwMDVLQi9zDQo+ID4NCj4g PiBXaXRoIGRpcmVjdCBJL086DQo+ID4gcmVhZCA2NGsgZDEgICAgIDEyNzEzNEtCL3MNCj4gPiBy ZWFkIDY0ayBkMTYgICAgNzE0NjI5S0Ivcw0KPiA+IHdyaXRlIDY0ayBkMSAgICAxMjkyNjhLQi9z DQo+ID4gd3JpdGUgNjRrIGQxNiAgIDQ2MTA1NEtCL3MNCj4gPg0KPiA+IERpcmVjdCBJL08gaW1w cm92ZW1lbnQ6DQo+ID4gcmVhZCA2NGsgZDEgICAgIDExJQ0KPiA+IHJlYWQgNjRrIGQxNiAgICAx NSUNCj4gPiB3cml0ZSA2NGsgZDEgICAgLTUlDQo+ICAgICAgICAgICAgICAgICAgICAgICBeXl4N Cj4gVGhpcyBpcyBzdHJhbmdlLiBJcyBpdCBjb25zaXN0ZW50IGFjcm9zcyBtdWx0aXBsZSBydW5z Pw0KPiANCj4gPiB3cml0ZSA2NGsgZDE2ICAgMSUNCj4gDQo+IEdvb2QgcmVhZCBwZXJmb3JtYW5j ZSBpbXByb3ZlbWVudHMgb3ZlcmFsbCBhbmQgaXQgc2VlbXMgd3JpdGUNCj4gcGVyZm9ybWFuY2Ug cmVzdWx0cyBuZWVkIG1vcmUgaW52ZXN0aWdhdGlvbnMuDQoNCk15IGFwb2xvZ2llcywgSSBmb3Vu ZCBvdXQgdGhhdCBJIHdhcyBkb2luZyBpdCB3cm9uZyBmb3IgY29tcGFyaW5nIHdyaXRlIHRlc3Rz LiBUaGV5IHdlcmUgYWN0dWFsbHkgYWxsIGRpcmVjdCBJL08sIDUlIGRpZmZlcmVuY2UgaXMgZHVl IHRvIGJlbmNobWFyayB2YXJpYXRpb24gYXQgdGhlIHRpbWUgb2YgdGVzdHMuDQoNCkhlcmUgYXJl IHRoZSByZS1ydW4gKDMgdGltZXMsIGVhY2ggdGltZSBmb3IgOTAgc2Vjb25kcykgZm9yIDY0ayB3 cml0ZS4gVGhpcyB0aW1lLCBMaW51eCBjbGllbnQsIFdpbmRvd3Mgc2VydmVyIGFuZCA0MEcgSUIg c3dpdGNoIGFyZSByZWJvb3RlZCBwcmlvciB0byB0ZXN0cy4NCg0KZGlyZWN0IEkvTw0KDQo2NGsg d3JpdGUgZDE2DQo0NzBtL3MNCjYxNm0vcw0KNDc5bS9zDQoNCjY0ayB3cml0ZSBkMQ0KMTc2bS9z DQoxNjBtL3MNCjE1Nm0vcw0KDQoNCndpdGhvdXQgZGlyZWN0IEkvTw0KDQo2NGsgd3JpdGUgZDE2 DQo1MzRtL3MNCjQwNW0vcw0KNDA2bS9zDQoNCjY0ayB3cml0ZSBkMQ0KMTQ2bS9zDQoxNDdtL3MN CjE0N20vcw0KDQpJJ20gbm90IHN1cmUgd2h5IHRlc3QgcmVzdWx0cyBhdCBkZXB0aCAxNiBhcmUg anVtcHksIGJ1dCBvdmVyYWxsIHRoZXJlIGFyZSBpbXByb3ZlbWVudHMgaW4gZGlyZWN0IEkvTyBm b3IgNjRrIHdyaXRlcy4NCg==