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 3CE7FC282DD for ; Tue, 7 Jan 2020 22:46:16 +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 0E8C82075A for ; Tue, 7 Jan 2020 22:46:16 +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="N8y3M7oE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0E8C82075A 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 2977E6E83B; Tue, 7 Jan 2020 22:46:03 +0000 (UTC) Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F5F06E149 for ; Tue, 7 Jan 2020 22:46:02 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Tue, 07 Jan 2020 14:45:44 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Tue, 07 Jan 2020 14:46:01 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Tue, 07 Jan 2020 14:46:01 -0800 Received: from HQMAIL105.nvidia.com (172.20.187.12) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 7 Jan 2020 22:46:00 +0000 Received: from hqnvemgw03.nvidia.com (10.124.88.68) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 7 Jan 2020 22:46:00 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by hqnvemgw03.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Tue, 07 Jan 2020 14:46:00 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v12 11/22] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Tue, 7 Jan 2020 14:45:47 -0800 Message-ID: <20200107224558.2362728-12-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200107224558.2362728-1-jhubbard@nvidia.com> References: <20200107224558.2362728-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=1578437144; bh=ILPjWTz1uECxM8jMFV9CrBwQY3DCe/z1cMA8J31RcEU=; 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=N8y3M7oEGlF2Wl2fmm0TU+YowgLxVYo4DvTmDlxpuOsYOjpyz1F/NGihEQMkRvDMS pUJ7V2Sropf3MRr0OCEHWhcCpRpeVudhY3paboRYSFjlCWQedKWdAWNPFTXNQbf0v9 rVHCHVL9BIxj5lsLVXqMftCDh91WGIG19SOtYt0L+R7blB3regKi3MBDHVLYvHg/vO CqUwZolw+sfLd09xQIbB6qDdrq+/xbWhlkXeUvekAhXLOiGiikYJgj8+Y6q4T4Ue7B NXexgnMZIaUQsnLLxupXXAhNLXKrjguawcfLMohQ7aeBX/oUiVJrgp8vpD7nBLPWk9 sHiEfW/E7AVoA== 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 , "Kirill A . Shutemov" , 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 ICAgICAgfCAxNjQgKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDQyNiBpbnNlcnRp b25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9u L2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9pbmRleC5yc3QKaW5k ZXggYWIwZWFlMWMxNTNhLi40MTNmN2Q3Yzg2NDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24v Y29yZS1hcGkvaW5kZXgucnN0CisrKyBiL0RvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0 CkBAIC0zMSw2ICszMSw3IEBAIENvcmUgdXRpbGl0aWVzCiAgICBnZW5lcmljLXJhZGl4LXRyZWUK ICAgIG1lbW9yeS1hbGxvY2F0aW9uCiAgICBtbS1hcGkKKyAgIHBpbl91c2VyX3BhZ2VzCiAgICBn ZnBfbWFzay1mcm9tLWZzLWlvCiAgICB0aW1la2VlcGluZwogICAgYm9vdC10aW1lLW1tCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdCBiL0RvY3Vt ZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNzE4NDk4MzBjZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9j dW1lbnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKQEAgLTAsMCArMSwyMzIgQEAK Ky4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3Bpbl91c2VyX3BhZ2VzKCkgYW5k IHJlbGF0ZWQgY2FsbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLi4gY29udGVudHM6OiA6bG9jYWw6CisKK092ZXJ2aWV3Cis9PT09PT09 PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczo6CisK KyBwaW5fdXNlcl9wYWdlcygpCisgcGluX3VzZXJfcGFnZXNfZmFzdCgpCisgcGluX3VzZXJfcGFn ZXNfcmVtb3RlKCkKKworQmFzaWMgZGVzY3JpcHRpb24gb2YgRk9MTF9QSU4KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKK0ZPTExfUElOIGFuZCBGT0xMX0xPTkdURVJNIGFyZSBmbGFn cyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGdldF91c2VyX3BhZ2VzKigpCisoImd1cCIpIGZh bWlseSBvZiBmdW5jdGlvbnMuIEZPTExfUElOIGhhcyBzaWduaWZpY2FudCBpbnRlcmFjdGlvbnMg YW5kCitpbnRlcmRlcGVuZGVuY2llcyB3aXRoIEZPTExfTE9OR1RFUk0sIHNvIGJvdGggYXJlIGNv dmVyZWQgaGVyZS4KKworRk9MTF9QSU4gaXMgaW50ZXJuYWwgdG8gZ3VwLCBtZWFuaW5nIHRoYXQg aXQgc2hvdWxkIG5vdCBhcHBlYXIgYXQgdGhlIGd1cCBjYWxsCitzaXRlcy4gVGhpcyBhbGxvd3Mg dGhlIGFzc29jaWF0ZWQgd3JhcHBlciBmdW5jdGlvbnMgIChwaW5fdXNlcl9wYWdlcyooKSBhbmQK K290aGVycykgdG8gc2V0IHRoZSBjb3JyZWN0IGNvbWJpbmF0aW9uIG9mIHRoZXNlIGZsYWdzLCBh bmQgdG8gY2hlY2sgZm9yIHByb2JsZW1zCithcyB3ZWxsLgorCitGT0xMX0xPTkdURVJNLCBvbiB0 aGUgb3RoZXIgaGFuZCwgKmlzKiBhbGxvd2VkIHRvIGJlIHNldCBhdCB0aGUgZ3VwIGNhbGwgc2l0 ZXMuCitUaGlzIGlzIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbGFyZ2UgbnVtYmVyIG9m IHdyYXBwZXIgZnVuY3Rpb25zIHRvIGNvdmVyCithbGwgY29tYmluYXRpb25zIG9mIGdldCooKSwg cGluKigpLCBGT0xMX0xPTkdURVJNLCBhbmQgbW9yZS4gQWxzbywgdGhlCitwaW5fdXNlcl9wYWdl cyooKSBBUElzIGFyZSBjbGVhcmx5IGRpc3RpbmN0IGZyb20gdGhlIGdldF91c2VyX3BhZ2VzKigp IEFQSXMsIHNvCit0aGF0J3MgYSBuYXR1cmFsIGRpdmlkaW5nIGxpbmUsIGFuZCBhIGdvb2QgcG9p bnQgdG8gbWFrZSBzZXBhcmF0ZSB3cmFwcGVyIGNhbGxzLgorSW4gb3RoZXIgd29yZHMsIHVzZSBw aW5fdXNlcl9wYWdlcyooKSBmb3IgRE1BLXBpbm5lZCBwYWdlcywgYW5kCitnZXRfdXNlcl9wYWdl cyooKSBmb3Igb3RoZXIgY2FzZXMuIFRoZXJlIGFyZSBmb3VyIGNhc2VzIGRlc2NyaWJlZCBsYXRl ciBvbiBpbgordGhpcyBkb2N1bWVudCwgdG8gZnVydGhlciBjbGFyaWZ5IHRoYXQgY29uY2VwdC4K KworRk9MTF9QSU4gYW5kIEZPTExfR0VUIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGEgZ2l2 ZW4gZ3VwIGNhbGwuIEhvd2V2ZXIsCittdWx0aXBsZSB0aHJlYWRzIGFuZCBjYWxsIHNpdGVzIGFy ZSBmcmVlIHRvIHBpbiB0aGUgc2FtZSBzdHJ1Y3QgcGFnZXMsIHZpYSBib3RoCitGT0xMX1BJTiBh bmQgRk9MTF9HRVQuIEl0J3MganVzdCB0aGUgY2FsbCBzaXRlIHRoYXQgbmVlZHMgdG8gY2hvb3Nl IG9uZSBvciB0aGUKK290aGVyLCBub3QgdGhlIHN0cnVjdCBwYWdlKHMpLgorCitUaGUgRk9MTF9Q SU4gaW1wbGVtZW50YXRpb24gaXMgbmVhcmx5IHRoZSBzYW1lIGFzIEZPTExfR0VULCBleGNlcHQg dGhhdCBGT0xMX1BJTgordXNlcyBhIGRpZmZlcmVudCByZWZlcmVuY2UgY291bnRpbmcgdGVjaG5p cXVlLgorCitGT0xMX1BJTiBpcyBhIHByZXJlcXVpc2l0ZSB0byBGT0xMX0xPTkdURVJNLiBBbm90 aGVyIHdheSBvZiBzYXlpbmcgdGhhdCBpcywKK0ZPTExfTE9OR1RFUk0gaXMgYSBzcGVjaWZpYyBj YXNlLCBtb3JlIHJlc3RyaWN0aXZlIGNhc2Ugb2YgRk9MTF9QSU4uCisKK1doaWNoIGZsYWdzIGFy ZSBzZXQgYnkgZWFjaCB3cmFwcGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCitGb3IgdGhlc2UgcGluX3VzZXJfcGFnZXMqKCkgZnVuY3Rpb25zLCBGT0xMX1BJTiBpcyBP UidkIGluIHdpdGggd2hhdGV2ZXIgZ3VwCitmbGFncyB0aGUgY2FsbGVyIHByb3ZpZGVzLiBUaGUg Y2FsbGVyIGlzIHJlcXVpcmVkIHRvIHBhc3MgaW4gYSBub24tbnVsbCBzdHJ1Y3QKK3BhZ2VzKiBh cnJheSwgYW5kIHRoZSBmdW5jdGlvbiB0aGVuIHBpbiBwYWdlcyBieSBpbmNyZW1lbnRpbmcgZWFj aCBieSBhIHNwZWNpYWwKK3ZhbHVlLiBGb3Igbm93LCB0aGF0IHZhbHVlIGlzICsxLCBqdXN0IGxp a2UgZ2V0X3VzZXJfcGFnZXMqKCkuOjoKKworIEZ1bmN0aW9uCisgLS0tLS0tLS0KKyBwaW5fdXNl cl9wYWdlcyAgICAgICAgICBGT0xMX1BJTiBpcyBhbHdheXMgc2V0IGludGVybmFsbHkgYnkgdGhp cyBmdW5jdGlvbi4KKyBwaW5fdXNlcl9wYWdlc19mYXN0ICAgICBGT0xMX1BJTiBpcyBhbHdheXMg c2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKyBwaW5fdXNlcl9wYWdlc19yZW1vdGUg ICBGT0xMX1BJTiBpcyBhbHdheXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKwor Rm9yIHRoZXNlIGdldF91c2VyX3BhZ2VzKigpIGZ1bmN0aW9ucywgRk9MTF9HRVQgbWlnaHQgbm90 IGV2ZW4gYmUgc3BlY2lmaWVkLgorQmVoYXZpb3IgaXMgYSBsaXR0bGUgbW9yZSBjb21wbGV4IHRo YW4gYWJvdmUuIElmIEZPTExfR0VUIHdhcyAqbm90KiBzcGVjaWZpZWQsCitidXQgdGhlIGNhbGxl ciBwYXNzZWQgaW4gYSBub24tbnVsbCBzdHJ1Y3QgcGFnZXMqIGFycmF5LCB0aGVuIHRoZSBmdW5j dGlvbgorc2V0cyBGT0xMX0dFVCBmb3IgeW91LCBhbmQgcHJvY2VlZHMgdG8gcGluIHBhZ2VzIGJ5 IGluY3JlbWVudGluZyB0aGUgcmVmY291bnQKK29mIGVhY2ggcGFnZSBieSArMS46OgorCisgRnVu Y3Rpb24KKyAtLS0tLS0tLQorIGdldF91c2VyX3BhZ2VzICAgICAgICAgICBGT0xMX0dFVCBpcyBz b21ldGltZXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5jdGlvbi4KKyBnZXRfdXNlcl9wYWdl c19mYXN0ICAgICAgRk9MTF9HRVQgaXMgc29tZXRpbWVzIHNldCBpbnRlcm5hbGx5IGJ5IHRoaXMg ZnVuY3Rpb24uCisgZ2V0X3VzZXJfcGFnZXNfcmVtb3RlICAgIEZPTExfR0VUIGlzIHNvbWV0aW1l cyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorCitUcmFja2luZyBkbWEtcGlubmVk IHBhZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgb2YgdGhlIGtleSBkZXNp Z24gY29uc3RyYWludHMsIGFuZCBzb2x1dGlvbnMsIGZvciB0cmFja2luZyBkbWEtcGlubmVkCitw YWdlczoKKworKiBBbiBhY3R1YWwgcmVmZXJlbmNlIGNvdW50LCBwZXIgc3RydWN0IHBhZ2UsIGlz IHJlcXVpcmVkLiBUaGlzIGlzIGJlY2F1c2UKKyAgbXVsdGlwbGUgcHJvY2Vzc2VzIG1heSBwaW4g YW5kIHVucGluIGEgcGFnZS4KKworKiBGYWxzZSBwb3NpdGl2ZXMgKHJlcG9ydGluZyB0aGF0IGEg cGFnZSBpcyBkbWEtcGlubmVkLCB3aGVuIGluIGZhY3QgaXQgaXMgbm90KQorICBhcmUgYWNjZXB0 YWJsZSwgYnV0IGZhbHNlIG5lZ2F0aXZlcyBhcmUgbm90LgorCisqIHN0cnVjdCBwYWdlIG1heSBu b3QgYmUgaW5jcmVhc2VkIGluIHNpemUgZm9yIHRoaXMsIGFuZCBhbGwgZmllbGRzIGFyZSBhbHJl YWR5CisgIHVzZWQuCisKKyogR2l2ZW4gdGhlIGFib3ZlLCB3ZSBjYW4gb3ZlcmxvYWQgdGhlIHBh Z2UtPl9yZWZjb3VudCBmaWVsZCBieSB1c2luZywgc29ydCBvZiwKKyAgdGhlIHVwcGVyIGJpdHMg aW4gdGhhdCBmaWVsZCBmb3IgYSBkbWEtcGlubmVkIGNvdW50LiAiU29ydCBvZiIsIG1lYW5zIHRo YXQsCisgIHJhdGhlciB0aGFuIGRpdmlkaW5nIHBhZ2UtPl9yZWZjb3VudCBpbnRvIGJpdCBmaWVs ZHMsIHdlIHNpbXBsZSBhZGQgYSBtZWRpdW0tCisgIGxhcmdlIHZhbHVlIChHVVBfUElOX0NPVU5U SU5HX0JJQVMsIGluaXRpYWxseSBjaG9zZW4gdG8gYmUgMTAyNDogMTAgYml0cykgdG8KKyAgcGFn ZS0+X3JlZmNvdW50LiBUaGlzIHByb3ZpZGVzIGZ1enp5IGJlaGF2aW9yOiBpZiBhIHBhZ2UgaGFz IGdldF9wYWdlKCkgY2FsbGVkCisgIG9uIGl0IDEwMjQgdGltZXMsIHRoZW4gaXQgd2lsbCBhcHBl YXIgdG8gaGF2ZSBhIHNpbmdsZSBkbWEtcGlubmVkIGNvdW50LgorICBBbmQgYWdhaW4sIHRoYXQn cyBhY2NlcHRhYmxlLgorCitUaGlzIGFsc28gbGVhZHMgdG8gbGltaXRhdGlvbnM6IHRoZXJlIGFy ZSBvbmx5IDMxLTEwPT0yMSBiaXRzIGF2YWlsYWJsZSBmb3IgYQorY291bnRlciB0aGF0IGluY3Jl bWVudHMgMTAgYml0cyBhdCBhIHRpbWUuCisKK1RPRE86IGZvciAxR0IgYW5kIGxhcmdlciBodWdl IHBhZ2VzLCB0aGlzIGlzIGN1dHRpbmcgaXQgY2xvc2UuIFRoYXQncyBiZWNhdXNlCit3aGVuIHBp bl91c2VyX3BhZ2VzKCkgZm9sbG93cyBzdWNoIHBhZ2VzLCBpdCBpbmNyZW1lbnRzIHRoZSBoZWFk IHBhZ2UgYnkgIjEiCisod2hlcmUgIjEiIHVzZWQgdG8gbWVhbiAiKzEiIGZvciBnZXRfdXNlcl9w YWdlcygpLCBidXQgbm93IG1lYW5zICIrMTAyNCIgZm9yCitwaW5fdXNlcl9wYWdlcygpKSBmb3Ig ZWFjaCB0YWlsIHBhZ2UuIFNvIGlmIHlvdSBoYXZlIGEgMUdCIGh1Z2UgcGFnZToKKworKiBUaGVy ZSBhcmUgMjU2SyAoMTggYml0cykgd29ydGggb2YgNCBLQiB0YWlsIHBhZ2VzLgorKiBUaGVyZSBh cmUgMjEgYml0cyBhdmFpbGFibGUgdG8gY291bnQgdXAgdmlhIEdVUF9QSU5fQ09VTlRJTkdfQklB UyAodGhhdCBpcywKKyAgMTAgYml0cyBhdCBhIHRpbWUpCisqIFRoZXJlIGFyZSAyMSAtIDE4ID09 IDMgYml0cyBhdmFpbGFibGUgdG8gY291bnQuIEV4Y2VwdCB0aGF0IHRoZXJlIGFyZW4ndCwKKyAg YmVjYXVzZSB5b3UgbmVlZCB0byBhbGxvdyBmb3IgYSBmZXcgbm9ybWFsIGdldF9wYWdlKCkgY2Fs bHMgb24gdGhlIGhlYWQgcGFnZSwKKyAgYXMgd2VsbC4gRm9ydHVuYXRlbHksIHRoZSBhcHByb2Fj aCBvZiB1c2luZyBhZGRpdGlvbiwgcmF0aGVyIHRoYW4gImhhcmQiCisgIGJpdGZpZWxkcywgd2l0 aGluIHBhZ2UtPl9yZWZjb3VudCwgYWxsb3dzIGZvciBzaGFyaW5nIHRoZXNlIGJpdHMgZ3JhY2Vm dWxseS4KKyAgQnV0IHdlJ3JlIHN0aWxsIGxvb2tpbmcgYXQgYWJvdXQgOCByZWZlcmVuY2VzLgor CitUaGlzLCBob3dldmVyLCBpcyBhIG1pc3NpbmcgZmVhdHVyZSBtb3JlIHRoYW4gYW55dGhpbmcg ZWxzZSwgYmVjYXVzZSBpdCdzIGVhc2lseQorc29sdmVkIGJ5IGFkZHJlc3NpbmcgYW4gb2J2aW91 cyBpbmVmZmljaWVuY3kgaW4gdGhlIG9yaWdpbmFsIGdldF91c2VyX3BhZ2VzKCkKK2FwcHJvYWNo IG9mIHJldHJpZXZpbmcgcGFnZXM6IHN0b3AgdHJlYXRpbmcgYWxsIHRoZSBwYWdlcyBhcyBpZiB0 aGV5IHdlcmUKK1BBR0VfU0laRS4gUmV0cmlldmUgaHVnZSBwYWdlcyBhcyBodWdlIHBhZ2VzLiBU aGUgY2FsbGVycyBuZWVkIHRvIGJlIGF3YXJlIG9mCit0aGlzLCBzbyBzb21lIHdvcmsgaXMgcmVx dWlyZWQuIE9uY2UgdGhhdCdzIGluIHBsYWNlLCB0aGlzIGxpbWl0YXRpb24gbW9zdGx5CitkaXNh cHBlYXJzIGZyb20gdmlldywgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIGFtcGxlIHJlZmNvdW50aW5n IHJhbmdlIGF2YWlsYWJsZS4KKworKiBDYWxsZXJzIG11c3Qgc3BlY2lmaWNhbGx5IHJlcXVlc3Qg ImRtYS1waW5uZWQgdHJhY2tpbmcgb2YgcGFnZXMiLiBJbiBvdGhlcgorICB3b3JkcywganVzdCBj YWxsaW5nIGdldF91c2VyX3BhZ2VzKCkgd2lsbCBub3Qgc3VmZmljZTsgYSBuZXcgc2V0IG9mIGZ1 bmN0aW9ucywKKyAgcGluX3VzZXJfcGFnZSgpIGFuZCByZWxhdGVkLCBtdXN0IGJlIHVzZWQuCisK K0ZPTExfUElOLCBGT0xMX0dFVCwgRk9MTF9MT05HVEVSTTogd2hlbiB0byB1c2Ugd2hpY2ggZmxh Z3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworVGhhbmtzIHRvIEphbiBLYXJhLCBWbGFzdGltaWwgQmFia2EgYW5kIHNldmVyYWwg b3RoZXIgLW1tIHBlb3BsZSwgZm9yIGRlc2NyaWJpbmcKK3RoZXNlIGNhdGVnb3JpZXM6CisKK0NB U0UgMTogRGlyZWN0IElPIChESU8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJl IEdVUCByZWZlcmVuY2VzIHRvIHBhZ2VzIHRoYXQgYXJlIHNlcnZpbmcKK2FzIERJTyBidWZmZXJz LiBUaGVzZSBidWZmZXJzIGFyZSBuZWVkZWQgZm9yIGEgcmVsYXRpdmVseSBzaG9ydCB0aW1lIChz byB0aGV5CithcmUgbm90ICJsb25nIHRlcm0iKS4gTm8gc3BlY2lhbCBzeW5jaHJvbml6YXRpb24g d2l0aCBwYWdlX21rY2xlYW4oKSBvcgorbXVubWFwKCkgaXMgcHJvdmlkZWQuIFRoZXJlZm9yZSwg ZmxhZ3MgdG8gc2V0IGF0IHRoZSBjYWxsIHNpdGUgYXJlOiA6OgorCisgICAgRk9MTF9QSU4KKwor Li4uYnV0IHJhdGhlciB0aGFuIHNldHRpbmcgRk9MTF9QSU4gZGlyZWN0bHksIGNhbGwgc2l0ZXMg c2hvdWxkIHVzZSBvbmUgb2YKK3RoZSBwaW5fdXNlcl9wYWdlcyooKSByb3V0aW5lcyB0aGF0IHNl dCBGT0xMX1BJTi4KKworQ0FTRSAyOiBSRE1BCistLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSBHVVAg cmVmZXJlbmNlcyB0byBwYWdlcyB0aGF0IGFyZSBzZXJ2aW5nIGFzIERNQQorYnVmZmVycy4gVGhl c2UgYnVmZmVycyBhcmUgbmVlZGVkIGZvciBhIGxvbmcgdGltZSAoImxvbmcgdGVybSIpLiBObyBz cGVjaWFsCitzeW5jaHJvbml6YXRpb24gd2l0aCBwYWdlX21rY2xlYW4oKSBvciBtdW5tYXAoKSBp cyBwcm92aWRlZC4gVGhlcmVmb3JlLCBmbGFncwordG8gc2V0IGF0IHRoZSBjYWxsIHNpdGUgYXJl OiA6OgorCisgICAgRk9MTF9QSU4gfCBGT0xMX0xPTkdURVJNCisKK05PVEU6IFNvbWUgcGFnZXMs IHN1Y2ggYXMgREFYIHBhZ2VzLCBjYW5ub3QgYmUgcGlubmVkIHdpdGggbG9uZ3Rlcm0gcGlucy4g VGhhdCdzCitiZWNhdXNlIERBWCBwYWdlcyBkbyBub3QgaGF2ZSBhIHNlcGFyYXRlIHBhZ2UgY2Fj aGUsIGFuZCBzbyAicGlubmluZyIgaW1wbGllcworbG9ja2luZyBkb3duIGZpbGUgc3lzdGVtIGJs b2Nrcywgd2hpY2ggaXMgbm90ICh5ZXQpIHN1cHBvcnRlZCBpbiB0aGF0IHdheS4KKworQ0FTRSAz OiBIYXJkd2FyZSB3aXRoIHBhZ2UgZmF1bHRpbmcgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVyZSwgYSB3ZWxsLXdyaXR0ZW4gZHJpdmVyIGRv ZXNuJ3Qgbm9ybWFsbHkgbmVlZCB0byBwaW4gcGFnZXMgYXQgYWxsLiBIb3dldmVyLAoraWYgdGhl IGRyaXZlciBkb2VzIGNob29zZSB0byBkbyBzbywgaXQgY2FuIHJlZ2lzdGVyIE1NVSBub3RpZmll cnMgZm9yIHRoZSByYW5nZSwKK2FuZCB3aWxsIGJlIGNhbGxlZCBiYWNrIHVwb24gaW52YWxpZGF0 aW9uLiBFaXRoZXIgd2F5IChhdm9pZGluZyBwYWdlIHBpbm5pbmcsIG9yCit1c2luZyBNTVUgbm90 aWZpZXJzIHRvIHVucGluIHVwb24gcmVxdWVzdCksIHRoZXJlIGlzIHByb3BlciBzeW5jaHJvbml6 YXRpb24gd2l0aAorYm90aCBmaWxlc3lzdGVtIGFuZCBtbSAocGFnZV9ta2NsZWFuKCksIG11bm1h cCgpLCBldGMpLgorCitUaGVyZWZvcmUsIG5laXRoZXIgZmxhZyBuZWVkcyB0byBiZSBzZXQuCisK K0luIHRoaXMgY2FzZSwgaWRlYWxseSwgbmVpdGhlciBnZXRfdXNlcl9wYWdlcygpIG5vciBwaW5f dXNlcl9wYWdlcygpIHNob3VsZCBiZQorY2FsbGVkLiBJbnN0ZWFkLCB0aGUgc29mdHdhcmUgc2hv dWxkIGJlIHdyaXR0ZW4gc28gdGhhdCBpdCBkb2VzIG5vdCBwaW4gcGFnZXMuCitUaGlzIGFsbG93 cyBtbSBhbmQgZmlsZXN5c3RlbXMgdG8gb3BlcmF0ZSBtb3JlIGVmZmljaWVudGx5IGFuZCByZWxp YWJseS4KKworQ0FTRSA0OiBQaW5uaW5nIGZvciBzdHJ1Y3QgcGFnZSBtYW5pcHVsYXRpb24gb25s eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVy ZSwgbm9ybWFsIEdVUCBjYWxscyBhcmUgc3VmZmljaWVudCwgc28gbmVpdGhlciBmbGFnIG5lZWRz IHRvIGJlIHNldC4KKworcGFnZV9kbWFfcGlubmVkKCk6IHRoZSB3aG9sZSBwb2ludCBvZiBwaW5u aW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhl IHdob2xlIHBvaW50IG9mIG1hcmtpbmcgcGFnZXMgYXMgIkRNQS1waW5uZWQiIG9yICJndXAtcGlu bmVkIiBpcyB0byBiZSBhYmxlCit0byBxdWVyeSwgImlzIHRoaXMgcGFnZSBETUEtcGlubmVkPyIg VGhhdCBhbGxvd3MgY29kZSBzdWNoIGFzIHBhZ2VfbWtjbGVhbigpCisoYW5kIGZpbGUgc3lzdGVt IHdyaXRlYmFjayBjb2RlIGluIGdlbmVyYWwpIHRvIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFi b3V0Cit3aGF0IHRvIGRvIHdoZW4gYSBwYWdlIGNhbm5vdCBiZSB1bm1hcHBlZCBkdWUgdG8gc3Vj aCBwaW5zLgorCitXaGF0IHRvIGRvIGluIHRob3NlIGNhc2VzIGlzIHRoZSBzdWJqZWN0IG9mIGEg eWVhcnMtbG9uZyBzZXJpZXMgb2YgZGlzY3Vzc2lvbnMKK2FuZCBkZWJhdGVzIChzZWUgdGhlIFJl ZmVyZW5jZXMgYXQgdGhlIGVuZCBvZiB0aGlzIGRvY3VtZW50KS4gSXQncyBhIFRPRE8gaXRlbQor aGVyZTogZmlsbCBpbiB0aGUgZGV0YWlscyBvbmNlIHRoYXQncyB3b3JrZWQgb3V0LiBNZWFud2hp bGUsIGl0J3Mgc2FmZSB0byBzYXkKK3RoYXQgaGF2aW5nIHRoaXMgYXZhaWxhYmxlOiA6OgorCisg ICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWdlX2RtYV9waW5uZWQoc3RydWN0IHBhZ2UgKnBh Z2UpCisKKy4uLmlzIGEgcHJlcmVxdWlzaXRlIHRvIHNvbHZpbmcgdGhlIGxvbmctcnVubmluZyBn dXArRE1BIHByb2JsZW0uCisKK0Fub3RoZXIgd2F5IG9mIHRoaW5raW5nIGFib3V0IEZPTExfR0VU LCBGT0xMX1BJTiwgYW5kIEZPTExfTE9OR1RFUk0KKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQW5vdGhlciB3YXkg b2YgdGhpbmtpbmcgYWJvdXQgdGhlc2UgZmxhZ3MgaXMgYXMgYSBwcm9ncmVzc2lvbiBvZiByZXN0 cmljdGlvbnM6CitGT0xMX0dFVCBpcyBmb3Igc3RydWN0IHBhZ2UgbWFuaXB1bGF0aW9uLCB3aXRo b3V0IGFmZmVjdGluZyB0aGUgZGF0YSB0aGF0IHRoZQorc3RydWN0IHBhZ2UgcmVmZXJzIHRvLiBG T0xMX1BJTiBpcyBhICpyZXBsYWNlbWVudCogZm9yIEZPTExfR0VULCBhbmQgaXMgZm9yCitzaG9y dCB0ZXJtIHBpbnMgb24gcGFnZXMgd2hvc2UgZGF0YSAqd2lsbCogZ2V0IGFjY2Vzc2VkLiBBcyBz dWNoLCBGT0xMX1BJTiBpcworYSAibW9yZSBzZXZlcmUiIGZvcm0gb2YgcGlubmluZy4gQW5kIGZp bmFsbHksIEZPTExfTE9OR1RFUk0gaXMgYW4gZXZlbiBtb3JlCityZXN0cmljdGl2ZSBjYXNlIHRo YXQgaGFzIEZPTExfUElOIGFzIGEgcHJlcmVxdWlzaXRlOiB0aGlzIGlzIGZvciBwYWdlcyB0aGF0 Cit3aWxsIGJlIHBpbm5lZCBsb25ndGVybSwgYW5kIHdob3NlIGRhdGEgd2lsbCBiZSBhY2Nlc3Nl ZC4KKworVW5pdCB0ZXN0aW5nCis9PT09PT09PT09PT0KK1RoaXMgZmlsZTo6CisKKyB0b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy92bS9ndXBfYmVuY2htYXJrLmMKKworaGFzIHRoZSBmb2xsb3dpbmcg bmV3IGNhbGxzIHRvIGV4ZXJjaXNlIHRoZSBuZXcgcGluKigpIHdyYXBwZXIgZnVuY3Rpb25zOgor CisqIFBJTl9GQVNUX0JFTkNITUFSSyAoLi9ndXBfYmVuY2htYXJrIC1hKQorKiBQSU5fQkVOQ0hN QVJLICguL2d1cF9iZW5jaG1hcmsgLWIpCisKK1lvdSBjYW4gbW9uaXRvciBob3cgbWFueSB0b3Rh bCBkbWEtcGlubmVkIHBhZ2VzIGhhdmUgYmVlbiBhY3F1aXJlZCBhbmQgcmVsZWFzZWQKK3NpbmNl IHRoZSBzeXN0ZW0gd2FzIGJvb3RlZCwgdmlhIHR3byBuZXcgL3Byb2Mvdm1zdGF0IGVudHJpZXM6 IDo6CisKKyAgICAvcHJvYy92bXN0YXQvbnJfZm9sbF9waW5fcmVxdWVzdGVkCisgICAgL3Byb2Mv dm1zdGF0L25yX2ZvbGxfcGluX3JlcXVlc3RlZAorCitUaG9zZSBhcmUgYm90aCBnb2luZyB0byBz aG93IHplcm8sIHVubGVzcyBDT05GSUdfREVCVUdfVk0gaXMgc2V0LiBUaGlzIGlzCitiZWNhdXNl IHRoZXJlIGlzIGEgbm90aWNlYWJsZSBwZXJmb3JtYW5jZSBkcm9wIGluIHB1dF91c2VyX3BhZ2Uo KSwgd2hlbiB0aGV5CithcmUgYWN0aXZhdGVkLgorCitSZWZlcmVuY2VzCis9PT09PT09PT09CisK KyogYFNvbWUgc2xvdyBwcm9ncmVzcyBvbiBnZXRfdXNlcl9wYWdlcygpIChBcHIgMiwgMjAxOSkg PGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy83ODQ1NzQvPmBfCisqIGBETUEgYW5kIGdldF91c2Vy X3BhZ2VzKCkgKExQQzogRGVjIDEyLCAyMDE4KSA8aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzc3 NDQxMS8+YF8KKyogYFRoZSB0cm91YmxlIHdpdGggZ2V0X3VzZXJfcGFnZXMoKSAoQXByIDMwLCAy MDE4KSA8aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzc1MzAyNy8+YF8KKworSm9obiBIdWJiYXJk LCBPY3RvYmVyLCAyMDE5CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRl L2xpbnV4L21tLmgKaW5kZXggZTIwMzJmZjY0MGViLi5mOTY1M2U2NjZiZjQgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTEwNDcsMTYg KzEwNDcsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9wYWdlKHN0cnVjdCBwYWdlICpwYWdl KQogICogcHV0X3VzZXJfcGFnZSgpIC0gcmVsZWFzZSBhIGd1cC1waW5uZWQgcGFnZQogICogQHBh Z2U6ICAgICAgICAgICAgcG9pbnRlciB0byBwYWdlIHRvIGJlIHJlbGVhc2VkCiAgKgotICogUGFn ZXMgdGhhdCB3ZXJlIHBpbm5lZCB2aWEgZ2V0X3VzZXJfcGFnZXMqKCkgbXVzdCBiZSByZWxlYXNl ZCB2aWEKLSAqIGVpdGhlciBwdXRfdXNlcl9wYWdlKCksIG9yIG9uZSBvZiB0aGUgcHV0X3VzZXJf cGFnZXMqKCkgcm91dGluZXMKLSAqIGJlbG93LiBUaGlzIGlzIHNvIHRoYXQgZXZlbnR1YWxseSwg cGFnZXMgdGhhdCBhcmUgcGlubmVkIHZpYQotICogZ2V0X3VzZXJfcGFnZXMqKCkgY2FuIGJlIHNl cGFyYXRlbHkgdHJhY2tlZCBhbmQgdW5pcXVlbHkgaGFuZGxlZC4gSW4KLSAqIHBhcnRpY3VsYXIs IGludGVyYWN0aW9ucyB3aXRoIFJETUEgYW5kIGZpbGVzeXN0ZW1zIG5lZWQgc3BlY2lhbAotICog aGFuZGxpbmcuCisgKiBQYWdlcyB0aGF0IHdlcmUgcGlubmVkIHZpYSBwaW5fdXNlcl9wYWdlcyoo KSBtdXN0IGJlIHJlbGVhc2VkIHZpYSBlaXRoZXIKKyAqIHB1dF91c2VyX3BhZ2UoKSwgb3Igb25l IG9mIHRoZSBwdXRfdXNlcl9wYWdlcyooKSByb3V0aW5lcy4gVGhpcyBpcyBzbyB0aGF0CisgKiBl dmVudHVhbGx5IHN1Y2ggcGFnZXMgY2FuIGJlIHNlcGFyYXRlbHkgdHJhY2tlZCBhbmQgdW5pcXVl bHkgaGFuZGxlZC4gSW4KKyAqIHBhcnRpY3VsYXIsIGludGVyYWN0aW9ucyB3aXRoIFJETUEgYW5k IGZpbGVzeXN0ZW1zIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KICAqCiAgKiBwdXRfdXNlcl9wYWdl KCkgYW5kIHB1dF9wYWdlKCkgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsIGRlc3BpdGUgdGhpcyBl YXJseQogICogaW1wbGVtZW50YXRpb24gdGhhdCBtYWtlcyB0aGVtIGxvb2sgdGhlIHNhbWUuIHB1 dF91c2VyX3BhZ2UoKSBjYWxscyBtdXN0Ci0gKiBiZSBwZXJmZWN0bHkgbWF0Y2hlZCB1cCB3aXRo IGdldF91c2VyX3BhZ2UoKSBjYWxscy4KKyAqIGJlIHBlcmZlY3RseSBtYXRjaGVkIHVwIHdpdGgg cGluKigpIGNhbGxzLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X3VzZXJfcGFnZShzdHJ1 Y3QgcGFnZSAqcGFnZSkKIHsKQEAgLTE1MTQsOSArMTUxMiwxNiBAQCBsb25nIGdldF91c2VyX3Bh Z2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0s CiAJCQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJ CSAgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJICAg IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKTsKK2xvbmcgcGluX3Vz ZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0 ICptbSwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMs CisJCQkgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJ ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpOwogbG9uZyBnZXRf dXNlcl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAog CQkJICAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCQkg ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcyk7Citsb25nIHBpbl91c2VyX3BhZ2VzKHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJCSAgICB1bnNpZ25l ZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICoqdm1hcyk7CiBsb25nIGdldF91c2VyX3BhZ2VzX2xvY2tlZCh1bnNpZ25lZCBs b25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCQkgICAgdW5zaWduZWQgaW50IGd1 cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywgaW50ICpsb2NrZWQpOwogbG9uZyBnZXRfdXNl cl9wYWdlc191bmxvY2tlZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3Bh Z2VzLApAQCAtMTUyNCw2ICsxNTI5LDggQEAgbG9uZyBnZXRfdXNlcl9wYWdlc191bmxvY2tlZCh1 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCiBpbnQgZ2V0X3Vz ZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJCQl1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKK2ludCBwaW5fdXNlcl9w YWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCXVuc2lnbmVk IGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMpOwogCiBpbnQgYWNjb3VudF9sb2Nr ZWRfdm0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgcGFnZXMsIGJvb2wgaW5j KTsKIGludCBfX2FjY291bnRfbG9ja2VkX3ZtKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25l ZCBsb25nIHBhZ2VzLCBib29sIGluYywKQEAgLTI1ODcsMTMgKzI1OTQsMTUgQEAgc3RydWN0IHBh Z2UgKmZvbGxvd19wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25n IGFkZHJlc3MsCiAjZGVmaW5lIEZPTExfQU5PTgkweDgwMDAJLyogZG9uJ3QgZG8gZmlsZSBtYXBw aW5ncyAqLwogI2RlZmluZSBGT0xMX0xPTkdURVJNCTB4MTAwMDAJLyogbWFwcGluZyBsaWZldGlt ZSBpcyBpbmRlZmluaXRlOiBzZWUgYmVsb3cgKi8KICNkZWZpbmUgRk9MTF9TUExJVF9QTUQJMHgy MDAwMAkvKiBzcGxpdCBodWdlIHBtZCBiZWZvcmUgcmV0dXJuaW5nICovCisjZGVmaW5lIEZPTExf UElOCTB4NDAwMDAJLyogcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgcHV0X3VzZXJfcGFnZSgp ICovCiAKIC8qCi0gKiBOT1RFIG9uIEZPTExfTE9OR1RFUk06CisgKiBGT0xMX1BJTiBhbmQgRk9M TF9MT05HVEVSTSBtYXkgYmUgdXNlZCBpbiB2YXJpb3VzIGNvbWJpbmF0aW9ucyB3aXRoIGVhY2gK KyAqIG90aGVyLiBIZXJlIGlzIHdoYXQgdGhleSBtZWFuLCBhbmQgaG93IHRvIHVzZSB0aGVtOgog ICoKICAqIEZPTExfTE9OR1RFUk0gaW5kaWNhdGVzIHRoYXQgdGhlIHBhZ2Ugd2lsbCBiZSBoZWxk IGZvciBhbiBpbmRlZmluaXRlIHRpbWUKLSAqIHBlcmlvZCBfb2Z0ZW5fIHVuZGVyIHVzZXJzcGFj ZSBjb250cm9sLiAgVGhpcyBpcyBjb250cmFzdGVkIHdpdGgKLSAqIGlvdl9pdGVyX2dldF9wYWdl cygpIHdoZXJlIHVzYWdlcyB3aGljaCBhcmUgdHJhbnNpZW50LgorICogcGVyaW9kIF9vZnRlbl8g dW5kZXIgdXNlcnNwYWNlIGNvbnRyb2wuICBUaGlzIGlzIGluIGNvbnRyYXN0IHRvCisgKiBpb3Zf aXRlcl9nZXRfcGFnZXMoKSwgd2hvc2UgdXNhZ2VzIGFyZSB0cmFuc2llbnQuCiAgKgogICogRklY TUU6IEZvciBwYWdlcyB3aGljaCBhcmUgcGFydCBvZiBhIGZpbGVzeXN0ZW0sIG1hcHBpbmdzIGFy ZSBzdWJqZWN0IHRvIHRoZQogICogbGlmZXRpbWUgZW5mb3JjZWQgYnkgdGhlIGZpbGVzeXN0ZW0g YW5kIHdlIG5lZWQgZ3VhcmFudGVlcyB0aGF0IGxvbmd0ZXJtCkBAIC0yNjA4LDExICsyNjE3LDM5 IEBAIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg dW5zaWduZWQgbG9uZyBhZGRyZXNzLAogICogQ3VycmVudGx5IG9ubHkgZ2V0X3VzZXJfcGFnZXMo KSBhbmQgZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIHN1cHBvcnQgdGhpcyBmbGFnCiAgKiBhbmQgY2Fs bHMgdG8gZ2V0X3VzZXJfcGFnZXNfW3VuXWxvY2tlZCBhcmUgc3BlY2lmaWNhbGx5IG5vdCBhbGxv d2VkLiAgVGhpcwogICogaXMgZHVlIHRvIGFuIGluY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBGUyBE QVggY2hlY2sgYW5kCi0gKiBGQVVMVF9GTEFHX0FMTE9XX1JFVFJZCisgKiBGQVVMVF9GTEFHX0FM TE9XX1JFVFJZLgogICoKLSAqIEluIHRoZSBDTUEgY2FzZTogbG9uZ3Rlcm0gcGlucyBpbiBhIENN QSByZWdpb24gd291bGQgdW5uZWNlc3NhcmlseSBmcmFnbWVudAotICogdGhhdCByZWdpb24uICBB bmQgc28gQ01BIGF0dGVtcHRzIHRvIG1pZ3JhdGUgdGhlIHBhZ2UgYmVmb3JlIHBpbm5pbmcgd2hl bgorICogSW4gdGhlIENNQSBjYXNlOiBsb25nIHRlcm0gcGlucyBpbiBhIENNQSByZWdpb24gd291 bGQgdW5uZWNlc3NhcmlseSBmcmFnbWVudAorICogdGhhdCByZWdpb24uICBBbmQgc28sIENNQSBh dHRlbXB0cyB0byBtaWdyYXRlIHRoZSBwYWdlIGJlZm9yZSBwaW5uaW5nLCB3aGVuCiAgKiBGT0xM X0xPTkdURVJNIGlzIHNwZWNpZmllZC4KKyAqCisgKiBGT0xMX1BJTiBpbmRpY2F0ZXMgdGhhdCBh IHNwZWNpYWwga2luZCBvZiB0cmFja2luZyAobm90IGp1c3QgcGFnZS0+X3JlZmNvdW50LAorICog YnV0IGFuIGFkZGl0aW9uYWwgcGluIGNvdW50aW5nIHN5c3RlbSkgd2lsbCBiZSBpbnZva2VkLiBU aGlzIGlzIGludGVuZGVkIGZvcgorICogYW55dGhpbmcgdGhhdCBnZXRzIGEgcGFnZSByZWZlcmVu Y2UgYW5kIHRoZW4gdG91Y2hlcyBwYWdlIGRhdGEgKGZvciBleGFtcGxlLAorICogRGlyZWN0IElP KS4gVGhpcyBsZXRzIHRoZSBmaWxlc3lzdGVtIGtub3cgdGhhdCBzb21lIG5vbi1maWxlLXN5c3Rl bSBlbnRpdHkgaXMKKyAqIHBvdGVudGlhbGx5IGNoYW5naW5nIHRoZSBwYWdlcycgZGF0YS4gSW4g Y29udHJhc3QgdG8gRk9MTF9HRVQgKHdob3NlIHBhZ2VzCisgKiBhcmUgcmVsZWFzZWQgdmlhIHB1 dF9wYWdlKCkpLCBGT0xMX1BJTiBwYWdlcyBtdXN0IGJlIHJlbGVhc2VkLCB1bHRpbWF0ZWx5LCBi eQorICogYSBjYWxsIHRvIHB1dF91c2VyX3BhZ2UoKS4KKyAqCisgKiBGT0xMX1BJTiBpcyBzaW1p bGFyIHRvIEZPTExfR0VUOiBib3RoIG9mIHRoZXNlIHBpbiBwYWdlcy4gVGhleSB1c2UgZGlmZmVy ZW50CisgKiBhbmQgc2VwYXJhdGUgcmVmY291bnRpbmcgbWVjaGFuaXNtcywgaG93ZXZlciwgYW5k IHRoYXQgbWVhbnMgdGhhdCBlYWNoIGhhcworICogaXRzIG93biBhY3F1aXJlIGFuZCByZWxlYXNl IG1lY2hhbmlzbXM6CisgKgorICogICAgIEZPTExfR0VUOiBnZXRfdXNlcl9wYWdlcyooKSB0byBh Y3F1aXJlLCBhbmQgcHV0X3BhZ2UoKSB0byByZWxlYXNlLgorICoKKyAqICAgICBGT0xMX1BJTjog cGluX3VzZXJfcGFnZXMqKCkgdG8gYWNxdWlyZSwgYW5kIHB1dF91c2VyX3BhZ2VzIHRvIHJlbGVh c2UuCisgKgorICogRk9MTF9QSU4gYW5kIEZPTExfR0VUIGFyZSBtdXR1YWxseSBleGNsdXNpdmUg Zm9yIGEgZ2l2ZW4gZnVuY3Rpb24gY2FsbC4KKyAqIChUaGUgdW5kZXJseWluZyBwYWdlcyBtYXkg ZXhwZXJpZW5jZSBib3RoIEZPTExfR0VULWJhc2VkIGFuZCBGT0xMX1BJTi1iYXNlZAorICogY2Fs bHMgYXBwbGllZCB0byB0aGVtLCBhbmQgdGhhdCdzIHBlcmZlY3RseSBPSy4gVGhpcyBpcyBhIGNv bnN0cmFpbnQgb24gdGhlCisgKiBjYWxsZXJzLCBub3Qgb24gdGhlIHBhZ2VzLikKKyAqCisgKiBG T0xMX1BJTiBzaG91bGQgYmUgc2V0IGludGVybmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigp IEFQSXMsIG5ldmVyCisgKiBkaXJlY3RseSBieSB0aGUgY2FsbGVyLiBUaGF0J3MgaW4gb3JkZXIg dG8gaGVscCBhdm9pZCBtaXNtYXRjaGVzIHdoZW4KKyAqIHJlbGVhc2luZyBwYWdlczogZ2V0X3Vz ZXJfcGFnZXMqKCkgcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgcHV0X3BhZ2UoKSwKKyAqIHdo aWxlIHBpbl91c2VyX3BhZ2VzKigpIHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF91c2Vy X3BhZ2UoKS4KKyAqCisgKiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vdm0vcGluX3VzZXJfcGFn ZXMucnN0IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICovCiAKIHN0YXRpYyBpbmxpbmUgaW50IHZt X2ZhdWx0X3RvX2Vycm5vKHZtX2ZhdWx0X3Qgdm1fZmF1bHQsIGludCBmb2xsX2ZsYWdzKQpkaWZm IC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuYwppbmRleCBhNTk0YmM3MDgzNjcuLjFjMjAwZWVh YmQ3NyAxMDA2NDQKLS0tIGEvbW0vZ3VwLmMKKysrIGIvbW0vZ3VwLmMKQEAgLTE5NCw2ICsxOTQs MTAgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFnZV9wdGUoc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsCiAJc3BpbmxvY2tfdCAqcHRsOwogCXB0ZV90ICpwdGVwLCBwdGU7CiAKKwkv KiBGT0xMX0dFVCBhbmQgRk9MTF9QSU4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gKi8KKwlpZiAo V0FSTl9PTl9PTkNFKChmbGFncyAmIChGT0xMX1BJTiB8IEZPTExfR0VUKSkgPT0KKwkJCSAoRk9M TF9QSU4gfCBGT0xMX0dFVCkpKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKIHJldHJ5Ogog CWlmICh1bmxpa2VseShwbWRfYmFkKCpwbWQpKSkKIAkJcmV0dXJuIG5vX3BhZ2VfdGFibGUodm1h LCBmbGFncyk7CkBAIC04MTEsNyArODE1LDcgQEAgc3RhdGljIGxvbmcgX19nZXRfdXNlcl9wYWdl cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAKIAlzdGFy dCA9IHVudGFnZ2VkX2FkZHIoc3RhcnQpOwogCi0JVk1fQlVHX09OKCEhcGFnZXMgIT0gISEoZ3Vw X2ZsYWdzICYgRk9MTF9HRVQpKTsKKwlWTV9CVUdfT04oISFwYWdlcyAhPSAhIShndXBfZmxhZ3Mg JiAoRk9MTF9HRVQgfCBGT0xMX1BJTikpKTsKIAogCS8qCiAJICogSWYgRk9MTF9GT1JDRSBpcyBz ZXQgdGhlbiBkbyBub3QgZm9yY2UgYSBmdWxsIGZhdWx0IGFzIHRoZSBoaW50aW5nCkBAIC0xMDM1 LDcgKzEwMzksMTYgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIF9fZ2V0X3VzZXJfcGFn ZXNfbG9ja2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogCQlCVUdfT04oKmxvY2tlZCAhPSAx KTsKIAl9CiAKLQlpZiAocGFnZXMpCisJLyoKKwkgKiBGT0xMX1BJTiBhbmQgRk9MTF9HRVQgYXJl IG11dHVhbGx5IGV4Y2x1c2l2ZS4gVHJhZGl0aW9uYWwgYmVoYXZpb3IKKwkgKiBpcyB0byBzZXQg Rk9MTF9HRVQgaWYgdGhlIGNhbGxlciB3YW50cyBwYWdlc1tdIGZpbGxlZCBpbiAoYnV0IGhhcwor CSAqIGNhcmVsZXNzbHkgZmFpbGVkIHRvIHNwZWNpZnkgRk9MTF9HRVQpLCBzbyBrZWVwIGRvaW5n IHRoYXQsIGJ1dCBvbmx5CisJICogZm9yIEZPTExfR0VULCBub3QgZm9yIHRoZSBuZXdlciBGT0xM X1BJTi4KKwkgKgorCSAqIEZPTExfUElOIGFsd2F5cyBleHBlY3RzIHBhZ2VzIHRvIGJlIG5vbi1u dWxsLCBidXQgbm8gbmVlZCB0byBhc3NlcnQKKwkgKiB0aGF0IGhlcmUsIGFzIGFueSBmYWlsdXJl cyB3aWxsIGJlIG9idmlvdXMgZW5vdWdoLgorCSAqLworCWlmIChwYWdlcyAmJiAhKGZsYWdzICYg Rk9MTF9QSU4pKQogCQlmbGFncyB8PSBGT0xMX0dFVDsKIAogCXBhZ2VzX2RvbmUgPSAwOwpAQCAt MTYwNiwxMSArMTYxOSwxOSBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19ndXBfbG9u Z3Rlcm1fbG9ja2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogICogc2hvdWxkIHVzZSBnZXRf dXNlcl9wYWdlcyBiZWNhdXNlIGl0IGNhbm5vdCBwYXNzCiAgKiBGQVVMVF9GTEFHX0FMTE9XX1JF VFJZIHRvIGhhbmRsZV9tbV9mYXVsdC4KICAqLworI2lmZGVmIENPTkZJR19NTVUKIGxvbmcgZ2V0 X3VzZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKIAkJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywK IAkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJc3RydWN0 IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCiB7CisJLyoKKwkgKiBGT0xMX1BJ TiBtdXN0IG9ubHkgYmUgc2V0IGludGVybmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQ SXMsCisJICogbmV2ZXIgZGlyZWN0bHkgYnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0IHdp dGggYW4gYXNzZXJ0aW9uOgorCSAqLworCWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9M TF9QSU4pKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCS8qCiAJICogUGFydHMgb2YgRk9MTF9MT05H VEVSTSBiZWhhdmlvciBhcmUgaW5jb21wYXRpYmxlIHdpdGgKIAkgKiBGQVVMVF9GTEFHX0FMTE9X X1JFVFJZIGJlY2F1c2Ugb2YgdGhlIEZTIERBWCBjaGVjayByZXF1aXJlbWVudCBvbgpAQCAtMTYz Niw2ICsxNjU3LDE2IEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIH0KIEVYUE9SVF9TWU1CT0woZ2V0X3Vz ZXJfcGFnZXNfcmVtb3RlKTsKIAorI2Vsc2UgLyogQ09ORklHX01NVSAqLworbG9uZyBnZXRfdXNl cl9wYWdlc19yZW1vdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAorCQkJICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywK KwkJCSAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCQkg ICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tlZCkKK3sKKwlyZXR1cm4g MDsKK30KKyNlbmRpZiAvKiAhQ09ORklHX01NVSAqLworCiAvKgogICogVGhpcyBpcyB0aGUgc2Ft ZSBhcyBnZXRfdXNlcl9wYWdlc19yZW1vdGUoKSwganVzdCB3aXRoIGEKICAqIGxlc3MtZmxleGli bGUgY2FsbGluZyBjb252ZW50aW9uIHdoZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSB0YXNrCkBAIC0x NjQ3LDYgKzE2NzgsMTMgQEAgbG9uZyBnZXRfdXNlcl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0 LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAogCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1 Y3QgcGFnZSAqKnBhZ2VzLAogCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzKQogeworCS8q CisJICogRk9MTF9QSU4gbXVzdCBvbmx5IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRoZSBwaW5fdXNl cl9wYWdlcyooKSBBUElzLAorCSAqIG5ldmVyIGRpcmVjdGx5IGJ5IHRoZSBjYWxsZXIsIHNvIGVu Zm9yY2UgdGhhdCB3aXRoIGFuIGFzc2VydGlvbjoKKwkgKi8KKwlpZiAoV0FSTl9PTl9PTkNFKGd1 cF9mbGFncyAmIEZPTExfUElOKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlyZXR1cm4gX19ndXBf bG9uZ3Rlcm1fbG9ja2VkKGN1cnJlbnQsIGN1cnJlbnQtPm1tLCBzdGFydCwgbnJfcGFnZXMsCiAJ CQkJICAgICBwYWdlcywgdm1hcywgZ3VwX2ZsYWdzIHwgRk9MTF9UT1VDSCk7CiB9CkBAIC0yMzg5 LDMwICsyNDI3LDE1IEBAIHN0YXRpYyBpbnQgX19ndXBfbG9uZ3Rlcm1fdW5sb2NrZWQodW5zaWdu ZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAogCXJldHVybiByZXQ7CiB9CiAKLS8qKgotICog Z2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5Ci0gKiBAc3Rh cnQ6CXN0YXJ0aW5nIHVzZXIgYWRkcmVzcwotICogQG5yX3BhZ2VzOgludW1iZXIgb2YgcGFnZXMg ZnJvbSBzdGFydCB0byBwaW4KLSAqIEBndXBfZmxhZ3M6CWZsYWdzIG1vZGlmeWluZyBwaW4gYmVo YXZpb3VyCi0gKiBAcGFnZXM6CWFycmF5IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMgdG8gdGhlIHBh Z2VzIHBpbm5lZC4KLSAqCQlTaG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9uZy4KLSAqCi0g KiBBdHRlbXB0IHRvIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBtbS0+ bW1hcF9zZW0uCi0gKiBJZiBub3Qgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gdGFr aW5nIHRoZSBsb2NrIGFuZAotICogY2FsbGluZyBnZXRfdXNlcl9wYWdlcygpLgotICoKLSAqIFJl dHVybnMgbnVtYmVyIG9mIHBhZ2VzIHBpbm5lZC4gVGhpcyBtYXkgYmUgZmV3ZXIgdGhhbiB0aGUg bnVtYmVyCi0gKiByZXF1ZXN0ZWQuIElmIG5yX3BhZ2VzIGlzIDAgb3IgbmVnYXRpdmUsIHJldHVy bnMgMC4gSWYgbm8gcGFnZXMKLSAqIHdlcmUgcGlubmVkLCByZXR1cm5zIC1lcnJuby4KLSAqLwot aW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2Vz LAotCQkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcykKK3N0YXRp YyBpbnQgaW50ZXJuYWxfZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBp bnQgbnJfcGFnZXMsCisJCQkJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsCisJCQkJCXN0cnVjdCBw YWdlICoqcGFnZXMpCiB7CiAJdW5zaWduZWQgbG9uZyBhZGRyLCBsZW4sIGVuZDsKIAlpbnQgbnIg PSAwLCByZXQgPSAwOwogCiAJaWYgKFdBUk5fT05fT05DRShndXBfZmxhZ3MgJiB+KEZPTExfV1JJ VEUgfCBGT0xMX0xPTkdURVJNIHwKLQkJCQkgICAgICAgRk9MTF9GT1JDRSkpKQorCQkJCSAgICAg ICBGT0xMX0ZPUkNFIHwgRk9MTF9QSU4pKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlzdGFydCA9 IHVudGFnZ2VkX2FkZHIoc3RhcnQpICYgUEFHRV9NQVNLOwpAQCAtMjQ1Miw0ICsyNDc1LDEwMyBA QCBpbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFn ZXMsCiAKIAlyZXR1cm4gcmV0OwogfQorCisvKioKKyAqIGdldF91c2VyX3BhZ2VzX2Zhc3QoKSAt IHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeQorICogQHN0YXJ0OglzdGFydGluZyB1c2VyIGFkZHJl c3MKKyAqIEBucl9wYWdlczoJbnVtYmVyIG9mIHBhZ2VzIGZyb20gc3RhcnQgdG8gcGluCisgKiBA Z3VwX2ZsYWdzOglmbGFncyBtb2RpZnlpbmcgcGluIGJlaGF2aW91cgorICogQHBhZ2VzOglhcnJh eSB0aGF0IHJlY2VpdmVzIHBvaW50ZXJzIHRvIHRoZSBwYWdlcyBwaW5uZWQuCisgKgkJU2hvdWxk IGJlIGF0IGxlYXN0IG5yX3BhZ2VzIGxvbmcuCisgKgorICogQXR0ZW1wdCB0byBwaW4gdXNlciBw YWdlcyBpbiBtZW1vcnkgd2l0aG91dCB0YWtpbmcgbW0tPm1tYXBfc2VtLgorICogSWYgbm90IHN1 Y2Nlc3NmdWwsIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRha2luZyB0aGUgbG9jayBhbmQKKyAqIGNh bGxpbmcgZ2V0X3VzZXJfcGFnZXMoKS4KKyAqCisgKiBSZXR1cm5zIG51bWJlciBvZiBwYWdlcyBw aW5uZWQuIFRoaXMgbWF5IGJlIGZld2VyIHRoYW4gdGhlIG51bWJlciByZXF1ZXN0ZWQuCisgKiBJ ZiBucl9wYWdlcyBpcyAwIG9yIG5lZ2F0aXZlLCByZXR1cm5zIDAuIElmIG5vIHBhZ2VzIHdlcmUg cGlubmVkLCByZXR1cm5zCisgKiAtZXJybm8uCisgKi8KK2ludCBnZXRfdXNlcl9wYWdlc19mYXN0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCXVuc2lnbmVkIGludCBndXBf ZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMpCit7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9u bHkgYmUgc2V0IGludGVybmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICog bmV2ZXIgZGlyZWN0bHkgYnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0OgorCSAqLworCWlm IChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXJldHVybiBpbnRlcm5hbF9nZXRfdXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBucl9wYWdlcywg Z3VwX2ZsYWdzLCBwYWdlcyk7Cit9CiBFWFBPUlRfU1lNQk9MX0dQTChnZXRfdXNlcl9wYWdlc19m YXN0KTsKKworLyoqCisgKiBwaW5fdXNlcl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBwYWdlcyBp biBtZW1vcnkgd2l0aG91dCB0YWtpbmcgbG9ja3MKKyAqCisgKiBGb3Igbm93LCB0aGlzIGlzIGEg cGxhY2Vob2xkZXIgZnVuY3Rpb24sIHVudGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKKyAqIGNv bnZlcnRlZCB0byB1c2UgdGhlIGNvcnJlY3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJf cGFnZXMqKCkgQVBJLiBTbywKKyAqIHRoaXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2Vz X2Zhc3QoKS4KKyAqCisgKiBUaGlzIGlzIGludGVuZGVkIGZvciBDYXNlIDEgKERJTykgaW4gRG9j dW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3QuIEl0CisgKiBpcyBOT1QgaW50ZW5kZWQg Zm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBpbnMpLgorICovCitpbnQgcGluX3VzZXJfcGFn ZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCisJCQl1bnNpZ25lZCBp bnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQoreworCS8qCisJICogVGhpcyBpcyBh IHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgor CSAqIFVudGlsIHRoZW4sIGp1c3QgYmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3Vz ZXJfcGFnZXMqKCkKKwkgKiByb3V0aW5lLgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlc19m YXN0KHN0YXJ0LCBucl9wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7Cit9CitFWFBPUlRfU1lNQk9M X0dQTChwaW5fdXNlcl9wYWdlc19mYXN0KTsKKworLyoqCisgKiBwaW5fdXNlcl9wYWdlc19yZW1v dGUoKSAtIHBpbiBwYWdlcyBvZiBhIHJlbW90ZSBwcm9jZXNzICh0YXNrICE9IGN1cnJlbnQpCisg KgorICogRm9yIG5vdywgdGhpcyBpcyBhIHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJp b3VzIGNhbGwgc2l0ZXMgYXJlCisgKiBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91 c2VyX3BhZ2VzKigpIG9yIHBpbl91c2VyX3BhZ2VzKigpIEFQSS4gU28sCisgKiB0aGlzIGlzIGlk ZW50aWNhbCB0byBnZXRfdXNlcl9wYWdlc19yZW1vdGUoKS4KKyAqCisgKiBUaGlzIGlzIGludGVu ZGVkIGZvciBDYXNlIDEgKERJTykgaW4gRG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5y c3QuIEl0CisgKiBpcyBOT1QgaW50ZW5kZWQgZm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBp bnMpLgorICovCitsb25nIHBpbl91c2VyX3BhZ2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJCQkgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1 bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkJICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3Ry dWN0IHBhZ2UgKipwYWdlcywKKwkJCSAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGlu dCAqbG9ja2VkKQoreworCS8qCisJICogVGhpcyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUg cGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgorCSAqIFVudGlsIHRoZW4sIGp1c3QgYmVo YXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkKKwkgKiByb3V0aW5l LgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlc19yZW1vdGUodHNrLCBtbSwgc3RhcnQsIG5y X3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzLAorCQkJCSAgICAgdm1hcywgbG9ja2VkKTsKK30KK0VY UE9SVF9TWU1CT0wocGluX3VzZXJfcGFnZXNfcmVtb3RlKTsKKworLyoqCisgKiBwaW5fdXNlcl9w YWdlcygpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5IGZvciB1c2UgYnkgb3RoZXIgZGV2aWNl cworICoKKyAqIEZvciBub3csIHRoaXMgaXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiwgdW50aWwg dmFyaW91cyBjYWxsIHNpdGVzIGFyZQorICogY29udmVydGVkIHRvIHVzZSB0aGUgY29ycmVjdCBn ZXRfdXNlcl9wYWdlcyooKSBvciBwaW5fdXNlcl9wYWdlcyooKSBBUEkuIFNvLAorICogdGhpcyBp cyBpZGVudGljYWwgdG8gZ2V0X3VzZXJfcGFnZXMoKS4KKyAqCisgKiBUaGlzIGlzIGludGVuZGVk IGZvciBDYXNlIDEgKERJTykgaW4gRG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3Qu IEl0CisgKiBpcyBOT1QgaW50ZW5kZWQgZm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBpbnMp LgorICovCitsb25nIHBpbl91c2VyX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgbnJfcGFnZXMsCisJCSAgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFn ZSAqKnBhZ2VzLAorCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcykKK3sKKwkvKgor CSAqIFRoaXMgaXMgYSBwbGFjZWhvbGRlciwgdW50aWwgdGhlIHBpbiBmdW5jdGlvbmFsaXR5IGlz IGFjdGl2YXRlZC4KKwkgKiBVbnRpbCB0aGVuLCBqdXN0IGJlaGF2ZSBsaWtlIHRoZSBjb3JyZXNw b25kaW5nIGdldF91c2VyX3BhZ2VzKigpCisJICogcm91dGluZS4KKwkgKi8KKwlyZXR1cm4gZ2V0 X3VzZXJfcGFnZXMoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzLCB2bWFzKTsKK30K K0VYUE9SVF9TWU1CT0wocGluX3VzZXJfcGFnZXMpOwotLSAKMi4yNC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK