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.8 required=3.0 tests=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 45DE9C43603 for ; Mon, 9 Dec 2019 22:54:10 +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 26DF320836 for ; Mon, 9 Dec 2019 22:54:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 26DF320836 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 AABD06E5A0; Mon, 9 Dec 2019 22:54:04 +0000 (UTC) Received: from hqnvemgate24.nvidia.com (hqnvemgate24.nvidia.com [216.228.121.143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C3CF6E5A0 for ; Mon, 9 Dec 2019 22:54:01 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate24.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 09 Dec 2019 14:53:40 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 09 Dec 2019 14:54:00 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 09 Dec 2019 14:54:00 -0800 Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 9 Dec 2019 22:54:00 +0000 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 9 Dec 2019 22:53:59 +0000 Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 9 Dec 2019 22:53:58 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Mon, 09 Dec 2019 14:53:58 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v8 10/26] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Mon, 9 Dec 2019 14:53:28 -0800 Message-ID: <20191209225344.99740-11-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191209225344.99740-1-jhubbard@nvidia.com> References: <20191209225344.99740-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1575932021; bh=2WOzBgDhMDFlROTRx2bC9hAFs/60DcJSomipUZiuyZA=; 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=Q117n8bg4otYK33LwMdHOJ5Nu5CmNNCZlelIT886XvLuhHm0XVey4KQY8piRlMPEp q4R09iORoDSQjjNUkczw29zFi4S/oAKkzTTy60UV0czo569rCxZEIJkWQWCep4s0N8 qyFe/aYia6jljkLqEWJRuHHyyB+8qRHkCkcbJCjShwujE6EDMQ7/8SIkAD15SFg0aV +3ZAbmNupoMLoV7GiTVDLcvKY3RWQBILw+VoKAsTYjbxWZ24jD3/8XpUBNsfAbiRB0 vw/aYsuN9rySJY8JTPb9tgXFYUHPgeKzLK/pXce58pQfE8UcFBOnK0CsFOqu6vyvGB oYZHo8CVscCkw== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 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 ICAxICsKIERvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IHwgMjMzICsr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDYzICsrKystLQogbW0vZ3VwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxNjEgKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDQyNCBpbnNlcnRp b25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9u L2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9pbmRleC5yc3QKaW5k ZXggYWIwZWFlMWMxNTNhLi40MTNmN2Q3Yzg2NDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0CisrKyBiL0RvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0 CkBAIC0zMSw2ICszMSw3IEBAIENvcmUgdXRpbGl0aWVzCiAgICBnZW5lcmljLXJhZGl4LXRyZWUK ICAgIG1lbW9yeS1hbGxvY2F0aW9uCiAgICBtbS1hcGkKKyAgIHBpbl91c2VyX3BhZ2VzCiAgICBn ZnBfbWFzay1mcm9tLWZzLWlvCiAgICB0aW1la2VlcGluZwogICAgYm9vdC10aW1lLW1tCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdCBiL0RvY3Vt ZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNGYyNjYzN2E1MDA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9j dW1lbnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKQEAgLTAsMCArMSwyMzMgQEAK 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 IFBJTl9GQVNUX0JFTkNITUFSSyAoLi9ndXBfYmVuY2htYXJrIC1hKQorKiBQSU5fTE9OR1RFUk1f QkVOQ0hNQVJLICguL2d1cF9iZW5jaG1hcmsgLWEpCisqIFBJTl9CRU5DSE1BUksgKC4vZ3VwX2Jl bmNobWFyayAtYSkKKworWW91IGNhbiBtb25pdG9yIGhvdyBtYW55IHRvdGFsIGRtYS1waW5uZWQg cGFnZXMgaGF2ZSBiZWVuIGFjcXVpcmVkIGFuZCByZWxlYXNlZAorc2luY2UgdGhlIHN5c3RlbSB3 YXMgYm9vdGVkLCB2aWEgdHdvIG5ldyAvcHJvYy92bXN0YXQgZW50cmllczogOjoKKworICAgIC9w cm9jL3Ztc3RhdC9ucl9mb2xsX3Bpbl9yZXF1ZXN0ZWQKKyAgICAvcHJvYy92bXN0YXQvbnJfZm9s bF9waW5fcmVxdWVzdGVkCisKK1Rob3NlIGFyZSBib3RoIGdvaW5nIHRvIHNob3cgemVybywgdW5s ZXNzIENPTkZJR19ERUJVR19WTSBpcyBzZXQuIFRoaXMgaXMKK2JlY2F1c2UgdGhlcmUgaXMgYSBu b3RpY2VhYmxlIHBlcmZvcm1hbmNlIGRyb3AgaW4gcHV0X3VzZXJfcGFnZSgpLCB3aGVuIHRoZXkK K2FyZSBhY3RpdmF0ZWQuCisKK1JlZmVyZW5jZXMKKz09PT09PT09PT0KKworKiBgU29tZSBzbG93 IHByb2dyZXNzIG9uIGdldF91c2VyX3BhZ2VzKCkgKEFwciAyLCAyMDE5KSA8aHR0cHM6Ly9sd24u bmV0L0FydGljbGVzLzc4NDU3NC8+YF8KKyogYERNQSBhbmQgZ2V0X3VzZXJfcGFnZXMoKSAoTFBD OiBEZWMgMTIsIDIwMTgpIDxodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNzc0NDExLz5gXworKiBg VGhlIHRyb3VibGUgd2l0aCBnZXRfdXNlcl9wYWdlcygpIChBcHIgMzAsIDIwMTgpIDxodHRwczov L2x3bi5uZXQvQXJ0aWNsZXMvNzUzMDI3Lz5gXworCitKb2huIEh1YmJhcmQsIE9jdG9iZXIsIDIw MTkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaApp bmRleCA3N2E0ZGYwNmM4YTcuLjBmYjk5MjllMDBhZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMTA0OCwxNiArMTA0OCwxNCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgcHV0X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCiAgKiBwdXRfdXNl cl9wYWdlKCkgLSByZWxlYXNlIGEgZ3VwLXBpbm5lZCBwYWdlCiAgKiBAcGFnZTogICAgICAgICAg ICBwb2ludGVyIHRvIHBhZ2UgdG8gYmUgcmVsZWFzZWQKICAqCi0gKiBQYWdlcyB0aGF0IHdlcmUg cGlubmVkIHZpYSBnZXRfdXNlcl9wYWdlcyooKSBtdXN0IGJlIHJlbGVhc2VkIHZpYQotICogZWl0 aGVyIHB1dF91c2VyX3BhZ2UoKSwgb3Igb25lIG9mIHRoZSBwdXRfdXNlcl9wYWdlcyooKSByb3V0 aW5lcwotICogYmVsb3cuIFRoaXMgaXMgc28gdGhhdCBldmVudHVhbGx5LCBwYWdlcyB0aGF0IGFy ZSBwaW5uZWQgdmlhCi0gKiBnZXRfdXNlcl9wYWdlcyooKSBjYW4gYmUgc2VwYXJhdGVseSB0cmFj a2VkIGFuZCB1bmlxdWVseSBoYW5kbGVkLiBJbgotICogcGFydGljdWxhciwgaW50ZXJhY3Rpb25z IHdpdGggUkRNQSBhbmQgZmlsZXN5c3RlbXMgbmVlZCBzcGVjaWFsCi0gKiBoYW5kbGluZy4KKyAq IFBhZ2VzIHRoYXQgd2VyZSBwaW5uZWQgdmlhIHBpbl91c2VyX3BhZ2VzKigpIG11c3QgYmUgcmVs ZWFzZWQgdmlhIGVpdGhlcgorICogcHV0X3VzZXJfcGFnZSgpLCBvciBvbmUgb2YgdGhlIHB1dF91 c2VyX3BhZ2VzKigpIHJvdXRpbmVzLiBUaGlzIGlzIHNvIHRoYXQKKyAqIGV2ZW50dWFsbHkgc3Vj aCBwYWdlcyBjYW4gYmUgc2VwYXJhdGVseSB0cmFja2VkIGFuZCB1bmlxdWVseSBoYW5kbGVkLiBJ bgorICogcGFydGljdWxhciwgaW50ZXJhY3Rpb25zIHdpdGggUkRNQSBhbmQgZmlsZXN5c3RlbXMg bmVlZCBzcGVjaWFsIGhhbmRsaW5nLgogICoKICAqIHB1dF91c2VyX3BhZ2UoKSBhbmQgcHV0X3Bh Z2UoKSBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwgZGVzcGl0ZSB0aGlzIGVhcmx5CiAgKiBpbXBs ZW1lbnRhdGlvbiB0aGF0IG1ha2VzIHRoZW0gbG9vayB0aGUgc2FtZS4gcHV0X3VzZXJfcGFnZSgp IGNhbGxzIG11c3QKLSAqIGJlIHBlcmZlY3RseSBtYXRjaGVkIHVwIHdpdGggZ2V0X3VzZXJfcGFn ZSgpIGNhbGxzLgorICogYmUgcGVyZmVjdGx5IG1hdGNoZWQgdXAgd2l0aCBwaW4qKCkgY2FsbHMu CiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfdXNlcl9wYWdlKHN0cnVjdCBwYWdlICpwYWdl KQogewpAQCAtMTUxNSw5ICsxNTEzLDE2IEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCSAgICB1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCQkJICAgIHVuc2lnbmVk IGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCQkgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpOworbG9uZyBwaW5fdXNlcl9wYWdlc19yZW1v dGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJICAg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJCSAgIHVuc2ln bmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCQkgICBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tlZCk7CiBsb25nIGdldF91c2VyX3BhZ2VzKHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCQkgICAgdW5zaWdu ZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJCSAgICBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKip2bWFzKTsKK2xvbmcgcGluX3VzZXJfcGFnZXModW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJICAgIHVuc2lnbmVkIGludCBndXBfZmxh Z3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCSAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2 bWFzKTsKIGxvbmcgZ2V0X3VzZXJfcGFnZXNfbG9ja2VkKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCSAgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1 Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgKmxvY2tlZCk7CiBsb25nIGdldF91c2VyX3BhZ2VzX3VubG9j a2VkKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCkBAIC0xNTI1 LDYgKzE1MzAsOCBAQCBsb25nIGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKHVuc2lnbmVkIGxvbmcg c3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAKIGludCBnZXRfdXNlcl9wYWdlc19mYXN0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKIAkJCXVuc2lnbmVkIGludCBndXBf ZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMpOworaW50IHBpbl91c2VyX3BhZ2VzX2Zhc3QodW5z aWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAorCQkJdW5zaWduZWQgaW50IGd1cF9mbGFn cywgc3RydWN0IHBhZ2UgKipwYWdlcyk7CiAKIGludCBhY2NvdW50X2xvY2tlZF92bShzdHJ1Y3Qg bW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBwYWdlcywgYm9vbCBpbmMpOwogaW50IF9fYWNj b3VudF9sb2NrZWRfdm0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgcGFnZXMs IGJvb2wgaW5jLApAQCAtMjU4OCwxMyArMjU5NSwxNSBAQCBzdHJ1Y3QgcGFnZSAqZm9sbG93X3Bh Z2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKICNk ZWZpbmUgRk9MTF9BTk9OCTB4ODAwMAkvKiBkb24ndCBkbyBmaWxlIG1hcHBpbmdzICovCiAjZGVm aW5lIEZPTExfTE9OR1RFUk0JMHgxMDAwMAkvKiBtYXBwaW5nIGxpZmV0aW1lIGlzIGluZGVmaW5p dGU6IHNlZSBiZWxvdyAqLwogI2RlZmluZSBGT0xMX1NQTElUX1BNRAkweDIwMDAwCS8qIHNwbGl0 IGh1Z2UgcG1kIGJlZm9yZSByZXR1cm5pbmcgKi8KKyNkZWZpbmUgRk9MTF9QSU4JMHg0MDAwMAkv KiBwYWdlcyBtdXN0IGJlIHJlbGVhc2VkIHZpYSBwdXRfdXNlcl9wYWdlKCkgKi8KIAogLyoKLSAq IE5PVEUgb24gRk9MTF9MT05HVEVSTToKKyAqIEZPTExfUElOIGFuZCBGT0xMX0xPTkdURVJNIG1h eSBiZSB1c2VkIGluIHZhcmlvdXMgY29tYmluYXRpb25zIHdpdGggZWFjaAorICogb3RoZXIuIEhl cmUgaXMgd2hhdCB0aGV5IG1lYW4sIGFuZCBob3cgdG8gdXNlIHRoZW06CiAgKgogICogRk9MTF9M T05HVEVSTSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFnZSB3aWxsIGJlIGhlbGQgZm9yIGFuIGluZGVm aW5pdGUgdGltZQotICogcGVyaW9kIF9vZnRlbl8gdW5kZXIgdXNlcnNwYWNlIGNvbnRyb2wuICBU aGlzIGlzIGNvbnRyYXN0ZWQgd2l0aAotICogaW92X2l0ZXJfZ2V0X3BhZ2VzKCkgd2hlcmUgdXNh Z2VzIHdoaWNoIGFyZSB0cmFuc2llbnQuCisgKiBwZXJpb2QgX29mdGVuXyB1bmRlciB1c2Vyc3Bh Y2UgY29udHJvbC4gIFRoaXMgaXMgaW4gY29udHJhc3QgdG8KKyAqIGlvdl9pdGVyX2dldF9wYWdl cygpLCB3aG9zZSB1c2FnZXMgYXJlIHRyYW5zaWVudC4KICAqCiAgKiBGSVhNRTogRm9yIHBhZ2Vz IHdoaWNoIGFyZSBwYXJ0IG9mIGEgZmlsZXN5c3RlbSwgbWFwcGluZ3MgYXJlIHN1YmplY3QgdG8g dGhlCiAgKiBsaWZldGltZSBlbmZvcmNlZCBieSB0aGUgZmlsZXN5c3RlbSBhbmQgd2UgbmVlZCBn dWFyYW50ZWVzIHRoYXQgbG9uZ3Rlcm0KQEAgLTI2MDksMTEgKzI2MTgsMzkgQEAgc3RydWN0IHBh Z2UgKmZvbGxvd19wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25n IGFkZHJlc3MsCiAgKiBDdXJyZW50bHkgb25seSBnZXRfdXNlcl9wYWdlcygpIGFuZCBnZXRfdXNl cl9wYWdlc19mYXN0KCkgc3VwcG9ydCB0aGlzIGZsYWcKICAqIGFuZCBjYWxscyB0byBnZXRfdXNl cl9wYWdlc19bdW5dbG9ja2VkIGFyZSBzcGVjaWZpY2FsbHkgbm90IGFsbG93ZWQuICBUaGlzCiAg KiBpcyBkdWUgdG8gYW4gaW5jb21wYXRpYmlsaXR5IHdpdGggdGhlIEZTIERBWCBjaGVjayBhbmQK LSAqIEZBVUxUX0ZMQUdfQUxMT1dfUkVUUlkKKyAqIEZBVUxUX0ZMQUdfQUxMT1dfUkVUUlkuCiAg KgotICogSW4gdGhlIENNQSBjYXNlOiBsb25ndGVybSBwaW5zIGluIGEgQ01BIHJlZ2lvbiB3b3Vs ZCB1bm5lY2Vzc2FyaWx5IGZyYWdtZW50Ci0gKiB0aGF0IHJlZ2lvbi4gIEFuZCBzbyBDTUEgYXR0 ZW1wdHMgdG8gbWlncmF0ZSB0aGUgcGFnZSBiZWZvcmUgcGlubmluZyB3aGVuCisgKiBJbiB0aGUg Q01BIGNhc2U6IGxvbmcgdGVybSBwaW5zIGluIGEgQ01BIHJlZ2lvbiB3b3VsZCB1bm5lY2Vzc2Fy aWx5IGZyYWdtZW50CisgKiB0aGF0IHJlZ2lvbi4gIEFuZCBzbywgQ01BIGF0dGVtcHRzIHRvIG1p Z3JhdGUgdGhlIHBhZ2UgYmVmb3JlIHBpbm5pbmcsIHdoZW4KICAqIEZPTExfTE9OR1RFUk0gaXMg c3BlY2lmaWVkLgorICoKKyAqIEZPTExfUElOIGluZGljYXRlcyB0aGF0IGEgc3BlY2lhbCBraW5k IG9mIHRyYWNraW5nIChub3QganVzdCBwYWdlLT5fcmVmY291bnQsCisgKiBidXQgYW4gYWRkaXRp b25hbCBwaW4gY291bnRpbmcgc3lzdGVtKSB3aWxsIGJlIGludm9rZWQuIFRoaXMgaXMgaW50ZW5k ZWQgZm9yCisgKiBhbnl0aGluZyB0aGF0IGdldHMgYSBwYWdlIHJlZmVyZW5jZSBhbmQgdGhlbiB0 b3VjaGVzIHBhZ2UgZGF0YSAoZm9yIGV4YW1wbGUsCisgKiBEaXJlY3QgSU8pLiBUaGlzIGxldHMg dGhlIGZpbGVzeXN0ZW0ga25vdyB0aGF0IHNvbWUgbm9uLWZpbGUtc3lzdGVtIGVudGl0eSBpcwor ICogcG90ZW50aWFsbHkgY2hhbmdpbmcgdGhlIHBhZ2VzJyBkYXRhLiBJbiBjb250cmFzdCB0byBG T0xMX0dFVCAod2hvc2UgcGFnZXMKKyAqIGFyZSByZWxlYXNlZCB2aWEgcHV0X3BhZ2UoKSksIEZP TExfUElOIHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQsIHVsdGltYXRlbHksIGJ5CisgKiBhIGNhbGwg dG8gcHV0X3VzZXJfcGFnZSgpLgorICoKKyAqIEZPTExfUElOIGlzIHNpbWlsYXIgdG8gRk9MTF9H RVQ6IGJvdGggb2YgdGhlc2UgcGluIHBhZ2VzLiBUaGV5IHVzZSBkaWZmZXJlbnQKKyAqIGFuZCBz ZXBhcmF0ZSByZWZjb3VudGluZyBtZWNoYW5pc21zLCBob3dldmVyLCBhbmQgdGhhdCBtZWFucyB0 aGF0IGVhY2ggaGFzCisgKiBpdHMgb3duIGFjcXVpcmUgYW5kIHJlbGVhc2UgbWVjaGFuaXNtczoK KyAqCisgKiAgICAgRk9MTF9HRVQ6IGdldF91c2VyX3BhZ2VzKigpIHRvIGFjcXVpcmUsIGFuZCBw dXRfcGFnZSgpIHRvIHJlbGVhc2UuCisgKgorICogICAgIEZPTExfUElOOiBwaW5fdXNlcl9wYWdl cyooKSB0byBhY3F1aXJlLCBhbmQgcHV0X3VzZXJfcGFnZXMgdG8gcmVsZWFzZS4KKyAqCisgKiBG T0xMX1BJTiBhbmQgRk9MTF9HRVQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBmb3IgYSBnaXZlbiBm dW5jdGlvbiBjYWxsLgorICogKFRoZSB1bmRlcmx5aW5nIHBhZ2VzIG1heSBleHBlcmllbmNlIGJv dGggRk9MTF9HRVQtYmFzZWQgYW5kIEZPTExfUElOLWJhc2VkCisgKiBjYWxscyBhcHBsaWVkIHRv IHRoZW0sIGFuZCB0aGF0J3MgcGVyZmVjdGx5IE9LLiBUaGlzIGlzIGEgY29uc3RyYWludCBvbiB0 aGUKKyAqIGNhbGxlcnMsIG5vdCBvbiB0aGUgcGFnZXMuKQorICoKKyAqIEZPTExfUElOIHNob3Vs ZCBiZSBzZXQgaW50ZXJuYWxseSBieSB0aGUgcGluX3VzZXJfcGFnZXMqKCkgQVBJcywgbmV2ZXIK KyAqIGRpcmVjdGx5IGJ5IHRoZSBjYWxsZXIuIFRoYXQncyBpbiBvcmRlciB0byBoZWxwIGF2b2lk IG1pc21hdGNoZXMgd2hlbgorICogcmVsZWFzaW5nIHBhZ2VzOiBnZXRfdXNlcl9wYWdlcyooKSBw YWdlcyBtdXN0IGJlIHJlbGVhc2VkIHZpYSBwdXRfcGFnZSgpLAorICogd2hpbGUgcGluX3VzZXJf cGFnZXMqKCkgcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgcHV0X3VzZXJfcGFnZSgpLgorICoK KyAqIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3QgZm9yIG1v cmUgaW5mb3JtYXRpb24uCiAgKi8KIAogc3RhdGljIGlubGluZSBpbnQgdm1fZmF1bHRfdG9fZXJy bm8odm1fZmF1bHRfdCB2bV9mYXVsdCwgaW50IGZvbGxfZmxhZ3MpCmRpZmYgLS1naXQgYS9tbS9n dXAuYyBiL21tL2d1cC5jCmluZGV4IDk1OGFiMDc1NzM4OS4uNDg2MmZmOTgyYmMzIDEwMDY0NAot LS0gYS9tbS9ndXAuYworKysgYi9tbS9ndXAuYwpAQCAtMjAxLDYgKzIwMSwxMCBAQCBzdGF0aWMg c3RydWN0IHBhZ2UgKmZvbGxvd19wYWdlX3B0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwK IAlzcGlubG9ja190ICpwdGw7CiAJcHRlX3QgKnB0ZXAsIHB0ZTsKIAorCS8qIEZPTExfR0VUIGFu ZCBGT0xMX1BJTiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiAqLworCWlmIChXQVJOX09OX09OQ0Uo KGZsYWdzICYgKEZPTExfUElOIHwgRk9MTF9HRVQpKSA9PQorCQkJIChGT0xMX1BJTiB8IEZPTExf R0VUKSkpCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogcmV0cnk6CiAJaWYgKHVubGlrZWx5 KHBtZF9iYWQoKnBtZCkpKQogCQlyZXR1cm4gbm9fcGFnZV90YWJsZSh2bWEsIGZsYWdzKTsKQEAg LTgxOCw3ICs4MjIsNyBAQCBzdGF0aWMgbG9uZyBfX2dldF91c2VyX3BhZ2VzKHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAogCXN0YXJ0ID0gdW50YWdnZWRf YWRkcihzdGFydCk7CiAKLQlWTV9CVUdfT04oISFwYWdlcyAhPSAhIShndXBfZmxhZ3MgJiBGT0xM X0dFVCkpOworCVZNX0JVR19PTighIXBhZ2VzICE9ICEhKGd1cF9mbGFncyAmIChGT0xMX0dFVCB8 IEZPTExfUElOKSkpOwogCiAJLyoKIAkgKiBJZiBGT0xMX0ZPUkNFIGlzIHNldCB0aGVuIGRvIG5v dCBmb3JjZSBhIGZ1bGwgZmF1bHQgYXMgdGhlIGhpbnRpbmcKQEAgLTEwNDIsNyArMTA0NiwxNiBA QCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdlc19sb2NrZWQoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJCUJVR19PTigqbG9ja2VkICE9IDEpOwogCX0KIAotCWlm IChwYWdlcykKKwkvKgorCSAqIEZPTExfUElOIGFuZCBGT0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhj bHVzaXZlLiBUcmFkaXRpb25hbCBiZWhhdmlvcgorCSAqIGlzIHRvIHNldCBGT0xMX0dFVCBpZiB0 aGUgY2FsbGVyIHdhbnRzIHBhZ2VzW10gZmlsbGVkIGluIChidXQgaGFzCisJICogY2FyZWxlc3Ns eSBmYWlsZWQgdG8gc3BlY2lmeSBGT0xMX0dFVCksIHNvIGtlZXAgZG9pbmcgdGhhdCwgYnV0IG9u bHkKKwkgKiBmb3IgRk9MTF9HRVQsIG5vdCBmb3IgdGhlIG5ld2VyIEZPTExfUElOLgorCSAqCisJ ICogRk9MTF9QSU4gYWx3YXlzIGV4cGVjdHMgcGFnZXMgdG8gYmUgbm9uLW51bGwsIGJ1dCBubyBu ZWVkIHRvIGFzc2VydAorCSAqIHRoYXQgaGVyZSwgYXMgYW55IGZhaWx1cmVzIHdpbGwgYmUgb2J2 aW91cyBlbm91Z2guCisJICovCisJaWYgKHBhZ2VzICYmICEoZmxhZ3MgJiBGT0xMX1BJTikpCiAJ CWZsYWdzIHw9IEZPTExfR0VUOwogCiAJcGFnZXNfZG9uZSA9IDA7CkBAIC0xMTg1LDYgKzExOTgs MTMgQEAgbG9uZyBnZXRfdXNlcl9wYWdlc19yZW1vdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ss IHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzLAogCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tl ZCkKIHsKKwkvKgorCSAqIEZPTExfUElOIG11c3Qgb25seSBiZSBzZXQgaW50ZXJuYWxseSBieSB0 aGUgcGluX3VzZXJfcGFnZXMqKCkgQVBJcywKKwkgKiBuZXZlciBkaXJlY3RseSBieSB0aGUgY2Fs bGVyLCBzbyBlbmZvcmNlIHRoYXQgd2l0aCBhbiBhc3NlcnRpb246CisJICovCisJaWYgKFdBUk5f T05fT05DRShndXBfZmxhZ3MgJiBGT0xMX1BJTikpCisJCXJldHVybiAtRUlOVkFMOworCiAJLyoK IAkgKiBQYXJ0cyBvZiBGT0xMX0xPTkdURVJNIGJlaGF2aW9yIGFyZSBpbmNvbXBhdGlibGUgd2l0 aAogCSAqIEZBVUxUX0ZMQUdfQUxMT1dfUkVUUlkgYmVjYXVzZSBvZiB0aGUgRlMgREFYIGNoZWNr IHJlcXVpcmVtZW50IG9uCkBAIC0xNDAwLDYgKzE0MjAsMTQgQEAgc3RhdGljIGxvbmcgX19nZXRf dXNlcl9wYWdlc19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiBmaW5pc2hfb3JfZmF1 bHQ6CiAJcmV0dXJuIGkgPyA6IC1FRkFVTFQ7CiB9CisKK2xvbmcgZ2V0X3VzZXJfcGFnZXNfcmVt b3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCSAg IHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCQkgICB1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJICAgc3RydWN0IHZt X2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCit7CisJcmV0dXJuIDA7Cit9CiAjZW5k aWYgLyogIUNPTkZJR19NTVUgKi8KIAogI2lmIGRlZmluZWQoQ09ORklHX0ZTX0RBWCkgfHwgZGVm aW5lZCAoQ09ORklHX0NNQSkKQEAgLTE2NTQsNiArMTY4MiwxMyBAQCBsb25nIGdldF91c2VyX3Bh Z2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCXVuc2ln bmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCXN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqKnZtYXMpCiB7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9ubHkgYmUgc2V0IGlu dGVybmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICogbmV2ZXIgZGlyZWN0 bHkgYnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0IHdpdGggYW4gYXNzZXJ0aW9uOgorCSAq LworCWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJ TlZBTDsKKwogCXJldHVybiBfX2d1cF9sb25ndGVybV9sb2NrZWQoY3VycmVudCwgY3VycmVudC0+ bW0sIHN0YXJ0LCBucl9wYWdlcywKIAkJCQkgICAgIHBhZ2VzLCB2bWFzLCBndXBfZmxhZ3MgfCBG T0xMX1RPVUNIKTsKIH0KQEAgLTIzOTIsMzAgKzI0MjcsMTUgQEAgc3RhdGljIGludCBfX2d1cF9s b25ndGVybV91bmxvY2tlZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJcmV0 dXJuIHJldDsKIH0KIAotLyoqCi0gKiBnZXRfdXNlcl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBw YWdlcyBpbiBtZW1vcnkKLSAqIEBzdGFydDoJc3RhcnRpbmcgdXNlciBhZGRyZXNzCi0gKiBAbnJf cGFnZXM6CW51bWJlciBvZiBwYWdlcyBmcm9tIHN0YXJ0IHRvIHBpbgotICogQGd1cF9mbGFnczoJ ZmxhZ3MgbW9kaWZ5aW5nIHBpbiBiZWhhdmlvdXIKLSAqIEBwYWdlczoJYXJyYXkgdGhhdCByZWNl aXZlcyBwb2ludGVycyB0byB0aGUgcGFnZXMgcGlubmVkLgotICoJCVNob3VsZCBiZSBhdCBsZWFz dCBucl9wYWdlcyBsb25nLgotICoKLSAqIEF0dGVtcHQgdG8gcGluIHVzZXIgcGFnZXMgaW4gbWVt b3J5IHdpdGhvdXQgdGFraW5nIG1tLT5tbWFwX3NlbS4KLSAqIElmIG5vdCBzdWNjZXNzZnVsLCBp dCB3aWxsIGZhbGwgYmFjayB0byB0YWtpbmcgdGhlIGxvY2sgYW5kCi0gKiBjYWxsaW5nIGdldF91 c2VyX3BhZ2VzKCkuCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgcGFnZXMgcGlubmVkLiBUaGlz IG1heSBiZSBmZXdlciB0aGFuIHRoZSBudW1iZXIKLSAqIHJlcXVlc3RlZC4gSWYgbnJfcGFnZXMg aXMgMCBvciBuZWdhdGl2ZSwgcmV0dXJucyAwLiBJZiBubyBwYWdlcwotICogd2VyZSBwaW5uZWQs IHJldHVybnMgLWVycm5vLgotICovCi1pbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBs b25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCi0JCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1 Y3QgcGFnZSAqKnBhZ2VzKQorc3RhdGljIGludCBpbnRlcm5hbF9nZXRfdXNlcl9wYWdlc19mYXN0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCQkJdW5zaWduZWQgaW50IGd1 cF9mbGFncywKKwkJCQkJc3RydWN0IHBhZ2UgKipwYWdlcykKIHsKIAl1bnNpZ25lZCBsb25nIGFk ZHIsIGxlbiwgZW5kOwogCWludCBuciA9IDAsIHJldCA9IDA7CiAKIAlpZiAoV0FSTl9PTl9PTkNF KGd1cF9mbGFncyAmIH4oRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0gfAotCQkJCSAgICAgICBG T0xMX0ZPUkNFKSkpCisJCQkJICAgICAgIEZPTExfRk9SQ0UgfCBGT0xMX1BJTikpKQogCQlyZXR1 cm4gLUVJTlZBTDsKIAogCXN0YXJ0ID0gdW50YWdnZWRfYWRkcihzdGFydCkgJiBQQUdFX01BU0s7 CkBAIC0yNDU1LDQgKzI0NzUsMTAzIEBAIGludCBnZXRfdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVk IGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKIAogCXJldHVybiByZXQ7CiB9CisKKy8qKgorICog Z2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5CisgKiBAc3Rh cnQ6CXN0YXJ0aW5nIHVzZXIgYWRkcmVzcworICogQG5yX3BhZ2VzOgludW1iZXIgb2YgcGFnZXMg ZnJvbSBzdGFydCB0byBwaW4KKyAqIEBndXBfZmxhZ3M6CWZsYWdzIG1vZGlmeWluZyBwaW4gYmVo YXZpb3VyCisgKiBAcGFnZXM6CWFycmF5IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMgdG8gdGhlIHBh Z2VzIHBpbm5lZC4KKyAqCQlTaG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9uZy4KKyAqCisg KiBBdHRlbXB0IHRvIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBtbS0+ bW1hcF9zZW0uCisgKiBJZiBub3Qgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gdGFr aW5nIHRoZSBsb2NrIGFuZAorICogY2FsbGluZyBnZXRfdXNlcl9wYWdlcygpLgorICoKKyAqIFJl dHVybnMgbnVtYmVyIG9mIHBhZ2VzIHBpbm5lZC4gVGhpcyBtYXkgYmUgZmV3ZXIgdGhhbiB0aGUg bnVtYmVyIHJlcXVlc3RlZC4KKyAqIElmIG5yX3BhZ2VzIGlzIDAgb3IgbmVnYXRpdmUsIHJldHVy bnMgMC4gSWYgbm8gcGFnZXMgd2VyZSBwaW5uZWQsIHJldHVybnMKKyAqIC1lcnJuby4KKyAqLwor aW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2Vz LAorCQkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcykKK3sKKwkv KgorCSAqIEZPTExfUElOIG11c3Qgb25seSBiZSBzZXQgaW50ZXJuYWxseSBieSB0aGUgcGluX3Vz ZXJfcGFnZXMqKCkgQVBJcywKKwkgKiBuZXZlciBkaXJlY3RseSBieSB0aGUgY2FsbGVyLCBzbyBl bmZvcmNlIHRoYXQ6CisJICovCisJaWYgKFdBUk5fT05fT05DRShndXBfZmxhZ3MgJiBGT0xMX1BJ TikpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIGludGVybmFsX2dldF91c2VyX3BhZ2Vz X2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzKTsKK30KIEVYUE9SVF9TWU1C T0xfR1BMKGdldF91c2VyX3BhZ2VzX2Zhc3QpOworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzX2Zh c3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBsb2NrcworICoK KyAqIEZvciBub3csIHRoaXMgaXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiwgdW50aWwgdmFyaW91 cyBjYWxsIHNpdGVzIGFyZQorICogY29udmVydGVkIHRvIHVzZSB0aGUgY29ycmVjdCBnZXRfdXNl cl9wYWdlcyooKSBvciBwaW5fdXNlcl9wYWdlcyooKSBBUEkuIFNvLAorICogdGhpcyBpcyBpZGVu dGljYWwgdG8gZ2V0X3VzZXJfcGFnZXNfZmFzdCgpLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQg Zm9yIENhc2UgMSAoRElPKSBpbiBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4g SXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucyku CisgKi8KK2ludCBwaW5fdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBu cl9wYWdlcywKKwkJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMp Cit7CisJLyoKKwkgKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIsIHVudGlsIHRoZSBwaW4gZnVuY3Rp b25hbGl0eSBpcyBhY3RpdmF0ZWQuCisJICogVW50aWwgdGhlbiwganVzdCBiZWhhdmUgbGlrZSB0 aGUgY29ycmVzcG9uZGluZyBnZXRfdXNlcl9wYWdlcyooKQorCSAqIHJvdXRpbmUuCisJICovCisJ cmV0dXJuIGdldF91c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBh Z2VzKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHBpbl91c2VyX3BhZ2VzX2Zhc3QpOworCisvKioK KyAqIHBpbl91c2VyX3BhZ2VzX3JlbW90ZSgpIC0gcGluIHBhZ2VzIG9mIGEgcmVtb3RlIHByb2Nl c3MgKHRhc2sgIT0gY3VycmVudCkKKyAqCisgKiBGb3Igbm93LCB0aGlzIGlzIGEgcGxhY2Vob2xk ZXIgZnVuY3Rpb24sIHVudGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKKyAqIGNvbnZlcnRlZCB0 byB1c2UgdGhlIGNvcnJlY3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJfcGFnZXMqKCkg QVBJLiBTbywKKyAqIHRoaXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2VzX3JlbW90ZSgp LgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1bWVudGF0 aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2Fz ZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJfcGFnZXNfcmVt b3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCSAg IHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCQkgICB1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJICAgc3RydWN0IHZt X2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCit7CisJLyoKKwkgKiBUaGlzIGlzIGEg cGxhY2Vob2xkZXIsIHVudGlsIHRoZSBwaW4gZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmF0ZWQuCisJ ICogVW50aWwgdGhlbiwganVzdCBiZWhhdmUgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBnZXRfdXNl cl9wYWdlcyooKQorCSAqIHJvdXRpbmUuCisJICovCisJcmV0dXJuIGdldF91c2VyX3BhZ2VzX3Jl bW90ZSh0c2ssIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywgcGFnZXMsCisJCQkJICAg ICB2bWFzLCBsb2NrZWQpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9wYWdlc19yZW1vdGUp OworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzKCkgLSBwaW4gdXNlciBwYWdlcyBpbiBtZW1vcnkg Zm9yIHVzZSBieSBvdGhlciBkZXZpY2VzCisgKgorICogRm9yIG5vdywgdGhpcyBpcyBhIHBsYWNl aG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNhbGwgc2l0ZXMgYXJlCisgKiBjb252ZXJ0 ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigpIG9yIHBpbl91c2VyX3BhZ2Vz KigpIEFQSS4gU28sCisgKiB0aGlzIGlzIGlkZW50aWNhbCB0byBnZXRfdXNlcl9wYWdlcygpLgor ICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1bWVudGF0aW9u L3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2FzZSAy IChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJfcGFnZXModW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJICAgIHVuc2lnbmVkIGlu dCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCSAgICBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKip2bWFzKQoreworCS8qCisJICogVGhpcyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0 aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgorCSAqIFVudGlsIHRoZW4sIGp1c3Qg YmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkKKwkgKiByb3V0 aW5lLgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlcyhzdGFydCwgbnJfcGFnZXMsIGd1cF9m bGFncywgcGFnZXMsIHZtYXMpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9wYWdlcyk7Ci0t IAoyLjI0LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==