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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 E8D5EC2D0D9 for ; Wed, 11 Dec 2019 02:54:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B97332077B for ; Wed, 11 Dec 2019 02:54:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="dLUtKfr4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B97332077B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 685196EA62; Wed, 11 Dec 2019 02:53:42 +0000 (UTC) Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com [216.228.121.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E78C6EA50 for ; Wed, 11 Dec 2019 02:53:30 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Tue, 10 Dec 2019 18:53:22 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Tue, 10 Dec 2019 18:53:29 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Tue, 10 Dec 2019 18:53:29 -0800 Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 11 Dec 2019 02:53:28 +0000 Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 11 Dec 2019 02:53:27 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Tue, 10 Dec 2019 18:53:27 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v9 10/25] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Tue, 10 Dec 2019 18:53:03 -0800 Message-ID: <20191211025318.457113-11-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191211025318.457113-1-jhubbard@nvidia.com> References: <20191211025318.457113-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1576032803; bh=rHNiFDRAEzIirYKbDgq9tZrzwFz5g+RyWWyz0IfNVfE=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-NVConfidentiality: Content-Type:Content-Transfer-Encoding; b=dLUtKfr4j1t94iVTWdIstjWEN1lBHc/VuzRhwR1TTr7+aScMPVgabgvkR20agrgn8 YhuJtFQL7dHr//zbjgONuJXhew/LLdK0LRNmAY7BaDxVyH4C/lG+ZkvlxrTMBw7iWZ u2+Wo+GkUZNE81jCQzEbIxMH7hjQXwQbxamicWQcOPL1L1XbY5nksOzH+pC41UBwCX TQJxG/SyCABRZVpuUS+AX8jL6zPPA3ok6tu1vFygVLBJdyGH3G/0zuPCD24LzHZ9oD tARRXX7km+YfJMPWwLZNYpH87DJDcE1p2o2mB0Ejm50e57dOu79t/A5DQ9etmjXOBA qG9toaQ4Sv+Hg== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Mike Rapoport , Christoph Hellwig , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro , Dan Williams , Mauro Carvalho Chehab , Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, Alex Williamson , linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "David S . Miller" , Mike Kravetz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SW50cm9kdWNlIHBpbl91c2VyX3BhZ2VzKigpIHZhcmlhdGlvbnMgb2YgZ2V0X3VzZXJfcGFnZXMq KCkgY2FsbHMsCmFuZCBhbHNvIHBpbl9sb25ndGVybV9wYWdlcyooKSB2YXJpYXRpb25zLgoKRm9y IG5vdywgdGhlc2UgYXJlIHBsYWNlaG9sZGVyIGNhbGxzLCB1bnRpbCB0aGUgdmFyaW91cyBjYWxs IHNpdGVzCmFyZSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigp IG9yCnBpbl91c2VyX3BhZ2VzKigpIEFQSS4KClRoZXNlIHZhcmlhbnRzIHdpbGwgZXZlbnR1YWxs eSBhbGwgc2V0IEZPTExfUElOLCB3aGljaCBpcyBhbHNvCmludHJvZHVjZWQsIGFuZCB0aG9yb3Vn aGx5IGRvY3VtZW50ZWQuCgogICAgcGluX3VzZXJfcGFnZXMoKQogICAgcGluX3VzZXJfcGFnZXNf cmVtb3RlKCkKICAgIHBpbl91c2VyX3BhZ2VzX2Zhc3QoKQoKQWxsIHBhZ2VzIHRoYXQgYXJlIHBp bm5lZCB2aWEgdGhlIGFib3ZlIGNhbGxzLCBtdXN0IGJlIHVucGlubmVkIHZpYQpwdXRfdXNlcl9w YWdlKCkuCgpUaGUgdW5kZXJseWluZyBydWxlcyBhcmU6CgoqIEZPTExfUElOIGlzIGEgZ3VwLWlu dGVybmFsIGZsYWcsIHNvIHRoZSBjYWxsIHNpdGVzIHNob3VsZCBub3QgZGlyZWN0bHkKc2V0IGl0 LiBUaGF0IGJlaGF2aW9yIGlzIGVuZm9yY2VkIHdpdGggYXNzZXJ0aW9ucy4KCiogQ2FsbCBzaXRl cyB0aGF0IHdhbnQgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBnb2luZyB0byBkbyBEaXJlY3RJ TwogICgiRElPIikgb3Igc29tZXRoaW5nIHdpdGggc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MsIHNo b3VsZCBjYWxsIGEKICBnZXRfdXNlcl9wYWdlcygpLWxpa2Ugd3JhcHBlciBjYWxsIHRoYXQgc2V0 cyBGT0xMX1BJTi4gVGhlc2Ugd3JhcHBlcnMKICB3aWxsOgogICAgICAgICogU3RhcnQgd2l0aCAi cGluX3VzZXJfcGFnZXMiIGluc3RlYWQgb2YgImdldF91c2VyX3BhZ2VzIi4gVGhhdAogICAgICAg ICAgbWFrZXMgaXQgZWFzeSB0byBmaW5kIGFuZCBhdWRpdCB0aGUgY2FsbCBzaXRlcy4KICAgICAg ICAqIFNldCBGT0xMX1BJTgoKKiBGb3IgcGFnZXMgdGhhdCBhcmUgcmVjZWl2ZWQgdmlhIEZPTExf UElOLCB0aG9zZSBwYWdlcyBtdXN0IGJlIHJldHVybmVkCiAgdmlhIHB1dF91c2VyX3BhZ2UoKS4K ClRoYW5rcyB0byBKYW4gS2FyYSBhbmQgVmxhc3RpbWlsIEJhYmthIGZvciBleHBsYWluaW5nIHRo ZSA0IGNhc2VzCmluIHRoaXMgZG9jdW1lbnRhdGlvbi4gKEkndmUgcmV3b3JkZWQgaXQgYW5kIGV4 cGFuZGVkIHVwb24gaXQuKQoKUmV2aWV3ZWQtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+ClJl dmlld2VkLWJ5OiBNaWtlIFJhcG9wb3J0IDxycHB0QGxpbnV4LmlibS5jb20+ICAjIERvY3VtZW50 YXRpb24KUmV2aWV3ZWQtYnk6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpD YzogSm9uYXRoYW4gQ29yYmV0IDxjb3JiZXRAbHduLm5ldD4KQ2M6IElyYSBXZWlueSA8aXJhLndl aW55QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlk aWEuY29tPgotLS0KIERvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0ICAgICAgICAgIHwg ICAxICsKIERvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IHwgMjMyICsr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDYzICsrKystLQogbW0vZ3VwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxNjEgKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDQyMyBpbnNlcnRp b25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9u L2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9pbmRleC5yc3QKaW5k ZXggYWIwZWFlMWMxNTNhLi40MTNmN2Q3Yzg2NDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0CisrKyBiL0RvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0 CkBAIC0zMSw2ICszMSw3IEBAIENvcmUgdXRpbGl0aWVzCiAgICBnZW5lcmljLXJhZGl4LXRyZWUK ICAgIG1lbW9yeS1hbGxvY2F0aW9uCiAgICBtbS1hcGkKKyAgIHBpbl91c2VyX3BhZ2VzCiAgICBn ZnBfbWFzay1mcm9tLWZzLWlvCiAgICB0aW1la2VlcGluZwogICAgYm9vdC10aW1lLW1tCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdCBiL0RvY3Vt ZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdhMjYxZDg2OWYxCi0tLSAvZGV2L251bGwKKysrIGIvRG9j dW1lbnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKQEAgLTAsMCArMSwyMzIgQEAK Ky4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3Bpbl91c2VyX3BhZ2VzKCkgYW5k IHJlbGF0ZWQgY2FsbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLi4gY29udGVudHM6OiA6bG9jYWw6CisKK092ZXJ2aWV3Cis9PT09PT09 PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogOjoK KworIHBpbl91c2VyX3BhZ2VzCisgcGluX3VzZXJfcGFnZXNfZmFzdAorIHBpbl91c2VyX3BhZ2Vz X3JlbW90ZQorCitCYXNpYyBkZXNjcmlwdGlvbiBvZiBGT0xMX1BJTgorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworRk9MTF9QSU4gYW5kIEZPTExfTE9OR1RFUk0gYXJlIGZsYWdzIHRo YXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgZ2V0X3VzZXJfcGFnZXMqKCkKKygiZ3VwIikgZmFtaWx5 IG9mIGZ1bmN0aW9ucy4gRk9MTF9QSU4gaGFzIHNpZ25pZmljYW50IGludGVyYWN0aW9ucyBhbmQK K2ludGVyZGVwZW5kZW5jaWVzIHdpdGggRk9MTF9MT05HVEVSTSwgc28gYm90aCBhcmUgY292ZXJl ZCBoZXJlLgorCitGT0xMX1BJTiBpcyBpbnRlcm5hbCB0byBndXAsIG1lYW5pbmcgdGhhdCBpdCBz aG91bGQgbm90IGFwcGVhciBhdCB0aGUgZ3VwIGNhbGwKK3NpdGVzLiBUaGlzIGFsbG93cyB0aGUg YXNzb2NpYXRlZCB3cmFwcGVyIGZ1bmN0aW9ucyAgKHBpbl91c2VyX3BhZ2VzKigpIGFuZAorb3Ro ZXJzKSB0byBzZXQgdGhlIGNvcnJlY3QgY29tYmluYXRpb24gb2YgdGhlc2UgZmxhZ3MsIGFuZCB0 byBjaGVjayBmb3IgcHJvYmxlbXMKK2FzIHdlbGwuCisKK0ZPTExfTE9OR1RFUk0sIG9uIHRoZSBv dGhlciBoYW5kLCAqaXMqIGFsbG93ZWQgdG8gYmUgc2V0IGF0IHRoZSBndXAgY2FsbCBzaXRlcy4K K1RoaXMgaXMgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBsYXJnZSBudW1iZXIgb2Ygd3Jh cHBlciBmdW5jdGlvbnMgdG8gY292ZXIKK2FsbCBjb21iaW5hdGlvbnMgb2YgZ2V0KigpLCBwaW4q KCksIEZPTExfTE9OR1RFUk0sIGFuZCBtb3JlLiBBbHNvLCB0aGUKK3Bpbl91c2VyX3BhZ2VzKigp IEFQSXMgYXJlIGNsZWFybHkgZGlzdGluY3QgZnJvbSB0aGUgZ2V0X3VzZXJfcGFnZXMqKCkgQVBJ cywgc28KK3RoYXQncyBhIG5hdHVyYWwgZGl2aWRpbmcgbGluZSwgYW5kIGEgZ29vZCBwb2ludCB0 byBtYWtlIHNlcGFyYXRlIHdyYXBwZXIgY2FsbHMuCitJbiBvdGhlciB3b3JkcywgdXNlIHBpbl91 c2VyX3BhZ2VzKigpIGZvciBETUEtcGlubmVkIHBhZ2VzLCBhbmQKK2dldF91c2VyX3BhZ2VzKigp IGZvciBvdGhlciBjYXNlcy4gVGhlcmUgYXJlIGZvdXIgY2FzZXMgZGVzY3JpYmVkIGxhdGVyIG9u IGluCit0aGlzIGRvY3VtZW50LCB0byBmdXJ0aGVyIGNsYXJpZnkgdGhhdCBjb25jZXB0LgorCitG T0xMX1BJTiBhbmQgRk9MTF9HRVQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBmb3IgYSBnaXZlbiBn dXAgY2FsbC4gSG93ZXZlciwKK211bHRpcGxlIHRocmVhZHMgYW5kIGNhbGwgc2l0ZXMgYXJlIGZy ZWUgdG8gcGluIHRoZSBzYW1lIHN0cnVjdCBwYWdlcywgdmlhIGJvdGgKK0ZPTExfUElOIGFuZCBG T0xMX0dFVC4gSXQncyBqdXN0IHRoZSBjYWxsIHNpdGUgdGhhdCBuZWVkcyB0byBjaG9vc2Ugb25l IG9yIHRoZQorb3RoZXIsIG5vdCB0aGUgc3RydWN0IHBhZ2UocykuCisKK1RoZSBGT0xMX1BJTiBp bXBsZW1lbnRhdGlvbiBpcyBuZWFybHkgdGhlIHNhbWUgYXMgRk9MTF9HRVQsIGV4Y2VwdCB0aGF0 IEZPTExfUElOCit1c2VzIGEgZGlmZmVyZW50IHJlZmVyZW5jZSBjb3VudGluZyB0ZWNobmlxdWUu CisKK0ZPTExfUElOIGlzIGEgcHJlcmVxdWlzaXRlIHRvIEZPTExfTE9OR1RHRVJNLiBBbm90aGVy IHdheSBvZiBzYXlpbmcgdGhhdCBpcywKK0ZPTExfTE9OR1RFUk0gaXMgYSBzcGVjaWZpYyBjYXNl LCBtb3JlIHJlc3RyaWN0aXZlIGNhc2Ugb2YgRk9MTF9QSU4uCisKK1doaWNoIGZsYWdzIGFyZSBz ZXQgYnkgZWFjaCB3cmFwcGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CitGb3IgdGhlc2UgcGluX3VzZXJfcGFnZXMqKCkgZnVuY3Rpb25zLCBGT0xMX1BJTiBpcyBPUidk IGluIHdpdGggd2hhdGV2ZXIgZ3VwCitmbGFncyB0aGUgY2FsbGVyIHByb3ZpZGVzLiBUaGUgY2Fs bGVyIGlzIHJlcXVpcmVkIHRvIHBhc3MgaW4gYSBub24tbnVsbCBzdHJ1Y3QKK3BhZ2VzKiBhcnJh eSwgYW5kIHRoZSBmdW5jdGlvbiB0aGVuIHBpbiBwYWdlcyBieSBpbmNyZW1lbnRpbmcgZWFjaCBi eSBhIHNwZWNpYWwKK3ZhbHVlLiBGb3Igbm93LCB0aGF0IHZhbHVlIGlzICsxLCBqdXN0IGxpa2Ug Z2V0X3VzZXJfcGFnZXMqKCkuOjoKKworIEZ1bmN0aW9uCisgLS0tLS0tLS0KKyBwaW5fdXNlcl9w YWdlcyAgICAgICAgICBGT0xMX1BJTiBpcyBhbHdheXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBm dW5jdGlvbi4KKyBwaW5fdXNlcl9wYWdlc19mYXN0ICAgICBGT0xMX1BJTiBpcyBhbHdheXMgc2V0 IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKyBwaW5fdXNlcl9wYWdlc19yZW1vdGUgICBG T0xMX1BJTiBpcyBhbHdheXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKworRm9y IHRoZXNlIGdldF91c2VyX3BhZ2VzKigpIGZ1bmN0aW9ucywgRk9MTF9HRVQgbWlnaHQgbm90IGV2 ZW4gYmUgc3BlY2lmaWVkLgorQmVoYXZpb3IgaXMgYSBsaXR0bGUgbW9yZSBjb21wbGV4IHRoYW4g YWJvdmUuIElmIEZPTExfR0VUIHdhcyAqbm90KiBzcGVjaWZpZWQsCitidXQgdGhlIGNhbGxlciBw YXNzZWQgaW4gYSBub24tbnVsbCBzdHJ1Y3QgcGFnZXMqIGFycmF5LCB0aGVuIHRoZSBmdW5jdGlv bgorc2V0cyBGT0xMX0dFVCBmb3IgeW91LCBhbmQgcHJvY2VlZHMgdG8gcGluIHBhZ2VzIGJ5IGlu Y3JlbWVudGluZyB0aGUgcmVmY291bnQKK29mIGVhY2ggcGFnZSBieSArMS46OgorCisgRnVuY3Rp b24KKyAtLS0tLS0tLQorIGdldF91c2VyX3BhZ2VzICAgICAgICAgICBGT0xMX0dFVCBpcyBzb21l dGltZXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKyBnZXRfdXNlcl9wYWdlc19m YXN0ICAgICAgRk9MTF9HRVQgaXMgc29tZXRpbWVzIHNldCBpbnRlcm5hbGx5IGJ5IHRoaXMgZnVu Y3Rpb24uCisgZ2V0X3VzZXJfcGFnZXNfcmVtb3RlICAgIEZPTExfR0VUIGlzIHNvbWV0aW1lcyBz ZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorCitUcmFja2luZyBkbWEtcGlubmVkIHBh Z2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgb2YgdGhlIGtleSBkZXNpZ24g Y29uc3RyYWludHMsIGFuZCBzb2x1dGlvbnMsIGZvciB0cmFja2luZyBkbWEtcGlubmVkCitwYWdl czoKKworKiBBbiBhY3R1YWwgcmVmZXJlbmNlIGNvdW50LCBwZXIgc3RydWN0IHBhZ2UsIGlzIHJl cXVpcmVkLiBUaGlzIGlzIGJlY2F1c2UKKyAgbXVsdGlwbGUgcHJvY2Vzc2VzIG1heSBwaW4gYW5k IHVucGluIGEgcGFnZS4KKworKiBGYWxzZSBwb3NpdGl2ZXMgKHJlcG9ydGluZyB0aGF0IGEgcGFn ZSBpcyBkbWEtcGlubmVkLCB3aGVuIGluIGZhY3QgaXQgaXMgbm90KQorICBhcmUgYWNjZXB0YWJs ZSwgYnV0IGZhbHNlIG5lZ2F0aXZlcyBhcmUgbm90LgorCisqIHN0cnVjdCBwYWdlIG1heSBub3Qg YmUgaW5jcmVhc2VkIGluIHNpemUgZm9yIHRoaXMsIGFuZCBhbGwgZmllbGRzIGFyZSBhbHJlYWR5 CisgIHVzZWQuCisKKyogR2l2ZW4gdGhlIGFib3ZlLCB3ZSBjYW4gb3ZlcmxvYWQgdGhlIHBhZ2Ut Pl9yZWZjb3VudCBmaWVsZCBieSB1c2luZywgc29ydCBvZiwKKyAgdGhlIHVwcGVyIGJpdHMgaW4g dGhhdCBmaWVsZCBmb3IgYSBkbWEtcGlubmVkIGNvdW50LiAiU29ydCBvZiIsIG1lYW5zIHRoYXQs CisgIHJhdGhlciB0aGFuIGRpdmlkaW5nIHBhZ2UtPl9yZWZjb3VudCBpbnRvIGJpdCBmaWVsZHMs IHdlIHNpbXBsZSBhZGQgYSBtZWRpdW0tCisgIGxhcmdlIHZhbHVlIChHVVBfUElOX0NPVU5USU5H X0JJQVMsIGluaXRpYWxseSBjaG9zZW4gdG8gYmUgMTAyNDogMTAgYml0cykgdG8KKyAgcGFnZS0+ X3JlZmNvdW50LiBUaGlzIHByb3ZpZGVzIGZ1enp5IGJlaGF2aW9yOiBpZiBhIHBhZ2UgaGFzIGdl dF9wYWdlKCkgY2FsbGVkCisgIG9uIGl0IDEwMjQgdGltZXMsIHRoZW4gaXQgd2lsbCBhcHBlYXIg dG8gaGF2ZSBhIHNpbmdsZSBkbWEtcGlubmVkIGNvdW50LgorICBBbmQgYWdhaW4sIHRoYXQncyBh Y2NlcHRhYmxlLgorCitUaGlzIGFsc28gbGVhZHMgdG8gbGltaXRhdGlvbnM6IHRoZXJlIGFyZSBv bmx5IDMxLTEwPT0yMSBiaXRzIGF2YWlsYWJsZSBmb3IgYQorY291bnRlciB0aGF0IGluY3JlbWVu dHMgMTAgYml0cyBhdCBhIHRpbWUuCisKK1RPRE86IGZvciAxR0IgYW5kIGxhcmdlciBodWdlIHBh Z2VzLCB0aGlzIGlzIGN1dHRpbmcgaXQgY2xvc2UuIFRoYXQncyBiZWNhdXNlCit3aGVuIHBpbl91 c2VyX3BhZ2VzKCkgZm9sbG93cyBzdWNoIHBhZ2VzLCBpdCBpbmNyZW1lbnRzIHRoZSBoZWFkIHBh Z2UgYnkgIjEiCisod2hlcmUgIjEiIHVzZWQgdG8gbWVhbiAiKzEiIGZvciBnZXRfdXNlcl9wYWdl cygpLCBidXQgbm93IG1lYW5zICIrMTAyNCIgZm9yCitwaW5fdXNlcl9wYWdlcygpKSBmb3IgZWFj aCB0YWlsIHBhZ2UuIFNvIGlmIHlvdSBoYXZlIGEgMUdCIGh1Z2UgcGFnZToKKworKiBUaGVyZSBh cmUgMjU2SyAoMTggYml0cykgd29ydGggb2YgNCBLQiB0YWlsIHBhZ2VzLgorKiBUaGVyZSBhcmUg MjEgYml0cyBhdmFpbGFibGUgdG8gY291bnQgdXAgdmlhIEdVUF9QSU5fQ09VTlRJTkdfQklBUyAo dGhhdCBpcywKKyAgMTAgYml0cyBhdCBhIHRpbWUpCisqIFRoZXJlIGFyZSAyMSAtIDE4ID09IDMg Yml0cyBhdmFpbGFibGUgdG8gY291bnQuIEV4Y2VwdCB0aGF0IHRoZXJlIGFyZW4ndCwKKyAgYmVj YXVzZSB5b3UgbmVlZCB0byBhbGxvdyBmb3IgYSBmZXcgbm9ybWFsIGdldF9wYWdlKCkgY2FsbHMg b24gdGhlIGhlYWQgcGFnZSwKKyAgYXMgd2VsbC4gRm9ydHVuYXRlbHksIHRoZSBhcHByb2FjaCBv ZiB1c2luZyBhZGRpdGlvbiwgcmF0aGVyIHRoYW4gImhhcmQiCisgIGJpdGZpZWxkcywgd2l0aGlu IHBhZ2UtPl9yZWZjb3VudCwgYWxsb3dzIGZvciBzaGFyaW5nIHRoZXNlIGJpdHMgZ3JhY2VmdWxs eS4KKyAgQnV0IHdlJ3JlIHN0aWxsIGxvb2tpbmcgYXQgYWJvdXQgOCByZWZlcmVuY2VzLgorCitU aGlzLCBob3dldmVyLCBpcyBhIG1pc3NpbmcgZmVhdHVyZSBtb3JlIHRoYW4gYW55dGhpbmcgZWxz ZSwgYmVjYXVzZSBpdCdzIGVhc2lseQorc29sdmVkIGJ5IGFkZHJlc3NpbmcgYW4gb2J2aW91cyBp bmVmZmljaWVuY3kgaW4gdGhlIG9yaWdpbmFsIGdldF91c2VyX3BhZ2VzKCkKK2FwcHJvYWNoIG9m IHJldHJpZXZpbmcgcGFnZXM6IHN0b3AgdHJlYXRpbmcgYWxsIHRoZSBwYWdlcyBhcyBpZiB0aGV5 IHdlcmUKK1BBR0VfU0laRS4gUmV0cmlldmUgaHVnZSBwYWdlcyBhcyBodWdlIHBhZ2VzLiBUaGUg Y2FsbGVycyBuZWVkIHRvIGJlIGF3YXJlIG9mCit0aGlzLCBzbyBzb21lIHdvcmsgaXMgcmVxdWly ZWQuIE9uY2UgdGhhdCdzIGluIHBsYWNlLCB0aGlzIGxpbWl0YXRpb24gbW9zdGx5CitkaXNhcHBl YXJzIGZyb20gdmlldywgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIGFtcGxlIHJlZmNvdW50aW5nIHJh bmdlIGF2YWlsYWJsZS4KKworKiBDYWxsZXJzIG11c3Qgc3BlY2lmaWNhbGx5IHJlcXVlc3QgImRt YS1waW5uZWQgdHJhY2tpbmcgb2YgcGFnZXMiLiBJbiBvdGhlcgorICB3b3JkcywganVzdCBjYWxs aW5nIGdldF91c2VyX3BhZ2VzKCkgd2lsbCBub3Qgc3VmZmljZTsgYSBuZXcgc2V0IG9mIGZ1bmN0 aW9ucywKKyAgcGluX3VzZXJfcGFnZSgpIGFuZCByZWxhdGVkLCBtdXN0IGJlIHVzZWQuCisKK0ZP TExfUElOLCBGT0xMX0dFVCwgRk9MTF9MT05HVEVSTTogd2hlbiB0byB1c2Ugd2hpY2ggZmxhZ3MK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworVGhhbmtzIHRvIEphbiBLYXJhLCBWbGFzdGltaWwgQmFia2EgYW5kIHNldmVyYWwgb3Ro ZXIgLW1tIHBlb3BsZSwgZm9yIGRlc2NyaWJpbmcKK3RoZXNlIGNhdGVnb3JpZXM6CisKK0NBU0Ug MTogRGlyZWN0IElPIChESU8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIEdV UCByZWZlcmVuY2VzIHRvIHBhZ2VzIHRoYXQgYXJlIHNlcnZpbmcKK2FzIERJTyBidWZmZXJzLiBU aGVzZSBidWZmZXJzIGFyZSBuZWVkZWQgZm9yIGEgcmVsYXRpdmVseSBzaG9ydCB0aW1lIChzbyB0 aGV5CithcmUgbm90ICJsb25nIHRlcm0iKS4gTm8gc3BlY2lhbCBzeW5jaHJvbml6YXRpb24gd2l0 aCBwYWdlX21rY2xlYW4oKSBvcgorbXVubWFwKCkgaXMgcHJvdmlkZWQuIFRoZXJlZm9yZSwgZmxh Z3MgdG8gc2V0IGF0IHRoZSBjYWxsIHNpdGUgYXJlOiA6OgorCisgICAgRk9MTF9QSU4KKworLi4u YnV0IHJhdGhlciB0aGFuIHNldHRpbmcgRk9MTF9QSU4gZGlyZWN0bHksIGNhbGwgc2l0ZXMgc2hv dWxkIHVzZSBvbmUgb2YKK3RoZSBwaW5fdXNlcl9wYWdlcyooKSByb3V0aW5lcyB0aGF0IHNldCBG T0xMX1BJTi4KKworQ0FTRSAyOiBSRE1BCistLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSBHVVAgcmVm ZXJlbmNlcyB0byBwYWdlcyB0aGF0IGFyZSBzZXJ2aW5nIGFzIERNQQorYnVmZmVycy4gVGhlc2Ug YnVmZmVycyBhcmUgbmVlZGVkIGZvciBhIGxvbmcgdGltZSAoImxvbmcgdGVybSIpLiBObyBzcGVj aWFsCitzeW5jaHJvbml6YXRpb24gd2l0aCBwYWdlX21rY2xlYW4oKSBvciBtdW5tYXAoKSBpcyBw cm92aWRlZC4gVGhlcmVmb3JlLCBmbGFncwordG8gc2V0IGF0IHRoZSBjYWxsIHNpdGUgYXJlOiA6 OgorCisgICAgRk9MTF9QSU4gfCBGT0xMX0xPTkdURVJNCisKK05PVEU6IFNvbWUgcGFnZXMsIHN1 Y2ggYXMgREFYIHBhZ2VzLCBjYW5ub3QgYmUgcGlubmVkIHdpdGggbG9uZ3Rlcm0gcGlucy4gVGhh dCdzCitiZWNhdXNlIERBWCBwYWdlcyBkbyBub3QgaGF2ZSBhIHNlcGFyYXRlIHBhZ2UgY2FjaGUs IGFuZCBzbyAicGlubmluZyIgaW1wbGllcworbG9ja2luZyBkb3duIGZpbGUgc3lzdGVtIGJsb2Nr cywgd2hpY2ggaXMgbm90ICh5ZXQpIHN1cHBvcnRlZCBpbiB0aGF0IHdheS4KKworQ0FTRSAzOiBI YXJkd2FyZSB3aXRoIHBhZ2UgZmF1bHRpbmcgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVyZSwgYSB3ZWxsLXdyaXR0ZW4gZHJpdmVyIGRvZXNu J3Qgbm9ybWFsbHkgbmVlZCB0byBwaW4gcGFnZXMgYXQgYWxsLiBIb3dldmVyLAoraWYgdGhlIGRy aXZlciBkb2VzIGNob29zZSB0byBkbyBzbywgaXQgY2FuIHJlZ2lzdGVyIE1NVSBub3RpZmllcnMg Zm9yIHRoZSByYW5nZSwKK2FuZCB3aWxsIGJlIGNhbGxlZCBiYWNrIHVwb24gaW52YWxpZGF0aW9u LiBFaXRoZXIgd2F5IChhdm9pZGluZyBwYWdlIHBpbm5pbmcsIG9yCit1c2luZyBNTVUgbm90aWZp ZXJzIHRvIHVucGluIHVwb24gcmVxdWVzdCksIHRoZXJlIGlzIHByb3BlciBzeW5jaHJvbml6YXRp b24gd2l0aAorYm90aCBmaWxlc3lzdGVtIGFuZCBtbSAocGFnZV9ta2NsZWFuKCksIG11bm1hcCgp LCBldGMpLgorCitUaGVyZWZvcmUsIG5laXRoZXIgZmxhZyBuZWVkcyB0byBiZSBzZXQuCisKK0lu IHRoaXMgY2FzZSwgaWRlYWxseSwgbmVpdGhlciBnZXRfdXNlcl9wYWdlcygpIG5vciBwaW5fdXNl cl9wYWdlcygpIHNob3VsZCBiZQorY2FsbGVkLiBJbnN0ZWFkLCB0aGUgc29mdHdhcmUgc2hvdWxk IGJlIHdyaXR0ZW4gc28gdGhhdCBpdCBkb2VzIG5vdCBwaW4gcGFnZXMuCitUaGlzIGFsbG93cyBt bSBhbmQgZmlsZXN5c3RlbXMgdG8gb3BlcmF0ZSBtb3JlIGVmZmljaWVudGx5IGFuZCByZWxpYWJs eS4KKworQ0FTRSA0OiBQaW5uaW5nIGZvciBzdHJ1Y3QgcGFnZSBtYW5pcHVsYXRpb24gb25seQor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVyZSwg bm9ybWFsIEdVUCBjYWxscyBhcmUgc3VmZmljaWVudCwgc28gbmVpdGhlciBmbGFnIG5lZWRzIHRv IGJlIHNldC4KKworcGFnZV9kbWFfcGlubmVkKCk6IHRoZSB3aG9sZSBwb2ludCBvZiBwaW5uaW5n Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHdo b2xlIHBvaW50IG9mIG1hcmtpbmcgcGFnZXMgYXMgIkRNQS1waW5uZWQiIG9yICJndXAtcGlubmVk IiBpcyB0byBiZSBhYmxlCit0byBxdWVyeSwgImlzIHRoaXMgcGFnZSBETUEtcGlubmVkPyIgVGhh dCBhbGxvd3MgY29kZSBzdWNoIGFzIHBhZ2VfbWtjbGVhbigpCisoYW5kIGZpbGUgc3lzdGVtIHdy aXRlYmFjayBjb2RlIGluIGdlbmVyYWwpIHRvIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFib3V0 Cit3aGF0IHRvIGRvIHdoZW4gYSBwYWdlIGNhbm5vdCBiZSB1bm1hcHBlZCBkdWUgdG8gc3VjaCBw aW5zLgorCitXaGF0IHRvIGRvIGluIHRob3NlIGNhc2VzIGlzIHRoZSBzdWJqZWN0IG9mIGEgeWVh cnMtbG9uZyBzZXJpZXMgb2YgZGlzY3Vzc2lvbnMKK2FuZCBkZWJhdGVzIChzZWUgdGhlIFJlZmVy ZW5jZXMgYXQgdGhlIGVuZCBvZiB0aGlzIGRvY3VtZW50KS4gSXQncyBhIFRPRE8gaXRlbQoraGVy ZTogZmlsbCBpbiB0aGUgZGV0YWlscyBvbmNlIHRoYXQncyB3b3JrZWQgb3V0LiBNZWFud2hpbGUs IGl0J3Mgc2FmZSB0byBzYXkKK3RoYXQgaGF2aW5nIHRoaXMgYXZhaWxhYmxlOiA6OgorCisgICAg ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWdlX2RtYV9waW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2Up CisKKy4uLmlzIGEgcHJlcmVxdWlzaXRlIHRvIHNvbHZpbmcgdGhlIGxvbmctcnVubmluZyBndXAr RE1BIHByb2JsZW0uCisKK0Fub3RoZXIgd2F5IG9mIHRoaW5raW5nIGFib3V0IEZPTExfR0VULCBG T0xMX1BJTiwgYW5kIEZPTExfTE9OR1RFUk0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQW5vdGhlciB3YXkgb2Yg dGhpbmtpbmcgYWJvdXQgdGhlc2UgZmxhZ3MgaXMgYXMgYSBwcm9ncmVzc2lvbiBvZiByZXN0cmlj dGlvbnM6CitGT0xMX0dFVCBpcyBmb3Igc3RydWN0IHBhZ2UgbWFuaXB1bGF0aW9uLCB3aXRob3V0 IGFmZmVjdGluZyB0aGUgZGF0YSB0aGF0IHRoZQorc3RydWN0IHBhZ2UgcmVmZXJzIHRvLiBGT0xM X1BJTiBpcyBhICpyZXBsYWNlbWVudCogZm9yIEZPTExfR0VULCBhbmQgaXMgZm9yCitzaG9ydCB0 ZXJtIHBpbnMgb24gcGFnZXMgd2hvc2UgZGF0YSAqd2lsbCogZ2V0IGFjY2Vzc2VkLiBBcyBzdWNo LCBGT0xMX1BJTiBpcworYSAibW9yZSBzZXZlcmUiIGZvcm0gb2YgcGlubmluZy4gQW5kIGZpbmFs bHksIEZPTExfTE9OR1RFUk0gaXMgYW4gZXZlbiBtb3JlCityZXN0cmljdGl2ZSBjYXNlIHRoYXQg aGFzIEZPTExfUElOIGFzIGEgcHJlcmVxdWlzaXRlOiB0aGlzIGlzIGZvciBwYWdlcyB0aGF0Cit3 aWxsIGJlIHBpbm5lZCBsb25ndGVybSwgYW5kIHdob3NlIGRhdGEgd2lsbCBiZSBhY2Nlc3NlZC4K KworVW5pdCB0ZXN0aW5nCis9PT09PT09PT09PT0KK1RoaXMgZmlsZTo6CisKKyB0b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy92bS9ndXBfYmVuY2htYXJrLmMKKworaGFzIHRoZSBmb2xsb3dpbmcgbmV3 IGNhbGxzIHRvIGV4ZXJjaXNlIHRoZSBuZXcgcGluKigpIHdyYXBwZXIgZnVuY3Rpb25zOgorCisq IFBJTl9GQVNUX0JFTkNITUFSSyAoLi9ndXBfYmVuY2htYXJrIC1hKQorKiBQSU5fQkVOQ0hNQVJL ICguL2d1cF9iZW5jaG1hcmsgLWIpCisKK1lvdSBjYW4gbW9uaXRvciBob3cgbWFueSB0b3RhbCBk bWEtcGlubmVkIHBhZ2VzIGhhdmUgYmVlbiBhY3F1aXJlZCBhbmQgcmVsZWFzZWQKK3NpbmNlIHRo ZSBzeXN0ZW0gd2FzIGJvb3RlZCwgdmlhIHR3byBuZXcgL3Byb2Mvdm1zdGF0IGVudHJpZXM6IDo6 CisKKyAgICAvcHJvYy92bXN0YXQvbnJfZm9sbF9waW5fcmVxdWVzdGVkCisgICAgL3Byb2Mvdm1z dGF0L25yX2ZvbGxfcGluX3JlcXVlc3RlZAorCitUaG9zZSBhcmUgYm90aCBnb2luZyB0byBzaG93 IHplcm8sIHVubGVzcyBDT05GSUdfREVCVUdfVk0gaXMgc2V0LiBUaGlzIGlzCitiZWNhdXNlIHRo ZXJlIGlzIGEgbm90aWNlYWJsZSBwZXJmb3JtYW5jZSBkcm9wIGluIHB1dF91c2VyX3BhZ2UoKSwg d2hlbiB0aGV5CithcmUgYWN0aXZhdGVkLgorCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKKyog YFNvbWUgc2xvdyBwcm9ncmVzcyBvbiBnZXRfdXNlcl9wYWdlcygpIChBcHIgMiwgMjAxOSkgPGh0 dHBzOi8vbHduLm5ldC9BcnRpY2xlcy83ODQ1NzQvPmBfCisqIGBETUEgYW5kIGdldF91c2VyX3Bh Z2VzKCkgKExQQzogRGVjIDEyLCAyMDE4KSA8aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzc3NDQx MS8+YF8KKyogYFRoZSB0cm91YmxlIHdpdGggZ2V0X3VzZXJfcGFnZXMoKSAoQXByIDMwLCAyMDE4 KSA8aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzc1MzAyNy8+YF8KKworSm9obiBIdWJiYXJkLCBP Y3RvYmVyLCAyMDE5CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xp bnV4L21tLmgKaW5kZXggNzdhNGRmMDZjOGE3Li4wZmI5OTI5ZTAwYWYgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTEwNDgsMTYgKzEw NDgsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQog ICogcHV0X3VzZXJfcGFnZSgpIC0gcmVsZWFzZSBhIGd1cC1waW5uZWQgcGFnZQogICogQHBhZ2U6 ICAgICAgICAgICAgcG9pbnRlciB0byBwYWdlIHRvIGJlIHJlbGVhc2VkCiAgKgotICogUGFnZXMg dGhhdCB3ZXJlIHBpbm5lZCB2aWEgZ2V0X3VzZXJfcGFnZXMqKCkgbXVzdCBiZSByZWxlYXNlZCB2 aWEKLSAqIGVpdGhlciBwdXRfdXNlcl9wYWdlKCksIG9yIG9uZSBvZiB0aGUgcHV0X3VzZXJfcGFn ZXMqKCkgcm91dGluZXMKLSAqIGJlbG93LiBUaGlzIGlzIHNvIHRoYXQgZXZlbnR1YWxseSwgcGFn ZXMgdGhhdCBhcmUgcGlubmVkIHZpYQotICogZ2V0X3VzZXJfcGFnZXMqKCkgY2FuIGJlIHNlcGFy YXRlbHkgdHJhY2tlZCBhbmQgdW5pcXVlbHkgaGFuZGxlZC4gSW4KLSAqIHBhcnRpY3VsYXIsIGlu dGVyYWN0aW9ucyB3aXRoIFJETUEgYW5kIGZpbGVzeXN0ZW1zIG5lZWQgc3BlY2lhbAotICogaGFu ZGxpbmcuCisgKiBQYWdlcyB0aGF0IHdlcmUgcGlubmVkIHZpYSBwaW5fdXNlcl9wYWdlcyooKSBt dXN0IGJlIHJlbGVhc2VkIHZpYSBlaXRoZXIKKyAqIHB1dF91c2VyX3BhZ2UoKSwgb3Igb25lIG9m IHRoZSBwdXRfdXNlcl9wYWdlcyooKSByb3V0aW5lcy4gVGhpcyBpcyBzbyB0aGF0CisgKiBldmVu dHVhbGx5IHN1Y2ggcGFnZXMgY2FuIGJlIHNlcGFyYXRlbHkgdHJhY2tlZCBhbmQgdW5pcXVlbHkg aGFuZGxlZC4gSW4KKyAqIHBhcnRpY3VsYXIsIGludGVyYWN0aW9ucyB3aXRoIFJETUEgYW5kIGZp bGVzeXN0ZW1zIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KICAqCiAgKiBwdXRfdXNlcl9wYWdlKCkg YW5kIHB1dF9wYWdlKCkgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsIGRlc3BpdGUgdGhpcyBlYXJs eQogICogaW1wbGVtZW50YXRpb24gdGhhdCBtYWtlcyB0aGVtIGxvb2sgdGhlIHNhbWUuIHB1dF91 c2VyX3BhZ2UoKSBjYWxscyBtdXN0Ci0gKiBiZSBwZXJmZWN0bHkgbWF0Y2hlZCB1cCB3aXRoIGdl dF91c2VyX3BhZ2UoKSBjYWxscy4KKyAqIGJlIHBlcmZlY3RseSBtYXRjaGVkIHVwIHdpdGggcGlu KigpIGNhbGxzLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3VzZXJfcGFnZShzdHJ1Y3Qg cGFnZSAqcGFnZSkKIHsKQEAgLTE1MTUsOSArMTUxMywxNiBAQCBsb25nIGdldF91c2VyX3BhZ2Vz X3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJ CQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJCSAg ICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJICAgIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKTsKK2xvbmcgcGluX3VzZXJf cGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJ CQkgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpOwogbG9uZyBnZXRfdXNl cl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCQkJ ICAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCQkgICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcyk7Citsb25nIHBpbl91c2VyX3BhZ2VzKHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCSAgICB1bnNpZ25lZCBp bnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkgICAgc3RydWN0IHZtX2FyZWFf c3RydWN0ICoqdm1hcyk7CiBsb25nIGdldF91c2VyX3BhZ2VzX2xvY2tlZCh1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCQkgICAgdW5zaWduZWQgaW50IGd1cF9m bGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywgaW50ICpsb2NrZWQpOwogbG9uZyBnZXRfdXNlcl9w YWdlc191bmxvY2tlZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2Vz LApAQCAtMTUyNSw2ICsxNTMwLDggQEAgbG9uZyBnZXRfdXNlcl9wYWdlc191bmxvY2tlZCh1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCiBpbnQgZ2V0X3VzZXJf cGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJCQl1bnNpZ25l ZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKK2ludCBwaW5fdXNlcl9wYWdl c19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCXVuc2lnbmVkIGlu dCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMpOwogCiBpbnQgYWNjb3VudF9sb2NrZWRf dm0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgcGFnZXMsIGJvb2wgaW5jKTsK IGludCBfX2FjY291bnRfbG9ja2VkX3ZtKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBs b25nIHBhZ2VzLCBib29sIGluYywKQEAgLTI1ODgsMTMgKzI1OTUsMTUgQEAgc3RydWN0IHBhZ2Ug KmZvbGxvd19wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAjZGVmaW5lIEZPTExfQU5PTgkweDgwMDAJLyogZG9uJ3QgZG8gZmlsZSBtYXBwaW5n cyAqLwogI2RlZmluZSBGT0xMX0xPTkdURVJNCTB4MTAwMDAJLyogbWFwcGluZyBsaWZldGltZSBp cyBpbmRlZmluaXRlOiBzZWUgYmVsb3cgKi8KICNkZWZpbmUgRk9MTF9TUExJVF9QTUQJMHgyMDAw MAkvKiBzcGxpdCBodWdlIHBtZCBiZWZvcmUgcmV0dXJuaW5nICovCisjZGVmaW5lIEZPTExfUElO CTB4NDAwMDAJLyogcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgcHV0X3VzZXJfcGFnZSgpICov CiAKIC8qCi0gKiBOT1RFIG9uIEZPTExfTE9OR1RFUk06CisgKiBGT0xMX1BJTiBhbmQgRk9MTF9M T05HVEVSTSBtYXkgYmUgdXNlZCBpbiB2YXJpb3VzIGNvbWJpbmF0aW9ucyB3aXRoIGVhY2gKKyAq IG90aGVyLiBIZXJlIGlzIHdoYXQgdGhleSBtZWFuLCBhbmQgaG93IHRvIHVzZSB0aGVtOgogICoK ICAqIEZPTExfTE9OR1RFUk0gaW5kaWNhdGVzIHRoYXQgdGhlIHBhZ2Ugd2lsbCBiZSBoZWxkIGZv ciBhbiBpbmRlZmluaXRlIHRpbWUKLSAqIHBlcmlvZCBfb2Z0ZW5fIHVuZGVyIHVzZXJzcGFjZSBj b250cm9sLiAgVGhpcyBpcyBjb250cmFzdGVkIHdpdGgKLSAqIGlvdl9pdGVyX2dldF9wYWdlcygp IHdoZXJlIHVzYWdlcyB3aGljaCBhcmUgdHJhbnNpZW50LgorICogcGVyaW9kIF9vZnRlbl8gdW5k ZXIgdXNlcnNwYWNlIGNvbnRyb2wuICBUaGlzIGlzIGluIGNvbnRyYXN0IHRvCisgKiBpb3ZfaXRl cl9nZXRfcGFnZXMoKSwgd2hvc2UgdXNhZ2VzIGFyZSB0cmFuc2llbnQuCiAgKgogICogRklYTUU6 IEZvciBwYWdlcyB3aGljaCBhcmUgcGFydCBvZiBhIGZpbGVzeXN0ZW0sIG1hcHBpbmdzIGFyZSBz dWJqZWN0IHRvIHRoZQogICogbGlmZXRpbWUgZW5mb3JjZWQgYnkgdGhlIGZpbGVzeXN0ZW0gYW5k IHdlIG5lZWQgZ3VhcmFudGVlcyB0aGF0IGxvbmd0ZXJtCkBAIC0yNjA5LDExICsyNjE4LDM5IEBA IHN0cnVjdCBwYWdlICpmb2xsb3dfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5z aWduZWQgbG9uZyBhZGRyZXNzLAogICogQ3VycmVudGx5IG9ubHkgZ2V0X3VzZXJfcGFnZXMoKSBh bmQgZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIHN1cHBvcnQgdGhpcyBmbGFnCiAgKiBhbmQgY2FsbHMg dG8gZ2V0X3VzZXJfcGFnZXNfW3VuXWxvY2tlZCBhcmUgc3BlY2lmaWNhbGx5IG5vdCBhbGxvd2Vk LiAgVGhpcwogICogaXMgZHVlIHRvIGFuIGluY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBGUyBEQVgg Y2hlY2sgYW5kCi0gKiBGQVVMVF9GTEFHX0FMTE9XX1JFVFJZCisgKiBGQVVMVF9GTEFHX0FMTE9X X1JFVFJZLgogICoKLSAqIEluIHRoZSBDTUEgY2FzZTogbG9uZ3Rlcm0gcGlucyBpbiBhIENNQSBy ZWdpb24gd291bGQgdW5uZWNlc3NhcmlseSBmcmFnbWVudAotICogdGhhdCByZWdpb24uICBBbmQg c28gQ01BIGF0dGVtcHRzIHRvIG1pZ3JhdGUgdGhlIHBhZ2UgYmVmb3JlIHBpbm5pbmcgd2hlbgor ICogSW4gdGhlIENNQSBjYXNlOiBsb25nIHRlcm0gcGlucyBpbiBhIENNQSByZWdpb24gd291bGQg dW5uZWNlc3NhcmlseSBmcmFnbWVudAorICogdGhhdCByZWdpb24uICBBbmQgc28sIENNQSBhdHRl bXB0cyB0byBtaWdyYXRlIHRoZSBwYWdlIGJlZm9yZSBwaW5uaW5nLCB3aGVuCiAgKiBGT0xMX0xP TkdURVJNIGlzIHNwZWNpZmllZC4KKyAqCisgKiBGT0xMX1BJTiBpbmRpY2F0ZXMgdGhhdCBhIHNw ZWNpYWwga2luZCBvZiB0cmFja2luZyAobm90IGp1c3QgcGFnZS0+X3JlZmNvdW50LAorICogYnV0 IGFuIGFkZGl0aW9uYWwgcGluIGNvdW50aW5nIHN5c3RlbSkgd2lsbCBiZSBpbnZva2VkLiBUaGlz IGlzIGludGVuZGVkIGZvcgorICogYW55dGhpbmcgdGhhdCBnZXRzIGEgcGFnZSByZWZlcmVuY2Ug YW5kIHRoZW4gdG91Y2hlcyBwYWdlIGRhdGEgKGZvciBleGFtcGxlLAorICogRGlyZWN0IElPKS4g VGhpcyBsZXRzIHRoZSBmaWxlc3lzdGVtIGtub3cgdGhhdCBzb21lIG5vbi1maWxlLXN5c3RlbSBl bnRpdHkgaXMKKyAqIHBvdGVudGlhbGx5IGNoYW5naW5nIHRoZSBwYWdlcycgZGF0YS4gSW4gY29u dHJhc3QgdG8gRk9MTF9HRVQgKHdob3NlIHBhZ2VzCisgKiBhcmUgcmVsZWFzZWQgdmlhIHB1dF9w YWdlKCkpLCBGT0xMX1BJTiBwYWdlcyBtdXN0IGJlIHJlbGVhc2VkLCB1bHRpbWF0ZWx5LCBieQor ICogYSBjYWxsIHRvIHB1dF91c2VyX3BhZ2UoKS4KKyAqCisgKiBGT0xMX1BJTiBpcyBzaW1pbGFy IHRvIEZPTExfR0VUOiBib3RoIG9mIHRoZXNlIHBpbiBwYWdlcy4gVGhleSB1c2UgZGlmZmVyZW50 CisgKiBhbmQgc2VwYXJhdGUgcmVmY291bnRpbmcgbWVjaGFuaXNtcywgaG93ZXZlciwgYW5kIHRo YXQgbWVhbnMgdGhhdCBlYWNoIGhhcworICogaXRzIG93biBhY3F1aXJlIGFuZCByZWxlYXNlIG1l Y2hhbmlzbXM6CisgKgorICogICAgIEZPTExfR0VUOiBnZXRfdXNlcl9wYWdlcyooKSB0byBhY3F1 aXJlLCBhbmQgcHV0X3BhZ2UoKSB0byByZWxlYXNlLgorICoKKyAqICAgICBGT0xMX1BJTjogcGlu X3VzZXJfcGFnZXMqKCkgdG8gYWNxdWlyZSwgYW5kIHB1dF91c2VyX3BhZ2VzIHRvIHJlbGVhc2Uu CisgKgorICogRk9MTF9QSU4gYW5kIEZPTExfR0VUIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgZm9y IGEgZ2l2ZW4gZnVuY3Rpb24gY2FsbC4KKyAqIChUaGUgdW5kZXJseWluZyBwYWdlcyBtYXkgZXhw ZXJpZW5jZSBib3RoIEZPTExfR0VULWJhc2VkIGFuZCBGT0xMX1BJTi1iYXNlZAorICogY2FsbHMg YXBwbGllZCB0byB0aGVtLCBhbmQgdGhhdCdzIHBlcmZlY3RseSBPSy4gVGhpcyBpcyBhIGNvbnN0 cmFpbnQgb24gdGhlCisgKiBjYWxsZXJzLCBub3Qgb24gdGhlIHBhZ2VzLikKKyAqCisgKiBGT0xM X1BJTiBzaG91bGQgYmUgc2V0IGludGVybmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQ SXMsIG5ldmVyCisgKiBkaXJlY3RseSBieSB0aGUgY2FsbGVyLiBUaGF0J3MgaW4gb3JkZXIgdG8g aGVscCBhdm9pZCBtaXNtYXRjaGVzIHdoZW4KKyAqIHJlbGVhc2luZyBwYWdlczogZ2V0X3VzZXJf cGFnZXMqKCkgcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgcHV0X3BhZ2UoKSwKKyAqIHdoaWxl IHBpbl91c2VyX3BhZ2VzKigpIHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF91c2VyX3Bh Z2UoKS4KKyAqCisgKiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vdm0vcGluX3VzZXJfcGFnZXMu cnN0IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICovCiAKIHN0YXRpYyBpbmxpbmUgaW50IHZtX2Zh dWx0X3RvX2Vycm5vKHZtX2ZhdWx0X3Qgdm1fZmF1bHQsIGludCBmb2xsX2ZsYWdzKQpkaWZmIC0t Z2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuYwppbmRleCA5NThhYjA3NTczODkuLjQ4NjJmZjk4MmJj MyAxMDA2NDQKLS0tIGEvbW0vZ3VwLmMKKysrIGIvbW0vZ3VwLmMKQEAgLTIwMSw2ICsyMDEsMTAg QEAgc3RhdGljIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFnZV9wdGUoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsCiAJc3BpbmxvY2tfdCAqcHRsOwogCXB0ZV90ICpwdGVwLCBwdGU7CiAKKwkvKiBG T0xMX0dFVCBhbmQgRk9MTF9QSU4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gKi8KKwlpZiAoV0FS Tl9PTl9PTkNFKChmbGFncyAmIChGT0xMX1BJTiB8IEZPTExfR0VUKSkgPT0KKwkJCSAoRk9MTF9Q SU4gfCBGT0xMX0dFVCkpKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIHJldHJ5OgogCWlm ICh1bmxpa2VseShwbWRfYmFkKCpwbWQpKSkKIAkJcmV0dXJuIG5vX3BhZ2VfdGFibGUodm1hLCBm bGFncyk7CkBAIC04MTgsNyArODIyLDcgQEAgc3RhdGljIGxvbmcgX19nZXRfdXNlcl9wYWdlcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAKIAlzdGFydCA9 IHVudGFnZ2VkX2FkZHIoc3RhcnQpOwogCi0JVk1fQlVHX09OKCEhcGFnZXMgIT0gISEoZ3VwX2Zs YWdzICYgRk9MTF9HRVQpKTsKKwlWTV9CVUdfT04oISFwYWdlcyAhPSAhIShndXBfZmxhZ3MgJiAo Rk9MTF9HRVQgfCBGT0xMX1BJTikpKTsKIAogCS8qCiAJICogSWYgRk9MTF9GT1JDRSBpcyBzZXQg dGhlbiBkbyBub3QgZm9yY2UgYSBmdWxsIGZhdWx0IGFzIHRoZSBoaW50aW5nCkBAIC0xMDQyLDcg KzEwNDYsMTYgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIF9fZ2V0X3VzZXJfcGFnZXNf bG9ja2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogCQlCVUdfT04oKmxvY2tlZCAhPSAxKTsK IAl9CiAKLQlpZiAocGFnZXMpCisJLyoKKwkgKiBGT0xMX1BJTiBhbmQgRk9MTF9HRVQgYXJlIG11 dHVhbGx5IGV4Y2x1c2l2ZS4gVHJhZGl0aW9uYWwgYmVoYXZpb3IKKwkgKiBpcyB0byBzZXQgRk9M TF9HRVQgaWYgdGhlIGNhbGxlciB3YW50cyBwYWdlc1tdIGZpbGxlZCBpbiAoYnV0IGhhcworCSAq IGNhcmVsZXNzbHkgZmFpbGVkIHRvIHNwZWNpZnkgRk9MTF9HRVQpLCBzbyBrZWVwIGRvaW5nIHRo YXQsIGJ1dCBvbmx5CisJICogZm9yIEZPTExfR0VULCBub3QgZm9yIHRoZSBuZXdlciBGT0xMX1BJ Ti4KKwkgKgorCSAqIEZPTExfUElOIGFsd2F5cyBleHBlY3RzIHBhZ2VzIHRvIGJlIG5vbi1udWxs LCBidXQgbm8gbmVlZCB0byBhc3NlcnQKKwkgKiB0aGF0IGhlcmUsIGFzIGFueSBmYWlsdXJlcyB3 aWxsIGJlIG9idmlvdXMgZW5vdWdoLgorCSAqLworCWlmIChwYWdlcyAmJiAhKGZsYWdzICYgRk9M TF9QSU4pKQogCQlmbGFncyB8PSBGT0xMX0dFVDsKIAogCXBhZ2VzX2RvbmUgPSAwOwpAQCAtMTE4 NSw2ICsxMTk4LDEzIEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJdW5zaWduZWQgaW50IGd1cF9mbGFn cywgc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywg aW50ICpsb2NrZWQpCiB7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9ubHkgYmUgc2V0IGludGVy bmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICogbmV2ZXIgZGlyZWN0bHkg YnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0IHdpdGggYW4gYXNzZXJ0aW9uOgorCSAqLwor CWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJTlZB TDsKKwogCS8qCiAJICogUGFydHMgb2YgRk9MTF9MT05HVEVSTSBiZWhhdmlvciBhcmUgaW5jb21w YXRpYmxlIHdpdGgKIAkgKiBGQVVMVF9GTEFHX0FMTE9XX1JFVFJZIGJlY2F1c2Ugb2YgdGhlIEZT IERBWCBjaGVjayByZXF1aXJlbWVudCBvbgpAQCAtMTQwMCw2ICsxNDIwLDE0IEBAIHN0YXRpYyBs b25nIF9fZ2V0X3VzZXJfcGFnZXNfbG9ja2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogZmlu aXNoX29yX2ZhdWx0OgogCXJldHVybiBpID8gOiAtRUZBVUxUOwogfQorCitsb25nIGdldF91c2Vy X3BhZ2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAq bW0sCisJCQkgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAor CQkJICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCSAg IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKQoreworCXJldHVybiAw OworfQogI2VuZGlmIC8qICFDT05GSUdfTU1VICovCiAKICNpZiBkZWZpbmVkKENPTkZJR19GU19E QVgpIHx8IGRlZmluZWQgKENPTkZJR19DTUEpCkBAIC0xNjU0LDYgKzE2ODIsMTMgQEAgbG9uZyBn ZXRfdXNlcl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2Vz LAogCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzKQogeworCS8qCisJICogRk9MTF9QSU4gbXVzdCBvbmx5 IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRoZSBwaW5fdXNlcl9wYWdlcyooKSBBUElzLAorCSAqIG5l dmVyIGRpcmVjdGx5IGJ5IHRoZSBjYWxsZXIsIHNvIGVuZm9yY2UgdGhhdCB3aXRoIGFuIGFzc2Vy dGlvbjoKKwkgKi8KKwlpZiAoV0FSTl9PTl9PTkNFKGd1cF9mbGFncyAmIEZPTExfUElOKSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKIAlyZXR1cm4gX19ndXBfbG9uZ3Rlcm1fbG9ja2VkKGN1cnJlbnQs IGN1cnJlbnQtPm1tLCBzdGFydCwgbnJfcGFnZXMsCiAJCQkJICAgICBwYWdlcywgdm1hcywgZ3Vw X2ZsYWdzIHwgRk9MTF9UT1VDSCk7CiB9CkBAIC0yMzkyLDMwICsyNDI3LDE1IEBAIHN0YXRpYyBp bnQgX19ndXBfbG9uZ3Rlcm1fdW5sb2NrZWQodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3Bh Z2VzLAogCXJldHVybiByZXQ7CiB9CiAKLS8qKgotICogZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0g cGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5Ci0gKiBAc3RhcnQ6CXN0YXJ0aW5nIHVzZXIgYWRkcmVz cwotICogQG5yX3BhZ2VzOgludW1iZXIgb2YgcGFnZXMgZnJvbSBzdGFydCB0byBwaW4KLSAqIEBn dXBfZmxhZ3M6CWZsYWdzIG1vZGlmeWluZyBwaW4gYmVoYXZpb3VyCi0gKiBAcGFnZXM6CWFycmF5 IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMgdG8gdGhlIHBhZ2VzIHBpbm5lZC4KLSAqCQlTaG91bGQg YmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9uZy4KLSAqCi0gKiBBdHRlbXB0IHRvIHBpbiB1c2VyIHBh Z2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBtbS0+bW1hcF9zZW0uCi0gKiBJZiBub3Qgc3Vj Y2Vzc2Z1bCwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gdGFraW5nIHRoZSBsb2NrIGFuZAotICogY2Fs bGluZyBnZXRfdXNlcl9wYWdlcygpLgotICoKLSAqIFJldHVybnMgbnVtYmVyIG9mIHBhZ2VzIHBp bm5lZC4gVGhpcyBtYXkgYmUgZmV3ZXIgdGhhbiB0aGUgbnVtYmVyCi0gKiByZXF1ZXN0ZWQuIElm IG5yX3BhZ2VzIGlzIDAgb3IgbmVnYXRpdmUsIHJldHVybnMgMC4gSWYgbm8gcGFnZXMKLSAqIHdl cmUgcGlubmVkLCByZXR1cm5zIC1lcnJuby4KLSAqLwotaW50IGdldF91c2VyX3BhZ2VzX2Zhc3Qo dW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAotCQkJdW5zaWduZWQgaW50IGd1cF9m bGFncywgc3RydWN0IHBhZ2UgKipwYWdlcykKK3N0YXRpYyBpbnQgaW50ZXJuYWxfZ2V0X3VzZXJf cGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCisJCQkJCXVuc2ln bmVkIGludCBndXBfZmxhZ3MsCisJCQkJCXN0cnVjdCBwYWdlICoqcGFnZXMpCiB7CiAJdW5zaWdu ZWQgbG9uZyBhZGRyLCBsZW4sIGVuZDsKIAlpbnQgbnIgPSAwLCByZXQgPSAwOwogCiAJaWYgKFdB Uk5fT05fT05DRShndXBfZmxhZ3MgJiB+KEZPTExfV1JJVEUgfCBGT0xMX0xPTkdURVJNIHwKLQkJ CQkgICAgICAgRk9MTF9GT1JDRSkpKQorCQkJCSAgICAgICBGT0xMX0ZPUkNFIHwgRk9MTF9QSU4p KSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzdGFydCA9IHVudGFnZ2VkX2FkZHIoc3RhcnQpICYg UEFHRV9NQVNLOwpAQCAtMjQ1NSw0ICsyNDc1LDEwMyBAQCBpbnQgZ2V0X3VzZXJfcGFnZXNfZmFz dCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAKIAlyZXR1cm4gcmV0OwogfQor CisvKioKKyAqIGdldF91c2VyX3BhZ2VzX2Zhc3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9y eQorICogQHN0YXJ0OglzdGFydGluZyB1c2VyIGFkZHJlc3MKKyAqIEBucl9wYWdlczoJbnVtYmVy IG9mIHBhZ2VzIGZyb20gc3RhcnQgdG8gcGluCisgKiBAZ3VwX2ZsYWdzOglmbGFncyBtb2RpZnlp bmcgcGluIGJlaGF2aW91cgorICogQHBhZ2VzOglhcnJheSB0aGF0IHJlY2VpdmVzIHBvaW50ZXJz IHRvIHRoZSBwYWdlcyBwaW5uZWQuCisgKgkJU2hvdWxkIGJlIGF0IGxlYXN0IG5yX3BhZ2VzIGxv bmcuCisgKgorICogQXR0ZW1wdCB0byBwaW4gdXNlciBwYWdlcyBpbiBtZW1vcnkgd2l0aG91dCB0 YWtpbmcgbW0tPm1tYXBfc2VtLgorICogSWYgbm90IHN1Y2Nlc3NmdWwsIGl0IHdpbGwgZmFsbCBi YWNrIHRvIHRha2luZyB0aGUgbG9jayBhbmQKKyAqIGNhbGxpbmcgZ2V0X3VzZXJfcGFnZXMoKS4K KyAqCisgKiBSZXR1cm5zIG51bWJlciBvZiBwYWdlcyBwaW5uZWQuIFRoaXMgbWF5IGJlIGZld2Vy IHRoYW4gdGhlIG51bWJlciByZXF1ZXN0ZWQuCisgKiBJZiBucl9wYWdlcyBpcyAwIG9yIG5lZ2F0 aXZlLCByZXR1cm5zIDAuIElmIG5vIHBhZ2VzIHdlcmUgcGlubmVkLCByZXR1cm5zCisgKiAtZXJy bm8uCisgKi8KK2ludCBnZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGlu dCBucl9wYWdlcywKKwkJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFn ZXMpCit7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9ubHkgYmUgc2V0IGludGVybmFsbHkgYnkg dGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICogbmV2ZXIgZGlyZWN0bHkgYnkgdGhlIGNh bGxlciwgc28gZW5mb3JjZSB0aGF0OgorCSAqLworCWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdz ICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBpbnRlcm5hbF9nZXRf dXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBucl9wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7Cit9CiBF WFBPUlRfU1lNQk9MX0dQTChnZXRfdXNlcl9wYWdlc19mYXN0KTsKKworLyoqCisgKiBwaW5fdXNl cl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBwYWdlcyBpbiBtZW1vcnkgd2l0aG91dCB0YWtpbmcg bG9ja3MKKyAqCisgKiBGb3Igbm93LCB0aGlzIGlzIGEgcGxhY2Vob2xkZXIgZnVuY3Rpb24sIHVu dGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKKyAqIGNvbnZlcnRlZCB0byB1c2UgdGhlIGNvcnJl Y3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJfcGFnZXMqKCkgQVBJLiBTbywKKyAqIHRo aXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2VzX2Zhc3QoKS4KKyAqCisgKiBUaGlzIGlz IGludGVuZGVkIGZvciBDYXNlIDEgKERJTykgaW4gRG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9w YWdlcy5yc3QuIEl0CisgKiBpcyBOT1QgaW50ZW5kZWQgZm9yIENhc2UgMiAoUkRNQTogbG9uZy10 ZXJtIHBpbnMpLgorICovCitpbnQgcGluX3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0 YXJ0LCBpbnQgbnJfcGFnZXMsCisJCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFn ZSAqKnBhZ2VzKQoreworCS8qCisJICogVGhpcyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUg cGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgorCSAqIFVudGlsIHRoZW4sIGp1c3QgYmVo YXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkKKwkgKiByb3V0aW5l LgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBucl9wYWdlcywgZ3Vw X2ZsYWdzLCBwYWdlcyk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChwaW5fdXNlcl9wYWdlc19mYXN0 KTsKKworLyoqCisgKiBwaW5fdXNlcl9wYWdlc19yZW1vdGUoKSAtIHBpbiBwYWdlcyBvZiBhIHJl bW90ZSBwcm9jZXNzICh0YXNrICE9IGN1cnJlbnQpCisgKgorICogRm9yIG5vdywgdGhpcyBpcyBh IHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNhbGwgc2l0ZXMgYXJlCisgKiBj b252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigpIG9yIHBpbl91c2Vy X3BhZ2VzKigpIEFQSS4gU28sCisgKiB0aGlzIGlzIGlkZW50aWNhbCB0byBnZXRfdXNlcl9wYWdl c19yZW1vdGUoKS4KKyAqCisgKiBUaGlzIGlzIGludGVuZGVkIGZvciBDYXNlIDEgKERJTykgaW4g RG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3QuIEl0CisgKiBpcyBOT1QgaW50ZW5k ZWQgZm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBpbnMpLgorICovCitsb25nIHBpbl91c2Vy X3BhZ2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAq bW0sCisJCQkgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAor CQkJICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCSAg IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKQoreworCS8qCisJICog VGhpcyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0 aXZhdGVkLgorCSAqIFVudGlsIHRoZW4sIGp1c3QgYmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRp bmcgZ2V0X3VzZXJfcGFnZXMqKCkKKwkgKiByb3V0aW5lLgorCSAqLworCXJldHVybiBnZXRfdXNl cl9wYWdlc19yZW1vdGUodHNrLCBtbSwgc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2Vz LAorCQkJCSAgICAgdm1hcywgbG9ja2VkKTsKK30KK0VYUE9SVF9TWU1CT0wocGluX3VzZXJfcGFn ZXNfcmVtb3RlKTsKKworLyoqCisgKiBwaW5fdXNlcl9wYWdlcygpIC0gcGluIHVzZXIgcGFnZXMg aW4gbWVtb3J5IGZvciB1c2UgYnkgb3RoZXIgZGV2aWNlcworICoKKyAqIEZvciBub3csIHRoaXMg aXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiwgdW50aWwgdmFyaW91cyBjYWxsIHNpdGVzIGFyZQor ICogY29udmVydGVkIHRvIHVzZSB0aGUgY29ycmVjdCBnZXRfdXNlcl9wYWdlcyooKSBvciBwaW5f dXNlcl9wYWdlcyooKSBBUEkuIFNvLAorICogdGhpcyBpcyBpZGVudGljYWwgdG8gZ2V0X3VzZXJf cGFnZXMoKS4KKyAqCisgKiBUaGlzIGlzIGludGVuZGVkIGZvciBDYXNlIDEgKERJTykgaW4gRG9j dW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3QuIEl0CisgKiBpcyBOT1QgaW50ZW5kZWQg Zm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBpbnMpLgorICovCitsb25nIHBpbl91c2VyX3Bh Z2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCSAgICB1 bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkgICAgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICoqdm1hcykKK3sKKwkvKgorCSAqIFRoaXMgaXMgYSBwbGFjZWhvbGRl ciwgdW50aWwgdGhlIHBpbiBmdW5jdGlvbmFsaXR5IGlzIGFjdGl2YXRlZC4KKwkgKiBVbnRpbCB0 aGVuLCBqdXN0IGJlaGF2ZSBsaWtlIHRoZSBjb3JyZXNwb25kaW5nIGdldF91c2VyX3BhZ2VzKigp CisJICogcm91dGluZS4KKwkgKi8KKwlyZXR1cm4gZ2V0X3VzZXJfcGFnZXMoc3RhcnQsIG5yX3Bh Z2VzLCBndXBfZmxhZ3MsIHBhZ2VzLCB2bWFzKTsKK30KK0VYUE9SVF9TWU1CT0wocGluX3VzZXJf cGFnZXMpOwotLSAKMi4yNC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK