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 E9A1AC43441 for ; Thu, 29 Nov 2018 02:22:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6B93920832 for ; Thu, 29 Nov 2018 02:22:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microsoft.com header.i=@microsoft.com header.b="iHRjvrxN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B93920832 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 S1727514AbeK2N0i (ORCPT ); Thu, 29 Nov 2018 08:26:38 -0500 Received: from mail-eopbgr780125.outbound.protection.outlook.com ([40.107.78.125]:3330 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727026AbeK2N0i (ORCPT ); Thu, 29 Nov 2018 08:26:38 -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=LF9Ja02V7tIPzXBLU+lPCcuGIsj4joP3sjW/PELPw4Y=; b=iHRjvrxNin+gWb/2YovddcAmgxAxptPGn+BcLzg0DwWnI+YaIu0Kd92br5j7LWPIE3LmE6OcSniztQBpo1gw63VZaRnI3ybx0iXfQx1f/JEtaotLVyALxhZLcQOAUVUIi3TQ44MjNeWCgqeKkkuHL/saCBh3kJpYbiA6UrxTveI= Received: from DM5PR21MB0185.namprd21.prod.outlook.com (10.173.173.136) by DM5PR21MB0843.namprd21.prod.outlook.com (10.173.172.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.4; Thu, 29 Nov 2018 02:19:58 +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; Thu, 29 Nov 2018 02:19:58 +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/QAgBL5jyA= Date: Thu, 29 Nov 2018 02:19:58 +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;DM5PR21MB0843;6:Fqug4OXsBCv0AVTsbx1xfZqM7QEBWRTzBe0kIJ44frDUAB4lLy6zKOW9tBQtkdKGfGnS5h6vi1DZcDufOQ5bauc9YliVoTCQrXectc+KGm/ZzJ5aZQVjG/q0ftv6Fqr7OFZGECF/Jd078hj0rbKrLyl1F5PpnlIdYmHUHWXdYbifwN7Kh8w1mWwSg/39NDlGTL+h+RhRJ8/drBAwRtP61c0l1R3CmzmNBwfD2Zh5WTHwh1GL+T68vzFOQb8VlXBRTbZsFZT9MCxHO3HR8Al36G2c4uNFXQiNpDBeXAW0cU/IrmXZgCfPJQI4RSWmhVNINDJaHccqTgY9pGSiRj8ynVo+VwtynkoYucVmQpkPh4frn3Uir82h2bp5y6fMmGNojAHpvUN16ezPErXxMkS6gl9Yy+v6Buh3l9VKZPHIje2gLqBpMF4/n4/dYZmPsUM7YdnTYTDpb7QnuSjJ3kE9Bg==;5:8uI+KE/5qt1ojIGQcDdHKmWrf4g/0htqV34mlsnYt56TSty1tlNu+Ul+Tbtexi9Jz54tP0PqgEYVkfQfB20xdPAQ/n6l5nmjQjrxqbqDphoZmrouI1d7NjL7O8uAvksB1jNCAYGY29vx/aVRYS98SeufNuClMtUmpH5A5s72YyI=;7:SlwFxXXcONaJhP/jH/8PgaTFp2xqWy/1nWtr29+lubVJZ4NLhKyfO5iKPGeVSoZwUd2/U0dyspzjPJdNCQDJ7tIwxuq8S1TqBf5sGcAc4YTZ6u0p9YJV5VbVrnVtiC5OVzDDlRiyCAC+zwf/jnqzYA== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: cd07f8ba-300d-464d-985f-08d655a12925 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:DM5PR21MB0843; x-ms-traffictypediagnostic: DM5PR21MB0843: 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)(8121501046)(5005006)(3231453)(999002)(944501447)(2018427008)(3002001)(93006095)(93001095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:DM5PR21MB0843;BCL:0;PCL:0;RULEID:;SRVR:DM5PR21MB0843; x-forefront-prvs: 0871917CDA x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(396003)(376002)(346002)(39860400002)(366004)(136003)(69234005)(189003)(199004)(8676002)(14454004)(2906002)(71190400001)(66066001)(476003)(11346002)(446003)(3846002)(6116002)(5660300001)(4744004)(105586002)(7736002)(106356001)(478600001)(229853002)(486006)(33656002)(305945005)(71200400001)(74316002)(99286004)(54906003)(86362001)(10290500003)(97736004)(14444005)(76176011)(6916009)(55016002)(316002)(1411001)(86612001)(8936002)(6436002)(6246003)(22452003)(39060400002)(10090500001)(81156014)(6506007)(256004)(9686003)(53946003)(53936002)(7696005)(8990500004)(25786009)(4326008)(26005)(81166006)(186003)(102836004)(68736007);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR21MB0843;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: 3+zCXcFDAAAP1hWBoqLCBZ4ujZG40wjnnX+Hx/caNCZDStT3h8YpREIebOzAJMZJt05AHvpHq4gschTtS1KdYiCsdwK+nutciYZcVlGKui+ch5DcyajIfBoGmxAK9jPDNyJhwMS2L0fN0p6JJvrh9lfXSp7K5Nrdypkujv8cH+qiCbWGF9qqp7xJcd1uG/bMgujXbm1/mMOftLGbbBfJzkA0K5UPGGAysnT7+8QWGmMIKqVynxjo22UmRk1FxFt/AXQdiZyEOIJ0/jXPaA6ebE0xQFKUtPJz+1kP1LvN25Vo1IhDZx9bfC78tqOr8+/QyVhRC5w2tOSbLrSJfPWN56+1vm1p0r8kAQW1JCknhmc= 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: cd07f8ba-300d-464d-985f-08d655a12925 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2018 02:19:58.6447 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR21MB0843 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBTdWJqZWN0OiBSZTogW1BhdGNoIHY0IDIvM10gQ0lGUzogQWRkIHN1cHBvcnQgZm9yIGRpcmVj dCBJL08gd3JpdGUNCj4gDQo+INGB0YAsIDMxINC+0LrRgi4gMjAxOCDQsy4g0LIgMTU6MjYsIExv bmcgTGkgPGxvbmdsaUBsaW51eG9uaHlwZXJ2LmNvbT46DQo+ID4NCj4gPiBGcm9tOiBMb25nIExp IDxsb25nbGlAbWljcm9zb2Z0LmNvbT4NCj4gPg0KPiA+IFdpdGggZGlyZWN0IEkvTyB3cml0ZSwg dXNlciBzdXBwbGllZCBidWZmZXJzIGFyZSBwaW5uZWQgdG8gdGhlIG1lbW9yeQ0KPiA+IGFuZCBk YXRhIGFyZSB0cmFuc2ZlcnJlZCBkaXJlY3RseSBmcm9tIHVzZXIgYnVmZmVycyB0byB0aGUgdHJh bnNwb3J0IGxheWVyLg0KPiA+DQo+ID4gQ2hhbmdlIGluIHYzOiBhZGQgc3VwcG9ydCBmb3Iga2Vy bmVsIEFJTw0KPiA+DQo+ID4gQ2hhbmdlIGluIHY0Og0KPiA+IFJlZmFjdG9yIGNvbW1vbiB3cml0 ZSBjb2RlIHRvIF9fY2lmc193cml0ZXYgZm9yIGRpcmVjdCBhbmQgbm9uLWRpcmVjdCBJL08uDQo+ ID4gUmV0cnkgb24gZGlyZWN0IEkvTyBmYWlsdXJlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTog TG9uZyBMaSA8bG9uZ2xpQG1pY3Jvc29mdC5jb20+DQo+ID4gLS0tDQo+ID4gIGZzL2NpZnMvY2lm c2ZzLmggfCAgIDEgKw0KPiA+ICBmcy9jaWZzL2ZpbGUuYyAgIHwgMTk0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+IC0tLS0tLS0tDQo+ID4gIDIgZmls ZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4g ZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2ZzLmggYi9mcy9jaWZzL2NpZnNmcy5oIGluZGV4DQo+ ID4gN2ZiYTlhYS4uZTljNTEwMyAxMDA2NDQNCj4gPiAtLS0gYS9mcy9jaWZzL2NpZnNmcy5oDQo+ ID4gKysrIGIvZnMvY2lmcy9jaWZzZnMuaA0KPiA+IEBAIC0xMDUsNiArMTA1LDcgQEAgZXh0ZXJu IHNzaXplX3QgY2lmc191c2VyX3JlYWR2KHN0cnVjdCBraW9jYiAqaW9jYiwNCj4gPiBzdHJ1Y3Qg aW92X2l0ZXIgKnRvKTsgIGV4dGVybiBzc2l6ZV90IGNpZnNfZGlyZWN0X3JlYWR2KHN0cnVjdCBr aW9jYg0KPiA+ICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKTsgIGV4dGVybiBzc2l6ZV90IGNp ZnNfc3RyaWN0X3JlYWR2KHN0cnVjdA0KPiA+IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIg KnRvKTsgIGV4dGVybiBzc2l6ZV90DQo+ID4gY2lmc191c2VyX3dyaXRldihzdHJ1Y3Qga2lvY2Ig KmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSk7DQo+ID4gK2V4dGVybiBzc2l6ZV90IGNpZnNf ZGlyZWN0X3dyaXRldihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlcg0KPiA+ICsq ZnJvbSk7DQo+ID4gIGV4dGVybiBzc2l6ZV90IGNpZnNfc3RyaWN0X3dyaXRldihzdHJ1Y3Qga2lv Y2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlcg0KPiA+ICpmcm9tKTsgIGV4dGVybiBpbnQgY2lmc19s b2NrKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsNCj4gPiBleHRlcm4g aW50IGNpZnNfZnN5bmMoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGludCk7IGRpZmYg LS1naXQNCj4gPiBhL2ZzL2NpZnMvZmlsZS5jIGIvZnMvY2lmcy9maWxlLmMgaW5kZXggZGFhYjg3 OC4uMWE0MWMwNCAxMDA2NDQNCj4gPiAtLS0gYS9mcy9jaWZzL2ZpbGUuYw0KPiA+ICsrKyBiL2Zz L2NpZnMvZmlsZS5jDQo+ID4gQEAgLTI1MjQsNiArMjUyNCw1NSBAQCB3ZGF0YV9maWxsX2Zyb21f aW92ZWMoc3RydWN0IGNpZnNfd3JpdGVkYXRhDQo+ID4gKndkYXRhLCBzdHJ1Y3QgaW92X2l0ZXIg KmZyb20sICB9DQo+ID4NCj4gPiAgc3RhdGljIGludA0KPiA+ICtjaWZzX3Jlc2VuZF93ZGF0YShz dHJ1Y3QgY2lmc193cml0ZWRhdGEgKndkYXRhLCBzdHJ1Y3QgbGlzdF9oZWFkDQo+ID4gKyp3ZGF0 YV9saXN0LCBzdHJ1Y3QgY2lmc19haW9fY3R4ICpjdHgpIHsNCj4gPiArICAgICAgIGludCB3YWl0 X3JldHJ5ID0gMDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCB3c2l6ZSwgY3JlZGl0czsNCj4g PiArICAgICAgIGludCByYzsNCj4gPiArICAgICAgIHN0cnVjdCBUQ1BfU2VydmVyX0luZm8gKnNl cnZlciA9DQo+ID4gK3RsaW5rX3Rjb24od2RhdGEtPmNmaWxlLT50bGluayktPnNlcy0+c2VydmVy Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBUcnkgdG8gcmVzZW5kIHRo aXMgd2RhdGEsIHdhaXRpbmcgZm9yIGNyZWRpdHMgdXAgdG8gMyBzZWNvbmRzLg0KPiA+ICsgICAg ICAgICogTm90ZTogd2UgYXJlIGF0dGVtcHRpbmcgdG8gcmVzZW5kIHRoZSB3aG9sZSB3ZGF0YSBu b3QgaW4NCj4gc2VnbWVudHMNCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgZG8gew0KPiA+ ICsgICAgICAgICAgICAgICByYyA9IHNlcnZlci0+b3BzLT53YWl0X210dV9jcmVkaXRzKHNlcnZl ciwNCj4gPiArIHdkYXRhLT5ieXRlcywgJndzaXplLCAmY3JlZGl0cyk7DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgICBpZiAocmMpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAod3NpemUgPCB3ZGF0YS0+Ynl0ZXMpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBhZGRfY3JlZGl0c19hbmRfd2FrZV9pZihzZXJ2 ZXIsIGNyZWRpdHMsIDApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1zbGVlcCgxMDAw KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3JldHJ5Kys7DQo+ID4gKyAgICAg ICAgICAgICAgIH0NCj4gPiArICAgICAgIH0gd2hpbGUgKHdzaXplIDwgd2RhdGEtPmJ5dGVzICYm IHdhaXRfcmV0cnkgPCAzKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAod3NpemUgPCB3ZGF0YS0+ Ynl0ZXMpIHsNCj4gPiArICAgICAgICAgICAgICAgcmMgPSAtRUJVU1k7DQo+ID4gKyAgICAgICAg ICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHJjID0g LUVBR0FJTjsNCj4gPiArICAgICAgIHdoaWxlIChyYyA9PSAtRUFHQUlOKQ0KPiA+ICsgICAgICAg ICAgICAgICBpZiAoIXdkYXRhLT5jZmlsZS0+aW52YWxpZEhhbmRsZSB8fA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIShyYyA9IGNpZnNfcmVvcGVuX2ZpbGUod2RhdGEtPmNmaWxlLCBmYWxzZSkp KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJjID0gc2VydmVyLT5vcHMtPmFzeW5jX3dy aXRldih3ZGF0YSwNCj4gPiArDQo+ID4gKyBjaWZzX3VuY2FjaGVkX3dyaXRlZGF0YV9yZWxlYXNl KTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIXJjKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGxp c3RfYWRkX3RhaWwoJndkYXRhLT5saXN0LCB3ZGF0YV9saXN0KTsNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIDA7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgYWRkX2NyZWRp dHNfYW5kX3dha2VfaWYoc2VydmVyLCB3ZGF0YS0+Y3JlZGl0cywgMCk7DQo+ID4gK291dDoNCj4g PiArICAgICAgIGtyZWZfcHV0KCZ3ZGF0YS0+cmVmY291bnQsIGNpZnNfdW5jYWNoZWRfd3JpdGVk YXRhX3JlbGVhc2UpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByYzsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICBjaWZzX3dyaXRlX2Zyb21faXRlcihsb2ZmX3Qgb2Zm c2V0LCBzaXplX3QgbGVuLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGNpZnNGaWxlSW5mbyAqb3Blbl9maWxlLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IsIHN0cnVjdCBsaXN0X2hlYWQN Cj4gPiAqd2RhdGFfbGlzdCwgQEAgLTI1MzcsNiArMjU4Niw4IEBAIGNpZnNfd3JpdGVfZnJvbV9p dGVyKGxvZmZfdCBvZmZzZXQsDQo+IHNpemVfdCBsZW4sIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwN Cj4gPiAgICAgICAgIGxvZmZfdCBzYXZlZF9vZmZzZXQgPSBvZmZzZXQ7DQo+ID4gICAgICAgICBw aWRfdCBwaWQ7DQo+ID4gICAgICAgICBzdHJ1Y3QgVENQX1NlcnZlcl9JbmZvICpzZXJ2ZXI7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2V2ZWM7DQo+ID4gKyAgICAgICBzaXplX3Qgc3Rh cnQ7DQo+ID4NCj4gPiAgICAgICAgIGlmIChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNf TU9VTlRfUldQSURGT1JXQVJEKQ0KPiA+ICAgICAgICAgICAgICAgICBwaWQgPSBvcGVuX2ZpbGUt PnBpZDsNCj4gPiBAQCAtMjU1MywzOCArMjYwNCw3NCBAQCBjaWZzX3dyaXRlX2Zyb21faXRlcihs b2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbGVuLA0KPiBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sDQo+ID4g ICAgICAgICAgICAgICAgIGlmIChyYykNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICBucl9wYWdlcyA9IGdldF9udW1wYWdlcyh3c2l6 ZSwgbGVuLCAmY3VyX2xlbik7DQo+ID4gLSAgICAgICAgICAgICAgIHdkYXRhID0gY2lmc193cml0 ZWRhdGFfYWxsb2MobnJfcGFnZXMsDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChjdHgtPmRpcmVj dF9pbykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGN1cl9sZW4gPSBpb3ZfaXRlcl9n ZXRfcGFnZXNfYWxsb2MoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t LCAmcGFnZXZlYywgd3NpemUsICZzdGFydCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg aWYgKGN1cl9sZW4gPCAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aWZzX2RiZyhWRlMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJkaXJlY3Rfd3JpdGV2IGNvdWxkbid0IGdldCB1c2VyIHBhZ2VzICINCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihyYz0lemQpIGl0ZXIgdHlwZSAlZCBpb3Zf b2Zmc2V0ICV6ZCBjb3VudCINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAlemRcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN1cl9sZW4sIGZyb20tPnR5cGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZyb20tPmlvdl9vZmZzZXQsIGZyb20tPmNvdW50KTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfc3RhY2soKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpb3ZfaXRlcl9hZHZhbmNlKGZyb20sIGN1cl9s ZW4pOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdlcyA9IChjdXJf bGVuICsgc3RhcnQgKyBQQUdFX1NJWkUgLSAxKSAvDQo+ID4gKyBQQUdFX1NJWkU7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHdkYXRhID0gY2lmc193cml0ZWRhdGFfZGlyZWN0 X2FsbG9jKHBhZ2V2ZWMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2lmc191bmNhY2hlZF93cml0ZXZfY29tcGxldGUpOw0KPiA+IC0gICAgICAgICAg ICAgICBpZiAoIXdkYXRhKSB7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAtRU5P TUVNOw0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lm KHNlcnZlciwgY3JlZGl0cywgMCk7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gLSAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo IXdkYXRhKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IC1FTk9N RU07DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY3JlZGl0c19hbmRf d2FrZV9pZihzZXJ2ZXIsIGNyZWRpdHMsIDApOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+DQo+ID4g LSAgICAgICAgICAgICAgIHJjID0gY2lmc193cml0ZV9hbGxvY2F0ZV9wYWdlcyh3ZGF0YS0+cGFn ZXMsIG5yX3BhZ2VzKTsNCj4gPiAtICAgICAgICAgICAgICAgaWYgKHJjKSB7DQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAga2ZyZWUod2RhdGEpOw0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3JlZGl0cywgMCk7DQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gLSAgICAgICAgICAgICAgIH0NCj4gPg0K PiA+IC0gICAgICAgICAgICAgICBudW1fcGFnZXMgPSBucl9wYWdlczsNCj4gPiAtICAgICAgICAg ICAgICAgcmMgPSB3ZGF0YV9maWxsX2Zyb21faW92ZWMod2RhdGEsIGZyb20sICZjdXJfbGVuLCAm bnVtX3BhZ2VzKTsNCj4gPiAtICAgICAgICAgICAgICAgaWYgKHJjKSB7DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5yX3BhZ2VzOyBpKyspDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRfcGFnZSh3ZGF0YS0+cGFnZXNbaV0pOw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgIGtmcmVlKHdkYXRhKTsNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICBhZGRfY3JlZGl0c19hbmRfd2FrZV9pZihzZXJ2ZXIsIGNyZWRpdHMsIDApOw0K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+IC0gICAgICAgICAgICAgICB9 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgd2RhdGEtPnBhZ2Vfb2Zmc2V0ID0gc3RhcnQ7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgd2RhdGEtPnRhaWxzeiA9DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdlcyA+IDEgPw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfbGVuIC0gKFBBR0VfU0laRSAtIHN0YXJ0 KSAtDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChucl9wYWdl cyAtIDIpICogUEFHRV9TSVpFIDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3VyX2xlbjsNCj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBucl9wYWdlcyA9IGdldF9udW1wYWdlcyh3c2l6ZSwgbGVuLCAm Y3VyX2xlbik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgd2RhdGEgPSBjaWZzX3dyaXRl ZGF0YV9hbGxvYyhucl9wYWdlcywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaWZzX3VuY2FjaGVkX3dyaXRldl9jb21wbGV0ZSk7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCF3ZGF0YSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmMgPSAtRU5PTUVNOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWRkX2NyZWRpdHNfYW5kX3dha2VfaWYoc2VydmVyLCBjcmVkaXRzLCAwKTsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAvKg0KPiA+IC0gICAgICAgICAg ICAgICAgKiBCcmluZyBucl9wYWdlcyBkb3duIHRvIHRoZSBudW1iZXIgb2YgcGFnZXMgd2UgYWN0 dWFsbHkgdXNlZCwNCj4gPiAtICAgICAgICAgICAgICAgICogYW5kIGZyZWUgYW55IHBhZ2VzIHRo YXQgd2UgZGlkbid0IHVzZS4NCj4gPiAtICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAgICAg ICAgICAgIGZvciAoIDsgbnJfcGFnZXMgPiBudW1fcGFnZXM7IG5yX3BhZ2VzLS0pDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2Uod2RhdGEtPnBhZ2VzW25yX3BhZ2VzIC0gMV0p Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJjID0gY2lmc193cml0ZV9hbGxvY2F0ZV9w YWdlcyh3ZGF0YS0+cGFnZXMsIG5yX3BhZ2VzKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAocmMpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtmcmVlKHdk YXRhKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2Fu ZF93YWtlX2lmKHNlcnZlciwgY3JlZGl0cywgMCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG51bV9wYWdlcyA9IG5yX3BhZ2VzOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJjID0gd2RhdGFfZmlsbF9mcm9tX2lvdmVjKHdkYXRhLCBm cm9tLCAmY3VyX2xlbiwNCj4gJm51bV9wYWdlcyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKHJjKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkg PSAwOyBpIDwgbnJfcGFnZXM7IGkrKykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHV0X3BhZ2Uod2RhdGEtPnBhZ2VzW2ldKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGtmcmVlKHdkYXRhKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkZF9jcmVkaXRzX2FuZF93YWtlX2lmKHNlcnZlciwgY3JlZGl0cywgMCk7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8q DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogQnJpbmcgbnJfcGFnZXMgZG93biB0byB0 aGUgbnVtYmVyIG9mIHBhZ2VzIHdlIGFjdHVhbGx5DQo+IHVzZWQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICogYW5kIGZyZWUgYW55IHBhZ2VzIHRoYXQgd2UgZGlkbid0IHVzZS4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKCA7IG5yX3BhZ2VzID4gbnVtX3BhZ2VzOyBucl9wYWdlcy0tKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2Uod2RhdGEtPnBhZ2VzW25yX3BhZ2VzIC0g MV0pOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB3ZGF0YS0+dGFpbHN6ID0g Y3VyX2xlbiAtICgobnJfcGFnZXMgLSAxKSAqIFBBR0VfU0laRSk7DQo+ID4gKyAgICAgICAgICAg ICAgIH0NCj4gPg0KPiA+ICAgICAgICAgICAgICAgICB3ZGF0YS0+c3luY19tb2RlID0gV0JfU1lO Q19BTEw7DQo+ID4gICAgICAgICAgICAgICAgIHdkYXRhLT5ucl9wYWdlcyA9IG5yX3BhZ2VzOyBA QCAtMjU5Myw3ICsyNjgwLDYgQEANCj4gPiBjaWZzX3dyaXRlX2Zyb21faXRlcihsb2ZmX3Qgb2Zm c2V0LCBzaXplX3QgbGVuLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sDQo+ID4gICAgICAgICAgICAg ICAgIHdkYXRhLT5waWQgPSBwaWQ7DQo+ID4gICAgICAgICAgICAgICAgIHdkYXRhLT5ieXRlcyA9 IGN1cl9sZW47DQo+ID4gICAgICAgICAgICAgICAgIHdkYXRhLT5wYWdlc3ogPSBQQUdFX1NJWkU7 DQo+ID4gLSAgICAgICAgICAgICAgIHdkYXRhLT50YWlsc3ogPSBjdXJfbGVuIC0gKChucl9wYWdl cyAtIDEpICogUEFHRV9TSVpFKTsNCj4gPiAgICAgICAgICAgICAgICAgd2RhdGEtPmNyZWRpdHMg PSBjcmVkaXRzOw0KPiA+ICAgICAgICAgICAgICAgICB3ZGF0YS0+Y3R4ID0gY3R4Ow0KPiA+ICAg ICAgICAgICAgICAgICBrcmVmX2dldCgmY3R4LT5yZWZjb3VudCk7IEBAIC0yNjY4LDEzICsyNzU0 LDE3IEBADQo+ID4gc3RhdGljIHZvaWQgY29sbGVjdF91bmNhY2hlZF93cml0ZV9kYXRhKHN0cnVj dCBjaWZzX2Fpb19jdHggKmN0eCkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElOSVRfTElTVF9IRUFEKCZ0bXBfbGlzdCk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X2RlbF9pbml0KCZ3ZGF0YS0+bGlzdCk7DQo+ID4NCj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvdl9pdGVyX2FkdmFuY2UoJnRtcF9mcm9tLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+ZGlyZWN0X2lvKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IGNpZnNfcmVzZW5kX3dk YXRhKHdkYXRhLCAmdG1wX2xpc3QsIGN0eCk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW92X2l0ZXJfYWR2YW5jZSgmdG1wX2Zyb20sDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdkYXRhLT5vZmZzZXQgLQ0KPiA+IGN0eC0+cG9z KTsNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMgPSBjaWZzX3dy aXRlX2Zyb21faXRlcih3ZGF0YS0+b2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYyA9DQo+ID4gKyBjaWZzX3dyaXRlX2Zyb21faXRlcih3ZGF0YS0+ b2Zmc2V0LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdkYXRhLT5ieXRlcywgJnRtcF9mcm9tLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y2ZpbGUsIGNpZnNfc2IsICZ0bXBfbGlzdCwN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgp Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X3NwbGljZSgmdG1wX2xpc3QsICZjdHgtPmxp c3QpOw0KPiA+DQo+ID4gQEAgLTI2ODcsOCArMjc3Nyw5IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3Rf dW5jYWNoZWRfd3JpdGVfZGF0YShzdHJ1Y3QNCj4gY2lmc19haW9fY3R4ICpjdHgpDQo+ID4gICAg ICAgICAgICAgICAgIGtyZWZfcHV0KCZ3ZGF0YS0+cmVmY291bnQsIGNpZnNfdW5jYWNoZWRfd3Jp dGVkYXRhX3JlbGVhc2UpOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gLSAgICAgICBmb3IgKGkg PSAwOyBpIDwgY3R4LT5ucGFnZXM7IGkrKykNCj4gPiAtICAgICAgICAgICAgICAgcHV0X3BhZ2Uo Y3R4LT5idltpXS5idl9wYWdlKTsNCj4gPiArICAgICAgIGlmICghY3R4LT5kaXJlY3RfaW8pDQo+ ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm5wYWdlczsgaSsrKQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlKGN0eC0+YnZbaV0uYnZfcGFnZSk7DQo+ ID4NCj4gPiAgICAgICAgIGNpZnNfc3RhdHNfYnl0ZXNfd3JpdHRlbih0Y29uLCBjdHgtPnRvdGFs X2xlbik7DQo+ID4gICAgICAgICBzZXRfYml0KENJRlNfSU5PX0lOVkFMSURfTUFQUElORywNCj4g PiAmQ0lGU19JKGRlbnRyeS0+ZF9pbm9kZSktPmZsYWdzKTsgQEAgLTI3MDMsNyArMjc5NCw3IEBA IHN0YXRpYyB2b2lkDQo+IGNvbGxlY3RfdW5jYWNoZWRfd3JpdGVfZGF0YShzdHJ1Y3QgY2lmc19h aW9fY3R4ICpjdHgpDQo+ID4gICAgICAgICAgICAgICAgIGNvbXBsZXRlKCZjdHgtPmRvbmUpOw0K PiA+ICB9DQo+ID4NCj4gPiAtc3NpemVfdCBjaWZzX3VzZXJfd3JpdGV2KHN0cnVjdCBraW9jYiAq aW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKQ0KPiA+ICtzdGF0aWMgc3NpemVfdCBfX2NpZnNf d3JpdGV2KHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyDQo+ID4gKypmcm9tLCBi b29sIGRpcmVjdCkNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IGZpbGUgKmZpbGUgPSBpb2Ni LT5raV9maWxwOw0KPiA+ICAgICAgICAgc3NpemVfdCB0b3RhbF93cml0dGVuID0gMDsNCj4gPiBA QCAtMjcxMiwxMyArMjgwMywxOCBAQCBzc2l6ZV90IGNpZnNfdXNlcl93cml0ZXYoc3RydWN0IGtp b2NiICppb2NiLA0KPiBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pDQo+ID4gICAgICAgICBzdHJ1Y3Qg Y2lmc19zYl9pbmZvICpjaWZzX3NiOw0KPiA+ICAgICAgICAgc3RydWN0IGNpZnNfYWlvX2N0eCAq Y3R4Ow0KPiA+ICAgICAgICAgc3RydWN0IGlvdl9pdGVyIHNhdmVkX2Zyb20gPSAqZnJvbTsNCj4g PiArICAgICAgIHNpemVfdCBsZW4gPSBpb3ZfaXRlcl9jb3VudChmcm9tKTsNCj4gPiAgICAgICAg IGludCByYzsNCj4gPg0KPiA+ICAgICAgICAgLyoNCj4gPiAtICAgICAgICAqIEJCIC0gb3B0aW1p emUgdGhlIHdheSB3aGVuIHNpZ25pbmcgaXMgZGlzYWJsZWQuIFdlIGNhbiBkcm9wIHRoaXMNCj4g PiAtICAgICAgICAqIGV4dHJhIG1lbW9yeS10by1tZW1vcnkgY29weWluZyBhbmQgdXNlIGlvdmVj IGJ1ZmZlcnMgZm9yDQo+IGNvbnN0cnVjdGluZw0KPiA+IC0gICAgICAgICogd3JpdGUgcmVxdWVz dC4NCj4gPiArICAgICAgICAqIGlvdl9pdGVyX2dldF9wYWdlc19hbGxvYyBkb2Vzbid0IHdvcmsg d2l0aCBJVEVSX0tWRUMuDQo+ID4gKyAgICAgICAgKiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayB0 byBub24tZGlyZWN0IHdyaXRlIGZ1bmN0aW9uLg0KPiA+ICsgICAgICAgICogdGhpcyBjb3VsZCBi ZSBpbXByb3ZlZCBieSBnZXR0aW5nIHBhZ2VzIGRpcmVjdGx5IGluDQo+ID4gKyBJVEVSX0tWRUMN Cj4gPiAgICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKGRpcmVjdCAmJiBmcm9tLT50eXBlICYg SVRFUl9LVkVDKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNpZnNfZGJnKEZZSSwgInVzZSBub24t ZGlyZWN0IGNpZnNfd3JpdGV2IGZvciBrdmVjIEkvT1xuIik7DQo+ID4gKyAgICAgICAgICAgICAg IGRpcmVjdCA9IGZhbHNlOw0KPiA+ICsgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICByYyA9IGdl bmVyaWNfd3JpdGVfY2hlY2tzKGlvY2IsIGZyb20pOw0KPiA+ICAgICAgICAgaWYgKHJjIDw9IDAp DQo+ID4gQEAgLTI3NDIsMTAgKzI4MzgsMTYgQEAgc3NpemVfdCBjaWZzX3VzZXJfd3JpdGV2KHN0 cnVjdCBraW9jYiAqaW9jYiwNCj4gPiBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pDQo+ID4NCj4gPiAg ICAgICAgIGN0eC0+cG9zID0gaW9jYi0+a2lfcG9zOw0KPiA+DQo+ID4gLSAgICAgICByYyA9IHNl dHVwX2Fpb19jdHhfaXRlcihjdHgsIGZyb20sIFdSSVRFKTsNCj4gPiAtICAgICAgIGlmIChyYykg ew0KPiA+IC0gICAgICAgICAgICAgICBrcmVmX3B1dCgmY3R4LT5yZWZjb3VudCwgY2lmc19haW9f Y3R4X3JlbGVhc2UpOw0KPiA+IC0gICAgICAgICAgICAgICByZXR1cm4gcmM7DQo+ID4gKyAgICAg ICBpZiAoZGlyZWN0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGN0eC0+ZGlyZWN0X2lvID0gdHJ1 ZTsNCj4gPiArICAgICAgICAgICAgICAgY3R4LT5pdGVyID0gKmZyb207DQo+ID4gKyAgICAgICAg ICAgICAgIGN0eC0+bGVuID0gbGVuOw0KPiA+ICsgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICAgICAgICAgcmMgPSBzZXR1cF9haW9fY3R4X2l0ZXIoY3R4LCBmcm9tLCBXUklURSk7DQo+ID4g KyAgICAgICAgICAgICAgIGlmIChyYykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGty ZWZfcHV0KCZjdHgtPnJlZmNvdW50LCBjaWZzX2Fpb19jdHhfcmVsZWFzZSk7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4g ICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgIC8qIGdyYWIgYSBsb2NrIGhlcmUgZHVlIHRvIHJl YWQgcmVzcG9uc2UgaGFuZGxlcnMgY2FuIGFjY2Vzcw0KPiA+IGN0eCAqLyBAQCAtMjc5NSw2ICsy ODk3LDE2IEBAIHNzaXplX3QgY2lmc191c2VyX3dyaXRldihzdHJ1Y3Qga2lvY2INCj4gKmlvY2Is IHN0cnVjdCBpb3ZfaXRlciAqZnJvbSkNCj4gPiAgICAgICAgIHJldHVybiB0b3RhbF93cml0dGVu Ow0KPiA+ICB9DQo+ID4NCj4gPiArc3NpemVfdCBjaWZzX2RpcmVjdF93cml0ZXYoc3RydWN0IGtp b2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pDQo+ID4gK3sNCj4gPiArICAgICAgIHJl dHVybiBfX2NpZnNfd3JpdGV2KGlvY2IsIGZyb20sIHRydWUpOyB9DQo+ID4gKw0KPiA+ICtzc2l6 ZV90IGNpZnNfdXNlcl93cml0ZXYoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIg KmZyb20pIHsNCj4gPiArICAgICAgIHJldHVybiBfX2NpZnNfd3JpdGV2KGlvY2IsIGZyb20sIGZh bHNlKTsgfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHNzaXplX3QNCj4gPiAgY2lmc193cml0ZXYoc3Ry dWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pICB7DQo+ID4gLS0NCj4gPiAy LjcuNA0KPiA+DQo+IA0KPiBEaWQgeW91IG1lYXN1cmUgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXQg b2YgdXNpbmcgT19ESVJFQ1Qgd2l0aCB5b3VyDQo+IHBhdGNoZXMgZm9yIG5vbi1SRE1BIG1vZGU/ DQoNCkhlcmUgYXJlIHNvbWUgb2YgdGhlIHJlc3VsdHMgbWVhc3VyZWQgb24gVENQL0lQIG92ZXIg SVBvSUIgNDBHIEluZmluaWJhbmQuIFBsZWFzZSBub3RlIHRoYXQgSVBvSUIgaXMgZG9uZSBpbiBz b2Z0d2FyZSBzbyBpdCdzIHNsb3dlciB0aGFuIGEgNDBHIEV0aGVybmV0IE5JQy4NCg0KQWxsIHNl cnZlcnMgYXJlIHJ1bm5pbmcgMiBYIEludGVsKFIpIFhlb24oUikgQ1BVIEU1LTI2NTAgdjMgQCAy LjMwR0h6LiBUZXN0ZWQgb24gRklPIDY0ayByZWFkIG9yIHdyaXRlIHdpdGggcXVldWUgZGVwdGhz IDEgb3IgMTYuIEFsbCB0aGUgdGVzdHMgYXJlIHJ1bm5pbmcgd2l0aCAxIEZJTyBqb2IsIGFuZCB3 aXRoICJkaXJlY3Q9MSIuDQoNCldpdGhvdXQgZGlyZWN0IEkvTzoNCnJlYWQgNjRrIGQxCTExMzY2 OUtCL3MNCnJlYWQgNjRrIGQxNgk2MTg0MjhLQi9zDQp3cml0ZSA2NGsgZDEJMTM0OTExS0Ivcw0K d3JpdGUgNjRrIGQxNgk0NTcwMDVLQi9zDQoNCldpdGggZGlyZWN0IEkvTzoNCnJlYWQgNjRrIGQx CTEyNzEzNEtCL3MNCnJlYWQgNjRrIGQxNgk3MTQ2MjlLQi9zDQp3cml0ZSA2NGsgZDEJMTI5MjY4 S0Ivcw0Kd3JpdGUgNjRrIGQxNgk0NjEwNTRLQi9zDQoNCkRpcmVjdCBJL08gaW1wcm92ZW1lbnQ6 DQpyZWFkIDY0ayBkMQkxMSUNCnJlYWQgNjRrIGQxNgkxNSUNCndyaXRlIDY0ayBkMQktNSUNCndy aXRlIDY0ayBkMTYJMSUNCg0KDQoNCj4gDQo+IC0tDQo+IEJlc3QgcmVnYXJkcywNCj4gUGF2ZWwg U2hpbG92c2t5DQo=