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=-6.8 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,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 864F8C46475 for ; Tue, 23 Oct 2018 15:50:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E74FC20652 for ; Tue, 23 Oct 2018 15:50:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=netapp.onmicrosoft.com header.i=@netapp.onmicrosoft.com header.b="QKsVqdqU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E74FC20652 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=netapp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727437AbeJXAO2 (ORCPT ); Tue, 23 Oct 2018 20:14:28 -0400 Received: from mail-cys01nam02on0047.outbound.protection.outlook.com ([104.47.37.47]:25376 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727359AbeJXAO2 (ORCPT ); Tue, 23 Oct 2018 20:14:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector1-netapp-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=naS/6iHFB08yYAAvuRhvdXJFZjB6sTnqzuc3QTIJKZE=; b=QKsVqdqU+zIh9l2FE95xvLSYQ6u4mIlJQUNG2GkI0PBK2dzS9GcdlQ2MrZQDpftZKEDfW1AAq+B8HmHemotZGbfblcN4jp6NlJexoMIomqknfTFP4xWqYZWkjztCxLvbQf/9t+a8lO0vOfTBus4xFN0y/29UusWsjg6SNCAyjzM= Received: from DM5PR06MB3161.namprd06.prod.outlook.com (10.174.240.148) by DM5PR06MB3163.namprd06.prod.outlook.com (10.174.240.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.26; Tue, 23 Oct 2018 15:50:27 +0000 Received: from DM5PR06MB3161.namprd06.prod.outlook.com ([fe80::7424:c9ab:4c37:ece0]) by DM5PR06MB3161.namprd06.prod.outlook.com ([fe80::7424:c9ab:4c37:ece0%4]) with mapi id 15.20.1228.035; Tue, 23 Oct 2018 15:50:27 +0000 From: "Schumaker, Anna" To: "olga.kornievskaia@gmail.com" , "trondmy@hammerspace.com" CC: "linux-nfs@vger.kernel.org" Subject: Re: [PATCH v1 05/11] NFS add COPY_NOTIFY operation Thread-Topic: [PATCH v1 05/11] NFS add COPY_NOTIFY operation Thread-Index: AQHUZ8C6S5OQm+VNv0mXNOWex/xSR6UtALiA Date: Tue, 23 Oct 2018 15:50:27 +0000 Message-ID: References: <20181019152932.32462-1-olga.kornievskaia@gmail.com> <20181019152932.32462-6-olga.kornievskaia@gmail.com> In-Reply-To: <20181019152932.32462-6-olga.kornievskaia@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.30.2 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Anna.Schumaker@netapp.com; x-originating-ip: [99.9.112.69] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR06MB3163;6:tuDHbFjyix9sxqR087w8vwaT25Wx2phAI/6xnDnABGJErIgTPoFUvLzIH4ZzADHzIplF2gD2rTqPv2vu2TElTCgbed4SlpntpAM/q6GutnVWjWRictnDxlPyX1NoIVL0EjhhsDlmv8VVNMDAdXxx2RARh8VlYf1d2qoiVHPpghcP8OgzIAjIckIyECFxjbnIhKW7k1wurIBH/JdFVBQzRSN7Y/dPN1Wdp2OwH6UXgTmRDGDjuk6OQIOlSuAU3NrojQuSipVvAgwSkBYYpaOssk0qV5wsl7YVhEB1gMLLkizd5Of7I2uWSm5ZMipuf1Tj34bpLRvHtu+TjKi/VQKwX0QMKgO6Wqy6ENUTjv6EeJDnMayNqN1i8xdgmub1IHpMTrruUHoYyFOSrdTGc0e6r9PFW/UPCG1OTxqqTprSlAP1Zlmo9OlOEW9B5Z6cqLpdkSzpuah8ZCqCYk+ROM5TyQ==;5:ACIlLESL6F9ILv995qzyLKgAjwnL1/ycVB7OPzbRAkcdb0aZFULQjZNOAfbbje1v9U0bTpsNczGiIOJjC2yNZc4f5e9pcOqc8h9zACl/BOAvUmtloMaWH7tGMITy3zb43q8QXSPmWruI8hG0WRiQEgqLzbmzAd0H165YA3KG/EA=;7:kxo70BrKCUALhLM4qBg4sJZZ1c5c+LRFlP3v/VK9VdqqFr0GIF8SfewUCIAgtBEXgZfZvkVPiHJiBAa4DoQuJOeEdCBP6NNRb8V8p7l59VaqBwxR1TVj6w1/Zul9DpjxJ+B7iqQaK4uTeSotH0EuatgyKlPSqt49drDdRfz5NdGZDCvgPjy2DMQ0n8uM53sCB8YgJXMdMMjQWKthEY1+X59ZiYa9dEchOsAbv0DVBGrT/N8eIklBwlRyZ6m0SpDH x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 38b9d7a9-bde9-4d61-2571-08d638ff40b1 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM5PR06MB3163; x-ms-traffictypediagnostic: DM5PR06MB3163: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231355)(944501410)(52105095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095);SRVR:DM5PR06MB3163;BCL:0;PCL:0;RULEID:;SRVR:DM5PR06MB3163; x-forefront-prvs: 0834BAF534 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(396003)(376002)(346002)(366004)(39860400002)(199004)(189003)(486006)(72206003)(11346002)(6512007)(476003)(6116002)(2501003)(3846002)(478600001)(2616005)(39060400002)(71200400001)(7736002)(446003)(4744004)(118296001)(305945005)(71190400001)(53946003)(6436002)(25786009)(2906002)(8676002)(14444005)(81166006)(81156014)(8936002)(6246003)(106356001)(4326008)(99286004)(105586002)(110136005)(5660300001)(6506007)(97736004)(76176011)(229853002)(5250100002)(86362001)(256004)(4001150100001)(186003)(53936002)(102836004)(316002)(14454004)(26005)(68736007)(66066001)(6486002)(2900100001)(575784001)(58126008)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR06MB3163;H:DM5PR06MB3161.namprd06.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: netapp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: HiunzpSA9EcbtX73c9NJUu4/JvQDqV02h4oiHLdUemG8SCbt3JGUq4VUqOqwgiyDRN97KiyESBco1uoZrV7HEkxWU3ocfW/MFZhLKhH939c7tzMC8qwHcUIsMOUdHvfHHnr+/822pMQXUgrgTAn3n8blatqb2BlucGplcxLY87/zMU74FhNN92FU+dqIt37ktY4558ncXlPpQVtcITHxEqdYISPRCaMd+Vl2R8drc1ygGbDfGRizD9oOT99PbLe8I3w8rOZXJl3KryDCfui+tr5zfEh1GQq7FMp2K/LguLll2iJtWyN8k0gGgUK2LGmnySimV3rTao5n4c2vmnFb+aTMvh56uIUlJsDOkP/limI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <06D8DAFE09C8344E8CAA96A9DE6790F0@namprd06.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38b9d7a9-bde9-4d61-2571-08d638ff40b1 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2018 15:50:27.0549 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR06MB3163 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org SGkgT2xnYSwNCg0KT24gRnJpLCAyMDE4LTEwLTE5IGF0IDExOjI5IC0wNDAwLCBPbGdhIEtvcm5p ZXZza2FpYSB3cm90ZToNCj4gRnJvbTogT2xnYSBLb3JuaWV2c2thaWEgPGtvbGdhQG5ldGFwcC5j b20+DQo+IA0KPiBUcnkgdXNpbmcgdGhlIGRlbGVnYXRpb24gc3RhdGVpZCwgdGhlbiB0aGUgb3Bl biBzdGF0ZWlkLg0KPiANCj4gT25seSBOTDRfTkVUQVRUUiwgTm8gc3VwcG9ydCBmb3IgTkw0X05B TUUgYW5kIE5MNF9VUkwuDQo+IEFsbG93IG9ubHkgb25lIHNvdXJjZSBzZXJ2ZXIgYWRkcmVzcyB0 byBiZSByZXR1cm5lZCBmb3Igbm93Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQW5keSBBZGFtc29u IDxhbmRyb3NAbmV0YXBwLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogT2xnYSBLb3JuaWV2c2thaWEg PGtvbGdhQG5ldGFwcC5jb20+DQo+IC0tLQ0KPiAgZnMvbmZzL25mczQyLmggICAgICAgICAgICB8 ICAgMyArLQ0KPiAgZnMvbmZzL25mczQycHJvYy5jICAgICAgICB8ICA5MSArKysrKysrKysrKysr KysrKysrKysrKw0KPiAgZnMvbmZzL25mczQyeGRyLmMgICAgICAgICB8IDE4MQ0KPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBmcy9uZnMvbmZzNGZp bGUuYyAgICAgICAgIHwgIDE3ICsrKysrDQo+ICBmcy9uZnMvbmZzNHByb2MuYyAgICAgICAgIHwg ICAxICsNCj4gIGZzL25mcy9uZnM0eGRyLmMgICAgICAgICAgfCAgIDEgKw0KPiAgaW5jbHVkZS9s aW51eC9uZnM0LmggICAgICB8ICAgMSArDQo+ICBpbmNsdWRlL2xpbnV4L25mc19mc19zYi5oIHwg ICAxICsNCj4gIGluY2x1ZGUvbGludXgvbmZzX3hkci5oICAgfCAgMTYgKysrKw0KPiAgOSBmaWxl cyBjaGFuZ2VkLCAzMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAt LWdpdCBhL2ZzL25mcy9uZnM0Mi5oIGIvZnMvbmZzL25mczQyLmgNCj4gaW5kZXggNWFiZmY0ZC4u YmNkMDIyMiAxMDA2NDQNCj4gLS0tIGEvZnMvbmZzL25mczQyLmgNCj4gKysrIGIvZnMvbmZzL25m czQyLmgNCj4gQEAgLTIxLDcgKzIxLDggQEANCj4gIGludCBuZnM0Ml9wcm9jX2xheW91dHN0YXRz X2dlbmVyaWMoc3RydWN0IG5mc19zZXJ2ZXIgKiwNCj4gIAkJCQkgICBzdHJ1Y3QgbmZzNDJfbGF5 b3V0c3RhdF9kYXRhICopOw0KPiAgaW50IG5mczQyX3Byb2NfY2xvbmUoc3RydWN0IGZpbGUgKiwg c3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGxvZmZfdCk7DQo+IC0NCj4gK2ludCBuZnM0 Ml9wcm9jX2NvcHlfbm90aWZ5KHN0cnVjdCBmaWxlICosIHN0cnVjdCBmaWxlICosDQo+ICsJCQkg ICBzdHJ1Y3QgbmZzNDJfY29weV9ub3RpZnlfcmVzICopOw0KDQpDYW4geW91IHdyYXAgdGhpcyBp biBhIENPTkZJR19ORlNfVjRfMiBjaGVjaz8gIE90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbA0K Y29tcGxhaW4gdGhhdCBuZnM0Ml9jb3B5X25vdGlmeV9yZXMgZG9lc24ndCBleGlzdC4NCg0KVGhh bmtzLA0KQW5uYQ0KDQo+ICBzdGF0aWMgaW5saW5lIGJvb2wgbmZzNDJfZmlsZXNfZnJvbV9zYW1l X3NlcnZlcihzdHJ1Y3QgZmlsZSAqaW4sDQo+ICAJCQkJCQlzdHJ1Y3QgZmlsZSAqb3V0KQ0KPiAg ew0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczQycHJvYy5jIGIvZnMvbmZzL25mczQycHJvYy5j DQo+IGluZGV4IGFjNWI3ODQuLmIxYzU3YTQgMTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0MnBy b2MuYw0KPiArKysgYi9mcy9uZnMvbmZzNDJwcm9jLmMNCj4gQEAgLTMsNiArMyw3IEBADQo+ICAg KiBDb3B5cmlnaHQgKGMpIDIwMTQgQW5uYSBTY2h1bWFrZXIgPEFubmEuU2NodW1ha2VyQE5ldGFw cC5jb20+DQo+ICAgKi8NCj4gICNpbmNsdWRlIDxsaW51eC9mcy5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L3N1bnJwYy9hZGRyLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvc3VucnBjL3NjaGVkLmg+DQo+ ICAjaW5jbHVkZSA8bGludXgvbmZzLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvbmZzMy5oPg0KPiBA QCAtMTUsMTAgKzE2LDMwIEBADQo+ICAjaW5jbHVkZSAicG5mcy5oIg0KPiAgI2luY2x1ZGUgIm5m czRzZXNzaW9uLmgiDQo+ICAjaW5jbHVkZSAiaW50ZXJuYWwuaCINCj4gKyNpbmNsdWRlICJkZWxl Z2F0aW9uLmgiDQo+ICANCj4gICNkZWZpbmUgTkZTREJHX0ZBQ0lMSVRZIE5GU0RCR19QUk9DDQo+ ICBzdGF0aWMgaW50IG5mczQyX2RvX29mZmxvYWRfY2FuY2VsX2FzeW5jKHN0cnVjdCBmaWxlICpk c3QsIG5mczRfc3RhdGVpZA0KPiAqc3RkKTsNCj4gIA0KPiArc3RhdGljIHZvaWQgbmZzNDJfc2V0 X25ldGFkZHIoc3RydWN0IGZpbGUgKmZpbGVwLCBzdHJ1Y3QgbmZzNDJfbmV0YWRkcg0KPiAqbmFk ZHIpDQo+ICt7DQo+ICsJc3RydWN0IG5mc19jbGllbnQgKmNscCA9IChORlNfU0VSVkVSKGZpbGVf aW5vZGUoZmlsZXApKSktPm5mc19jbGllbnQ7DQo+ICsJdW5zaWduZWQgc2hvcnQgcG9ydCA9IDIw NDk7DQo+ICsNCj4gKwlyY3VfcmVhZF9sb2NrKCk7DQo+ICsJbmFkZHItPm5ldGlkX2xlbiA9IHNj bnByaW50ZihuYWRkci0+bmV0aWQsDQo+ICsJCQkJCXNpemVvZihuYWRkci0+bmV0aWQpLCAiJXMi LA0KPiArCQkJCQlycGNfcGVlcmFkZHIyc3RyKGNscC0+Y2xfcnBjY2xpZW50LA0KPiArCQkJCQlS UENfRElTUExBWV9ORVRJRCkpOw0KPiArCW5hZGRyLT5hZGRyX2xlbiA9IHNjbnByaW50ZihuYWRk ci0+YWRkciwNCj4gKwkJCQkJc2l6ZW9mKG5hZGRyLT5hZGRyKSwNCj4gKwkJCQkJIiVzLiV1LiV1 IiwNCj4gKwkJCQkJcnBjX3BlZXJhZGRyMnN0cihjbHAtPmNsX3JwY2NsaWVudCwNCj4gKwkJCQkJ UlBDX0RJU1BMQVlfQUREUiksDQo+ICsJCQkJCXBvcnQgPj4gOCwgcG9ydCAmIDI1NSk7DQo+ICsJ cmN1X3JlYWRfdW5sb2NrKCk7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBpbnQgX25mczQyX3Byb2Nf ZmFsbG9jYXRlKHN0cnVjdCBycGNfbWVzc2FnZSAqbXNnLCBzdHJ1Y3QgZmlsZSAqZmlsZXAsDQo+ ICAJCXN0cnVjdCBuZnNfbG9ja19jb250ZXh0ICpsb2NrLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3Qg bGVuKQ0KPiAgew0KPiBAQCAtNDYxLDYgKzQ4Miw3NiBAQCBzdGF0aWMgaW50IG5mczQyX2RvX29m ZmxvYWRfY2FuY2VsX2FzeW5jKHN0cnVjdCBmaWxlDQo+ICpkc3QsDQo+ICAJcmV0dXJuIHN0YXR1 czsNCj4gIH0NCj4gIA0KPiAraW50IF9uZnM0Ml9wcm9jX2NvcHlfbm90aWZ5KHN0cnVjdCBmaWxl ICpzcmMsIHN0cnVjdCBmaWxlICpkc3QsDQo+ICsJCQkgICAgc3RydWN0IG5mczQyX2NvcHlfbm90 aWZ5X2FyZ3MgKmFyZ3MsDQo+ICsJCQkgICAgc3RydWN0IG5mczQyX2NvcHlfbm90aWZ5X3JlcyAq cmVzKQ0KPiArew0KPiArCXN0cnVjdCBuZnNfc2VydmVyICpzcmNfc2VydmVyID0gTkZTX1NFUlZF UihmaWxlX2lub2RlKHNyYykpOw0KPiArCXN0cnVjdCBycGNfbWVzc2FnZSBtc2cgPSB7DQo+ICsJ CS5ycGNfcHJvYyA9ICZuZnM0X3Byb2NlZHVyZXNbTkZTUFJPQzRfQ0xOVF9DT1BZX05PVElGWV0s DQo+ICsJCS5ycGNfYXJncCA9IGFyZ3MsDQo+ICsJCS5ycGNfcmVzcCA9IHJlcywNCj4gKwl9Ow0K PiArCWludCBzdGF0dXM7DQo+ICsJc3RydWN0IG5mc19vcGVuX2NvbnRleHQgKmN0eDsNCj4gKwlz dHJ1Y3QgbmZzX2xvY2tfY29udGV4dCAqbF9jdHg7DQo+ICsNCj4gKwljdHggPSBnZXRfbmZzX29w ZW5fY29udGV4dChuZnNfZmlsZV9vcGVuX2NvbnRleHQoc3JjKSk7DQo+ICsJbF9jdHggPSBuZnNf Z2V0X2xvY2tfY29udGV4dChjdHgpOw0KPiArCWlmIChJU19FUlIobF9jdHgpKQ0KPiArCQlyZXR1 cm4gUFRSX0VSUihsX2N0eCk7DQo+ICsNCj4gKwlzdGF0dXMgPSBuZnM0X3NldF9yd19zdGF0ZWlk KCZhcmdzLT5jbmFfc3JjX3N0YXRlaWQsIGN0eCwgbF9jdHgsDQo+ICsJCQkJICAgICBGTU9ERV9S RUFEKTsNCj4gKwluZnNfcHV0X2xvY2tfY29udGV4dChsX2N0eCk7DQo+ICsJaWYgKHN0YXR1cykN Cj4gKwkJcmV0dXJuIHN0YXR1czsNCj4gKw0KPiArCXN0YXR1cyA9IG5mczRfY2FsbF9zeW5jKHNy Y19zZXJ2ZXItPmNsaWVudCwgc3JjX3NlcnZlciwgJm1zZywNCj4gKwkJCQkmYXJncy0+Y25hX3Nl cV9hcmdzLCAmcmVzLT5jbnJfc2VxX3JlcywgMCk7DQo+ICsJaWYgKHN0YXR1cyA9PSAtRU5PVFNV UFApDQo+ICsJCXNyY19zZXJ2ZXItPmNhcHMgJj0gfk5GU19DQVBfQ09QWV9OT1RJRlk7DQo+ICsN Cj4gKwlwdXRfbmZzX29wZW5fY29udGV4dChuZnNfZmlsZV9vcGVuX2NvbnRleHQoc3JjKSk7DQo+ ICsJcmV0dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiAraW50IG5mczQyX3Byb2NfY29weV9ub3Rp Znkoc3RydWN0IGZpbGUgKnNyYywgc3RydWN0IGZpbGUgKmRzdCwNCj4gKwkJCQlzdHJ1Y3QgbmZz NDJfY29weV9ub3RpZnlfcmVzICpyZXMpDQo+ICt7DQo+ICsJc3RydWN0IG5mc19zZXJ2ZXIgKnNy Y19zZXJ2ZXIgPSBORlNfU0VSVkVSKGZpbGVfaW5vZGUoc3JjKSk7DQo+ICsJc3RydWN0IG5mczQy X2NvcHlfbm90aWZ5X2FyZ3MgKmFyZ3M7DQo+ICsJc3RydWN0IG5mczRfZXhjZXB0aW9uIGV4Y2Vw dGlvbiA9IHsNCj4gKwkJLmlub2RlID0gZmlsZV9pbm9kZShzcmMpLA0KPiArCX07DQo+ICsJaW50 IHN0YXR1czsNCj4gKw0KPiArCWlmICghKHNyY19zZXJ2ZXItPmNhcHMgJiBORlNfQ0FQX0NPUFlf Tk9USUZZKSkNCj4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiArDQo+ICsJYXJncyA9IGt6YWxs b2Moc2l6ZW9mKHN0cnVjdCBuZnM0Ml9jb3B5X25vdGlmeV9hcmdzKSwgR0ZQX05PRlMpOw0KPiAr CWlmIChhcmdzID09IE5VTEwpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJYXJncy0+ Y25hX3NyY19maCAgPSBORlNfRkgoZmlsZV9pbm9kZShzcmMpKSwNCj4gKwlhcmdzLT5jbmFfZHN0 Lm5sNF90eXBlID0gTkw0X05FVEFERFI7DQo+ICsJbmZzNDJfc2V0X25ldGFkZHIoZHN0LCAmYXJn cy0+Y25hX2RzdC51Lm5sNF9hZGRyKTsNCj4gKwlleGNlcHRpb24uc3RhdGVpZCA9ICZhcmdzLT5j bmFfc3JjX3N0YXRlaWQ7DQo+ICsNCj4gKwlkbyB7DQo+ICsJCXN0YXR1cyA9IF9uZnM0Ml9wcm9j X2NvcHlfbm90aWZ5KHNyYywgZHN0LCBhcmdzLCByZXMpOw0KPiArCQlpZiAoc3RhdHVzID09IC1F Tk9UU1VQUCkgew0KPiArCQkJc3RhdHVzID0gLUVPUE5PVFNVUFA7DQo+ICsJCQlnb3RvIG91dDsN Cj4gKwkJfQ0KPiArCQlzdGF0dXMgPSBuZnM0X2hhbmRsZV9leGNlcHRpb24oc3JjX3NlcnZlciwg c3RhdHVzLCAmZXhjZXB0aW9uKTsNCj4gKwl9IHdoaWxlIChleGNlcHRpb24ucmV0cnkpOw0KPiAr DQo+ICtvdXQ6DQo+ICsJa2ZyZWUoYXJncyk7DQo+ICsJcmV0dXJuIHN0YXR1czsNCj4gK30NCj4g Kw0KPiAgc3RhdGljIGxvZmZfdCBfbmZzNDJfcHJvY19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGVw LA0KPiAgCQlzdHJ1Y3QgbmZzX2xvY2tfY29udGV4dCAqbG9jaywgbG9mZl90IG9mZnNldCwgaW50 IHdoZW5jZSkNCj4gIHsNCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0Mnhkci5jIGIvZnMvbmZz L25mczQyeGRyLmMNCj4gaW5kZXggNjlmNzJlZC4uZTZlN2NiZiAxMDA2NDQNCj4gLS0tIGEvZnMv bmZzL25mczQyeGRyLmMNCj4gKysrIGIvZnMvbmZzL25mczQyeGRyLmMNCj4gQEAgLTI5LDYgKzI5 LDE2IEBADQo+ICAjZGVmaW5lIGVuY29kZV9vZmZsb2FkX2NhbmNlbF9tYXhzegkob3BfZW5jb2Rl X2hkcl9tYXhzeiArIFwNCj4gIAkJCQkJIFhEUl9RVUFETEVOKE5GUzRfU1RBVEVJRF9TSVpFKSkN Cj4gICNkZWZpbmUgZGVjb2RlX29mZmxvYWRfY2FuY2VsX21heHN6CShvcF9kZWNvZGVfaGRyX21h eHN6KQ0KPiArI2RlZmluZSBlbmNvZGVfY29weV9ub3RpZnlfbWF4c3oJKG9wX2VuY29kZV9oZHJf bWF4c3ogKyBcDQo+ICsJCQkJCSBYRFJfUVVBRExFTihORlM0X1NUQVRFSURfU0laRSkgKyBcDQo+ ICsJCQkJCSAxICsgLyogbmw0X3R5cGUgKi8gXA0KPiArCQkJCQkgMSArIFhEUl9RVUFETEVOKE5G UzRfT1BBUVVFX0xJTUlUKSkNCj4gKyNkZWZpbmUgZGVjb2RlX2NvcHlfbm90aWZ5X21heHN6CShv cF9kZWNvZGVfaGRyX21heHN6ICsgXA0KPiArCQkJCQkgMyArIC8qIGNucl9sZWFzZV90aW1lICov XA0KPiArCQkJCQkgWERSX1FVQURMRU4oTkZTNF9TVEFURUlEX1NJWkUpICsgXA0KPiArCQkJCQkg MSArIC8qIFN1cHBvcnQgMSBjbnJfc291cmNlX3NlcnZlciAqL1wNCj4gKwkJCQkJIDEgKyAvKiBu bDRfdHlwZSAqLyBcDQo+ICsJCQkJCSAxICsgWERSX1FVQURMRU4oTkZTNF9PUEFRVUVfTElNSVQp KQ0KPiAgI2RlZmluZSBlbmNvZGVfZGVhbGxvY2F0ZV9tYXhzegkJKG9wX2VuY29kZV9oZHJfbWF4 c3ogKyBcDQo+ICAJCQkJCSBlbmNvZGVfZmFsbG9jYXRlX21heHN6KQ0KPiAgI2RlZmluZSBkZWNv ZGVfZGVhbGxvY2F0ZV9tYXhzegkJKG9wX2RlY29kZV9oZHJfbWF4c3opDQo+IEBAIC04NCw2ICs5 NCwxMiBAQA0KPiAgI2RlZmluZSBORlM0X2RlY19vZmZsb2FkX2NhbmNlbF9zegkoY29tcG91bmRf ZGVjb2RlX2hkcl9tYXhzeiArIFwNCj4gIAkJCQkJIGRlY29kZV9wdXRmaF9tYXhzeiArIFwNCj4g IAkJCQkJIGRlY29kZV9vZmZsb2FkX2NhbmNlbF9tYXhzeikNCj4gKyNkZWZpbmUgTkZTNF9lbmNf Y29weV9ub3RpZnlfc3oJCShjb21wb3VuZF9lbmNvZGVfaGRyX21heHN6ICsgXA0KPiArCQkJCQkg ZW5jb2RlX3B1dGZoX21heHN6ICsgXA0KPiArCQkJCQkgZW5jb2RlX2NvcHlfbm90aWZ5X21heHN6 KQ0KPiArI2RlZmluZSBORlM0X2RlY19jb3B5X25vdGlmeV9zegkJKGNvbXBvdW5kX2RlY29kZV9o ZHJfbWF4c3ogKyBcDQo+ICsJCQkJCSBkZWNvZGVfcHV0ZmhfbWF4c3ogKyBcDQo+ICsJCQkJCSBk ZWNvZGVfY29weV9ub3RpZnlfbWF4c3opDQo+ICAjZGVmaW5lIE5GUzRfZW5jX2RlYWxsb2NhdGVf c3oJCShjb21wb3VuZF9lbmNvZGVfaGRyX21heHN6ICsgXA0KPiAgCQkJCQkgZW5jb2RlX3B1dGZo X21heHN6ICsgXA0KPiAgCQkJCQkgZW5jb2RlX2RlYWxsb2NhdGVfbWF4c3ogKyBcDQo+IEBAIC0x MzcsNiArMTUzLDI1IEBAIHN0YXRpYyB2b2lkIGVuY29kZV9hbGxvY2F0ZShzdHJ1Y3QgeGRyX3N0 cmVhbSAqeGRyLA0KPiAgCWVuY29kZV9mYWxsb2NhdGUoeGRyLCBhcmdzKTsNCj4gIH0NCj4gIA0K PiArc3RhdGljIHZvaWQgZW5jb2RlX25sNF9zZXJ2ZXIoc3RydWN0IHhkcl9zdHJlYW0gKnhkciwg Y29uc3Qgc3RydWN0IG5sNF9zZXJ2ZXINCj4gKm5zKQ0KPiArew0KPiArCWVuY29kZV91aW50MzIo eGRyLCBucy0+bmw0X3R5cGUpOw0KPiArCXN3aXRjaCAobnMtPm5sNF90eXBlKSB7DQo+ICsJY2Fz ZSBOTDRfTkFNRToNCj4gKwljYXNlIE5MNF9VUkw6DQo+ICsJCWVuY29kZV9zdHJpbmcoeGRyLCBu cy0+dS5ubDRfc3RyX3N6LCBucy0+dS5ubDRfc3RyKTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBO TDRfTkVUQUREUjoNCj4gKwkJZW5jb2RlX3N0cmluZyh4ZHIsIG5zLT51Lm5sNF9hZGRyLm5ldGlk X2xlbiwNCj4gKwkJCSAgICAgIG5zLT51Lm5sNF9hZGRyLm5ldGlkKTsNCj4gKwkJZW5jb2RlX3N0 cmluZyh4ZHIsIG5zLT51Lm5sNF9hZGRyLmFkZHJfbGVuLA0KPiArCQkJICAgICAgbnMtPnUubmw0 X2FkZHIuYWRkcik7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCVdBUk5fT05fT05D RSgxKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIGVuY29kZV9jb3B5KHN0cnVj dCB4ZHJfc3RyZWFtICp4ZHIsDQo+ICAJCQljb25zdCBzdHJ1Y3QgbmZzNDJfY29weV9hcmdzICph cmdzLA0KPiAgCQkJc3RydWN0IGNvbXBvdW5kX2hkciAqaGRyKQ0KPiBAQCAtMTYyLDYgKzE5Nywx NSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfb2ZmbG9hZF9jYW5jZWwoc3RydWN0IHhkcl9zdHJlYW0g KnhkciwNCj4gIAllbmNvZGVfbmZzNF9zdGF0ZWlkKHhkciwgJmFyZ3MtPm9zYV9zdGF0ZWlkKTsN Cj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQgZW5jb2RlX2NvcHlfbm90aWZ5KHN0cnVjdCB4ZHJf c3RyZWFtICp4ZHIsDQo+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IG5mczQyX2NvcHlfbm90aWZ5 X2FyZ3MgKmFyZ3MsDQo+ICsJCQkgICAgICAgc3RydWN0IGNvbXBvdW5kX2hkciAqaGRyKQ0KPiAr ew0KPiArCWVuY29kZV9vcF9oZHIoeGRyLCBPUF9DT1BZX05PVElGWSwgZGVjb2RlX2NvcHlfbm90 aWZ5X21heHN6LCBoZHIpOw0KPiArCWVuY29kZV9uZnM0X3N0YXRlaWQoeGRyLCAmYXJncy0+Y25h X3NyY19zdGF0ZWlkKTsNCj4gKwllbmNvZGVfbmw0X3NlcnZlcih4ZHIsICZhcmdzLT5jbmFfZHN0 KTsNCj4gK30NCj4gKw0KPiAgc3RhdGljIHZvaWQgZW5jb2RlX2RlYWxsb2NhdGUoc3RydWN0IHhk cl9zdHJlYW0gKnhkciwNCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBuZnM0Ml9mYWxsb2NfYXJn cyAqYXJncywNCj4gIAkJCSAgICAgIHN0cnVjdCBjb21wb3VuZF9oZHIgKmhkcikNCj4gQEAgLTI5 OCw2ICszNDIsMjUgQEAgc3RhdGljIHZvaWQgbmZzNF94ZHJfZW5jX29mZmxvYWRfY2FuY2VsKHN0 cnVjdCBycGNfcnFzdA0KPiAqcmVxLA0KPiAgfQ0KPiAgDQo+ICAvKg0KPiArICogRW5jb2RlIENP UFlfTk9USUZZIHJlcXVlc3QNCj4gKyAqLw0KPiArc3RhdGljIHZvaWQgbmZzNF94ZHJfZW5jX2Nv cHlfbm90aWZ5KHN0cnVjdCBycGNfcnFzdCAqcmVxLA0KPiArCQkJCSAgICAgc3RydWN0IHhkcl9z dHJlYW0gKnhkciwNCj4gKwkJCQkgICAgIGNvbnN0IHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJY29u c3Qgc3RydWN0IG5mczQyX2NvcHlfbm90aWZ5X2FyZ3MgKmFyZ3MgPSBkYXRhOw0KPiArCXN0cnVj dCBjb21wb3VuZF9oZHIgaGRyID0gew0KPiArCQkubWlub3J2ZXJzaW9uID0gbmZzNF94ZHJfbWlu b3J2ZXJzaW9uKCZhcmdzLT5jbmFfc2VxX2FyZ3MpLA0KPiArCX07DQo+ICsNCj4gKwllbmNvZGVf Y29tcG91bmRfaGRyKHhkciwgcmVxLCAmaGRyKTsNCj4gKwllbmNvZGVfc2VxdWVuY2UoeGRyLCAm YXJncy0+Y25hX3NlcV9hcmdzLCAmaGRyKTsNCj4gKwllbmNvZGVfcHV0ZmgoeGRyLCBhcmdzLT5j bmFfc3JjX2ZoLCAmaGRyKTsNCj4gKwllbmNvZGVfY29weV9ub3RpZnkoeGRyLCBhcmdzLCAmaGRy KTsNCj4gKwllbmNvZGVfbm9wcygmaGRyKTsNCj4gK30NCj4gKw0KPiArLyoNCj4gICAqIEVuY29k ZSBERUFMTE9DQVRFIHJlcXVlc3QNCj4gICAqLw0KPiAgc3RhdGljIHZvaWQgbmZzNF94ZHJfZW5j X2RlYWxsb2NhdGUoc3RydWN0IHJwY19ycXN0ICpyZXEsDQo+IEBAIC00MTYsNiArNDc5LDU4IEBA IHN0YXRpYyBpbnQgZGVjb2RlX3dyaXRlX3Jlc3BvbnNlKHN0cnVjdCB4ZHJfc3RyZWFtICp4ZHIs DQo+ICAJcmV0dXJuIC1FSU87DQo+ICB9DQo+ICANCj4gK3N0YXRpYyBpbnQgZGVjb2RlX25sNF9z ZXJ2ZXIoc3RydWN0IHhkcl9zdHJlYW0gKnhkciwgc3RydWN0IG5sNF9zZXJ2ZXIgKm5zKQ0KPiAr ew0KPiArCXN0cnVjdCBuZnM0Ml9uZXRhZGRyICpuYWRkcjsNCj4gKwl1aW50MzJfdCBkdW1teTsN Cj4gKwljaGFyICpkdW1teV9zdHI7DQo+ICsJX19iZTMyICpwOw0KPiArCWludCBzdGF0dXM7DQo+ ICsNCj4gKwkvKiBubF90eXBlICovDQo+ICsJcCA9IHhkcl9pbmxpbmVfZGVjb2RlKHhkciwgNCk7 DQo+ICsJaWYgKHVubGlrZWx5KCFwKSkNCj4gKwkJcmV0dXJuIC1FSU87DQo+ICsJbnMtPm5sNF90 eXBlID0gYmUzMl90b19jcHVwKHApOw0KPiArCXN3aXRjaCAobnMtPm5sNF90eXBlKSB7DQo+ICsJ Y2FzZSBOTDRfTkFNRToNCj4gKwljYXNlIE5MNF9VUkw6DQo+ICsJCXN0YXR1cyA9IGRlY29kZV9v cGFxdWVfaW5saW5lKHhkciwgJmR1bW15LCAmZHVtbXlfc3RyKTsNCj4gKwkJaWYgKHVubGlrZWx5 KHN0YXR1cykpDQo+ICsJCQlyZXR1cm4gc3RhdHVzOw0KPiArCQlpZiAodW5saWtlbHkoZHVtbXkg PiBORlM0X09QQVFVRV9MSU1JVCkpDQo+ICsJCQlyZXR1cm4gLUVJTzsNCj4gKwkJbWVtY3B5KCZu cy0+dS5ubDRfc3RyLCBkdW1teV9zdHIsIGR1bW15KTsNCj4gKwkJbnMtPnUubmw0X3N0cl9zeiA9 IGR1bW15Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIE5MNF9ORVRBRERSOg0KPiArCQluYWRkciA9 ICZucy0+dS5ubDRfYWRkcjsNCj4gKw0KPiArCQkvKiBuZXRpZCBzdHJpbmcgKi8NCj4gKwkJc3Rh dHVzID0gZGVjb2RlX29wYXF1ZV9pbmxpbmUoeGRyLCAmZHVtbXksICZkdW1teV9zdHIpOw0KPiAr CQlpZiAodW5saWtlbHkoc3RhdHVzKSkNCj4gKwkJCXJldHVybiBzdGF0dXM7DQo+ICsJCWlmICh1 bmxpa2VseShkdW1teSA+IFJQQ0JJTkRfTUFYTkVUSURMRU4pKQ0KPiArCQkJcmV0dXJuIC1FSU87 DQo+ICsJCW5hZGRyLT5uZXRpZF9sZW4gPSBkdW1teTsNCj4gKwkJbWVtY3B5KG5hZGRyLT5uZXRp ZCwgZHVtbXlfc3RyLCBuYWRkci0+bmV0aWRfbGVuKTsNCj4gKw0KPiArCQkvKiB1YWRkciBzdHJp bmcgKi8NCj4gKwkJc3RhdHVzID0gZGVjb2RlX29wYXF1ZV9pbmxpbmUoeGRyLCAmZHVtbXksICZk dW1teV9zdHIpOw0KPiArCQlpZiAodW5saWtlbHkoc3RhdHVzKSkNCj4gKwkJCXJldHVybiBzdGF0 dXM7DQo+ICsJCWlmICh1bmxpa2VseShkdW1teSA+IFJQQ0JJTkRfTUFYVUFERFJMRU4pKQ0KPiAr CQkJcmV0dXJuIC1FSU87DQo+ICsJCW5hZGRyLT5hZGRyX2xlbiA9IGR1bW15Ow0KPiArCQltZW1j cHkobmFkZHItPmFkZHIsIGR1bW15X3N0ciwgbmFkZHItPmFkZHJfbGVuKTsNCj4gKwkJYnJlYWs7 DQo+ICsJZGVmYXVsdDoNCj4gKwkJV0FSTl9PTl9PTkNFKDEpOw0KPiArCQlyZXR1cm4gLUVJTzsN Cj4gKwl9DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBpbnQgZGVjb2RlX2Nv cHlfcmVxdWlyZW1lbnRzKHN0cnVjdCB4ZHJfc3RyZWFtICp4ZHIsDQo+ICAJCQkJICAgIHN0cnVj dCBuZnM0Ml9jb3B5X3JlcyAqcmVzKSB7DQo+ICAJX19iZTMyICpwOw0KPiBAQCAtNDU4LDYgKzU3 Myw0NiBAQCBzdGF0aWMgaW50IGRlY29kZV9vZmZsb2FkX2NhbmNlbChzdHJ1Y3QgeGRyX3N0cmVh bSAqeGRyLA0KPiAgCXJldHVybiBkZWNvZGVfb3BfaGRyKHhkciwgT1BfT0ZGTE9BRF9DQU5DRUwp Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgaW50IGRlY29kZV9jb3B5X25vdGlmeShzdHJ1Y3QgeGRy X3N0cmVhbSAqeGRyLA0KPiArCQkJICAgICAgc3RydWN0IG5mczQyX2NvcHlfbm90aWZ5X3JlcyAq cmVzKQ0KPiArew0KPiArCV9fYmUzMiAqcDsNCj4gKwlpbnQgc3RhdHVzLCBjb3VudDsNCj4gKw0K PiArCXN0YXR1cyA9IGRlY29kZV9vcF9oZHIoeGRyLCBPUF9DT1BZX05PVElGWSk7DQo+ICsJaWYg KHN0YXR1cykNCj4gKwkJcmV0dXJuIHN0YXR1czsNCj4gKwkvKiBjbnJfbGVhc2VfdGltZSAqLw0K PiArCXAgPSB4ZHJfaW5saW5lX2RlY29kZSh4ZHIsIDEyKTsNCj4gKwlpZiAodW5saWtlbHkoIXAp KQ0KPiArCQlnb3RvIG91dF9vdmVyZmxvdzsNCj4gKwlwID0geGRyX2RlY29kZV9oeXBlcihwLCAm cmVzLT5jbnJfbGVhc2VfdGltZS5zZWNvbmRzKTsNCj4gKwlyZXMtPmNucl9sZWFzZV90aW1lLm5z ZWNvbmRzID0gYmUzMl90b19jcHVwKHApOw0KPiArDQo+ICsJc3RhdHVzID0gZGVjb2RlX29wYXF1 ZV9maXhlZCh4ZHIsICZyZXMtPmNucl9zdGF0ZWlkLCBORlM0X1NUQVRFSURfU0laRSk7DQo+ICsJ aWYgKHVubGlrZWx5KHN0YXR1cykpDQo+ICsJCWdvdG8gb3V0X292ZXJmbG93Ow0KPiArDQo+ICsJ LyogbnVtYmVyIG9mIHNvdXJjZSBhZGRyZXNzZXMgKi8NCj4gKwlwID0geGRyX2lubGluZV9kZWNv ZGUoeGRyLCA0KTsNCj4gKwlpZiAodW5saWtlbHkoIXApKQ0KPiArCQlnb3RvIG91dF9vdmVyZmxv dzsNCj4gKw0KPiArCWNvdW50ID0gYmUzMl90b19jcHVwKHApOw0KPiArCWlmIChjb3VudCA+IDEp DQo+ICsJCXByX3dhcm4oIk5GUzogJXM6IG5zdnIgJWQgPiBTdXBwb3J0ZWQuIFVzZSBmaXJzdCBz ZXJ2ZXJzXG4iLA0KPiArCQkJIF9fZnVuY19fLCBjb3VudCk7DQo+ICsNCj4gKwlzdGF0dXMgPSBk ZWNvZGVfbmw0X3NlcnZlcih4ZHIsICZyZXMtPmNucl9zcmMpOw0KPiArCWlmICh1bmxpa2VseShz dGF0dXMpKQ0KPiArCQlnb3RvIG91dF9vdmVyZmxvdzsNCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiAr b3V0X292ZXJmbG93Og0KPiArCXByaW50X292ZXJmbG93X21zZyhfX2Z1bmNfXywgeGRyKTsNCj4g KwlyZXR1cm4gLUVJTzsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludCBkZWNvZGVfZGVhbGxvY2F0 ZShzdHJ1Y3QgeGRyX3N0cmVhbSAqeGRyLCBzdHJ1Y3QgbmZzNDJfZmFsbG9jX3Jlcw0KPiAqcmVz KQ0KPiAgew0KPiAgCXJldHVybiBkZWNvZGVfb3BfaGRyKHhkciwgT1BfREVBTExPQ0FURSk7DQo+ IEBAIC01ODUsNiArNzQwLDMyIEBAIHN0YXRpYyBpbnQgbmZzNF94ZHJfZGVjX29mZmxvYWRfY2Fu Y2VsKHN0cnVjdCBycGNfcnFzdA0KPiAqcnFzdHAsDQo+ICB9DQo+ICANCj4gIC8qDQo+ICsgKiBE ZWNvZGUgQ09QWV9OT1RJRlkgcmVzcG9uc2UNCj4gKyAqLw0KPiArc3RhdGljIGludCBuZnM0X3hk cl9kZWNfY29weV9ub3RpZnkoc3RydWN0IHJwY19ycXN0ICpycXN0cCwNCj4gKwkJCQkgICAgc3Ry dWN0IHhkcl9zdHJlYW0gKnhkciwNCj4gKwkJCQkgICAgdm9pZCAqZGF0YSkNCj4gK3sNCj4gKwlz dHJ1Y3QgbmZzNDJfY29weV9ub3RpZnlfcmVzICpyZXMgPSBkYXRhOw0KPiArCXN0cnVjdCBjb21w b3VuZF9oZHIgaGRyOw0KPiArCWludCBzdGF0dXM7DQo+ICsNCj4gKwlzdGF0dXMgPSBkZWNvZGVf Y29tcG91bmRfaGRyKHhkciwgJmhkcik7DQo+ICsJaWYgKHN0YXR1cykNCj4gKwkJZ290byBvdXQ7 DQo+ICsJc3RhdHVzID0gZGVjb2RlX3NlcXVlbmNlKHhkciwgJnJlcy0+Y25yX3NlcV9yZXMsIHJx c3RwKTsNCj4gKwlpZiAoc3RhdHVzKQ0KPiArCQlnb3RvIG91dDsNCj4gKwlzdGF0dXMgPSBkZWNv ZGVfcHV0ZmgoeGRyKTsNCj4gKwlpZiAoc3RhdHVzKQ0KPiArCQlnb3RvIG91dDsNCj4gKwlzdGF0 dXMgPSBkZWNvZGVfY29weV9ub3RpZnkoeGRyLCByZXMpOw0KPiArDQo+ICtvdXQ6DQo+ICsJcmV0 dXJuIHN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoNCj4gICAqIERlY29kZSBERUFMTE9DQVRFIHJl cXVlc3QNCj4gICAqLw0KPiAgc3RhdGljIGludCBuZnM0X3hkcl9kZWNfZGVhbGxvY2F0ZShzdHJ1 Y3QgcnBjX3Jxc3QgKnJxc3RwLA0KPiBkaWZmIC0tZ2l0IGEvZnMvbmZzL25mczRmaWxlLmMgYi9m cy9uZnMvbmZzNGZpbGUuYw0KPiBpbmRleCA0Mjg4YTZlLi4zYTg4OGY0IDEwMDY0NA0KPiAtLS0g YS9mcy9uZnMvbmZzNGZpbGUuYw0KPiArKysgYi9mcy9uZnMvbmZzNGZpbGUuYw0KPiBAQCAtMTMz LDEyICsxMzMsMjkgQEAgc3RhdGljIHNzaXplX3QgbmZzNF9jb3B5X2ZpbGVfcmFuZ2Uoc3RydWN0 IGZpbGUNCj4gKmZpbGVfaW4sIGxvZmZfdCBwb3NfaW4sDQo+ICAJCQkJICAgIHN0cnVjdCBmaWxl ICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsDQo+ICAJCQkJICAgIHNpemVfdCBjb3VudCwgdW5z aWduZWQgaW50IGZsYWdzKQ0KPiAgew0KPiArCXN0cnVjdCBuZnM0Ml9jb3B5X25vdGlmeV9yZXMg KmNuX3Jlc3AgPSBOVUxMOw0KPiAgCXNzaXplX3QgcmV0Ow0KPiAgDQo+ICAJaWYgKGZpbGVfaW5v ZGUoZmlsZV9pbikgPT0gZmlsZV9pbm9kZShmaWxlX291dCkpDQo+ICAJCXJldHVybiAtRUlOVkFM Ow0KPiAgcmV0cnk6DQo+ICsJaWYgKG5mczQyX2ZpbGVzX2Zyb21fc2FtZV9zZXJ2ZXIoZmlsZV9p biwgZmlsZV9vdXQpKSB7ICAvKiBJbnRyYS1zc2MgKi8NCj4gKwkJaWYgKGZpbGVfaW4tPmZfb3Ag IT0gZmlsZV9vdXQtPmZfb3ApDQo+ICsJCQlyZXR1cm4gLUVYREVWOw0KPiArCX0gZWxzZSB7ICAv KiBJbnRlci1zc2MgKi8NCj4gKwkJY25fcmVzcCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBuZnM0 Ml9jb3B5X25vdGlmeV9yZXMpLA0KPiArCQkJCSAgR0ZQX05PRlMpOw0KPiArCQlpZiAodW5saWtl bHkoY25fcmVzcCA9PSBOVUxMKSkNCj4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJCXJl dCA9IG5mczQyX3Byb2NfY29weV9ub3RpZnkoZmlsZV9pbiwgZmlsZV9vdXQsIGNuX3Jlc3ApOw0K PiArCQlpZiAocmV0KQ0KPiArCQkJZ290byBvdXQ7DQo+ICsJfQ0KPiAgCXJldCA9IG5mczQyX3By b2NfY29weShmaWxlX2luLCBwb3NfaW4sIGZpbGVfb3V0LCBwb3Nfb3V0LCBjb3VudCk7DQo+ICsN Cj4gK291dDoNCj4gKwlrZnJlZShjbl9yZXNwKTsNCj4gIAlpZiAocmV0ID09IC1FQUdBSU4pDQo+ ICAJCWdvdG8gcmV0cnk7DQo+ICAJcmV0dXJuIHJldDsNCj4gZGlmZiAtLWdpdCBhL2ZzL25mcy9u ZnM0cHJvYy5jIGIvZnMvbmZzL25mczRwcm9jLmMNCj4gaW5kZXggZGI4NGI0YS4uZmVjNmU2YiAx MDA2NDQNCj4gLS0tIGEvZnMvbmZzL25mczRwcm9jLmMNCj4gKysrIGIvZnMvbmZzL25mczRwcm9j LmMNCj4gQEAgLTk2OTIsNiArOTY5Miw3IEBAIHN0YXRpYyBib29sIG5mczRfbWF0Y2hfc3RhdGVp ZChjb25zdCBuZnM0X3N0YXRlaWQgKnMxLA0KPiAgCQl8IE5GU19DQVBfQUxMT0NBVEUNCj4gIAkJ fCBORlNfQ0FQX0NPUFkNCj4gIAkJfCBORlNfQ0FQX09GRkxPQURfQ0FOQ0VMDQo+ICsJCXwgTkZT X0NBUF9DT1BZX05PVElGWQ0KPiAgCQl8IE5GU19DQVBfREVBTExPQ0FURQ0KPiAgCQl8IE5GU19D QVBfU0VFSw0KPiAgCQl8IE5GU19DQVBfTEFZT1VUU1RBVFMNCj4gZGlmZiAtLWdpdCBhL2ZzL25m cy9uZnM0eGRyLmMgYi9mcy9uZnMvbmZzNHhkci5jDQo+IGluZGV4IGI3YmRlMTIuLjIxNjM5MDAg MTAwNjQ0DQo+IC0tLSBhL2ZzL25mcy9uZnM0eGRyLmMNCj4gKysrIGIvZnMvbmZzL25mczR4ZHIu Yw0KPiBAQCAtNzc5MCw2ICs3NzkwLDcgQEAgaW50IG5mczRfZGVjb2RlX2RpcmVudChzdHJ1Y3Qg eGRyX3N0cmVhbSAqeGRyLCBzdHJ1Y3QNCj4gbmZzX2VudHJ5ICplbnRyeSwNCj4gIAlQUk9DNDIo Q0xPTkUsCQllbmNfY2xvbmUsCQlkZWNfY2xvbmUpLA0KPiAgCVBST0M0MihDT1BZLAkJZW5jX2Nv cHksCQlkZWNfY29weSksDQo+ICAJUFJPQzQyKE9GRkxPQURfQ0FOQ0VMLAllbmNfb2ZmbG9hZF9j YW5jZWwsCWRlY19vZmZsb2FkX2NhbmNlbCksDQo+ICsJUFJPQzQyKENPUFlfTk9USUZZLAllbmNf Y29weV9ub3RpZnksCWRlY19jb3B5X25vdGlmeSksDQo+ICAJUFJPQyhMT09LVVBQLAkJZW5jX2xv b2t1cHAsCQlkZWNfbG9va3VwcCksDQo+ICB9Ow0KPiAgDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L25mczQuaCBiL2luY2x1ZGUvbGludXgvbmZzNC5oDQo+IGluZGV4IDRkNzZmODcuLmQ4 MGIyNWUgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvbmZzNC5oDQo+ICsrKyBiL2luY2x1 ZGUvbGludXgvbmZzNC5oDQo+IEBAIC01MzcsNiArNTM3LDcgQEAgZW51bSB7DQo+ICAJTkZTUFJP QzRfQ0xOVF9DTE9ORSwNCj4gIAlORlNQUk9DNF9DTE5UX0NPUFksDQo+ICAJTkZTUFJPQzRfQ0xO VF9PRkZMT0FEX0NBTkNFTCwNCj4gKwlORlNQUk9DNF9DTE5UX0NPUFlfTk9USUZZLA0KPiAgDQo+ ICAJTkZTUFJPQzRfQ0xOVF9MT09LVVBQLA0KPiAgfTsNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvbmZzX2ZzX3NiLmggYi9pbmNsdWRlL2xpbnV4L25mc19mc19zYi5oDQo+IGluZGV4IDBm YzBiOTEuLmU1ZDg5ZmYgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgN Cj4gKysrIGIvaW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaA0KPiBAQCAtMjYxLDUgKzI2MSw2IEBA IHN0cnVjdCBuZnNfc2VydmVyIHsNCj4gICNkZWZpbmUgTkZTX0NBUF9DTE9ORQkJKDFVIDw8IDIz KQ0KPiAgI2RlZmluZSBORlNfQ0FQX0NPUFkJCSgxVSA8PCAyNCkNCj4gICNkZWZpbmUgTkZTX0NB UF9PRkZMT0FEX0NBTkNFTAkoMVUgPDwgMjUpDQo+ICsjZGVmaW5lIE5GU19DQVBfQ09QWV9OT1RJ RlkJKDFVIDw8IDI2KQ0KPiAgDQo+ICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvbmZzX3hkci5oIGIvaW5jbHVkZS9saW51eC9uZnNfeGRyLmgNCj4gaW5kZXggMGUwMTYyNS4u ZGZjNTliYyAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9saW51eC9uZnNfeGRyLmgNCj4gKysrIGIv aW5jbHVkZS9saW51eC9uZnNfeGRyLmgNCj4gQEAgLTE0MjgsNiArMTQyOCwyMiBAQCBzdHJ1Y3Qg bmZzNDJfb2ZmbG9hZF9zdGF0dXNfcmVzIHsNCj4gIAlpbnQJCQkJb3NyX3N0YXR1czsNCj4gIH07 DQo+ICANCj4gK3N0cnVjdCBuZnM0Ml9jb3B5X25vdGlmeV9hcmdzIHsNCj4gKwlzdHJ1Y3QgbmZz NF9zZXF1ZW5jZV9hcmdzCWNuYV9zZXFfYXJnczsNCj4gKw0KPiArCXN0cnVjdCBuZnNfZmgJCSpj bmFfc3JjX2ZoOw0KPiArCW5mczRfc3RhdGVpZAkJY25hX3NyY19zdGF0ZWlkOw0KPiArCXN0cnVj dCBubDRfc2VydmVyCWNuYV9kc3Q7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgbmZzNDJfY29weV9u b3RpZnlfcmVzIHsNCj4gKwlzdHJ1Y3QgbmZzNF9zZXF1ZW5jZV9yZXMJY25yX3NlcV9yZXM7DQo+ ICsNCj4gKwlzdHJ1Y3QgbmZzdGltZTQJCWNucl9sZWFzZV90aW1lOw0KPiArCW5mczRfc3RhdGVp ZAkJY25yX3N0YXRlaWQ7DQo+ICsJc3RydWN0IG5sNF9zZXJ2ZXIJY25yX3NyYzsNCj4gK307DQo+ ICsNCj4gIHN0cnVjdCBuZnM0Ml9zZWVrX2FyZ3Mgew0KPiAgCXN0cnVjdCBuZnM0X3NlcXVlbmNl X2FyZ3MJc2VxX2FyZ3M7DQo+ICANCg==