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 03CD7C32765 for ; Mon, 9 Dec 2019 22:54:41 +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 D9A57206D5 for ; Mon, 9 Dec 2019 22:54:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D9A57206D5 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 3E1166E5BB; Mon, 9 Dec 2019 22:54:27 +0000 (UTC) Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA6966E5C0 for ; Mon, 9 Dec 2019 22:54:11 +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 ; Mon, 09 Dec 2019 14:54:05 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 09 Dec 2019 14:54:11 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 09 Dec 2019 14:54:11 -0800 Received: from HQMAIL107.nvidia.com (172.20.187.13) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 9 Dec 2019 22:54:10 +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; Mon, 9 Dec 2019 22:54:10 +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:54:10 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v8 24/26] mm/gup: track FOLL_PIN pages Date: Mon, 9 Dec 2019 14:53:42 -0800 Message-ID: <20191209225344.99740-25-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=1575932045; bh=xw2riX9toxr+y4PZuGyWwXyWjmV1H2jFqabRtOMnAuE=; 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=gPAodyMGAkREcu16BEXHRFjwOpCYTzjre7lmB9hd1klidPzN05l9hc1+2s6o1W+RO y8H7bQNcMa170TTHoDM+FM61vMBeeorVlxrBX9kinI2pm37s6mvdb2GEABOS5jlHE0 pV+uvleSyFR7cyC/TOrGyG+AQ0QGTP/EsOdfSmHyV6sv9jjsuZs6xfHk7BiYsE5Ks3 AflzjBfOMfhwxBR5hDHtXE9yBEZsOLQ2HbZcSykJNsDMYfEGM/J4Fm2S/co6M3SoOs vcPYx9nDrBuF9FZPXi08viuC1kG3Ewbyx2hxldEDtK0/8SkQgig+S7pWf8FK3gzyJx trWpIqhrldD/A== 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 , 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" QWRkIHRyYWNraW5nIG9mIHBhZ2VzIHRoYXQgd2VyZSBwaW5uZWQgdmlhIEZPTExfUElOLgoKQXMg bWVudGlvbmVkIGluIHRoZSBGT0xMX1BJTiBkb2N1bWVudGF0aW9uLCBjYWxsZXJzIHdobyBlZmZl Y3RpdmVseSBzZXQKRk9MTF9QSU4gYXJlIHJlcXVpcmVkIHRvIHVsdGltYXRlbHkgZnJlZSBzdWNo IHBhZ2VzIHZpYSB1bnBpbl91c2VyX3BhZ2UoKS4KVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIEZP TExfR0VULCBhbmQgbWF5IGJlIHRob3VnaHQgb2YgYXMgIkZPTExfR0VUCmZvciBESU8gYW5kL29y IFJETUEgdXNlIi4KClBhZ2VzIHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCB2aWEgRk9MTF9QSU4gYXJl IGlkZW50aWZpYWJsZSB2aWEgYQpuZXcgZnVuY3Rpb24gY2FsbDoKCiAgIGJvb2wgcGFnZV9kbWFf cGlubmVkKHN0cnVjdCBwYWdlICpwYWdlKTsKCldoYXQgdG8gZG8gaW4gcmVzcG9uc2UgdG8gZW5j b3VudGVyaW5nIHN1Y2ggYSBwYWdlLCBpcyBsZWZ0IHRvIGxhdGVyCnBhdGNoc2V0cy4gVGhlcmUg aXMgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGluIFsxXSwgWzJdLCBhbmQgWzNdLgoKVGhpcyBhbHNv IGNoYW5nZXMgYSBCVUdfT04oKSwgdG8gYSBXQVJOX09OKCksIGluIGZvbGxvd19wYWdlX21hc2so KS4KClsxXSBTb21lIHNsb3cgcHJvZ3Jlc3Mgb24gZ2V0X3VzZXJfcGFnZXMoKSAoQXByIDIsIDIw MTkpOgogICAgaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzc4NDU3NC8KWzJdIERNQSBhbmQgZ2V0 X3VzZXJfcGFnZXMoKSAoTFBDOiBEZWMgMTIsIDIwMTgpOgogICAgaHR0cHM6Ly9sd24ubmV0L0Fy dGljbGVzLzc3NDQxMS8KWzNdIFRoZSB0cm91YmxlIHdpdGggZ2V0X3VzZXJfcGFnZXMoKSAoQXBy IDMwLCAyMDE4KToKICAgIGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy83NTMwMjcvCgpTdWdnZXN0 ZWQtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+ClN1Z2dlc3RlZC1ieTogSsOpcsO0bWUgR2xp c3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IEpvaG4gSHViYmFyZCA8amh1 YmJhcmRAbnZpZGlhLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3Bh Z2VzLnJzdCB8ICAgMiArLQogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNzMgKysrKy0KIGluY2x1ZGUvbGludXgvbW16b25lLmggICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGluY2x1ZGUvbGludXgvcGFnZV9yZWYuaCAgICAgICAgICAgICAgICAgIHwgIDEw ICsKIG1tL2d1cC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzM4ICsrKysr KysrKysrKysrKysrLS0tLS0KIG1tL2h1Z2VfbWVtb3J5LmMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIzICstCiBtbS9odWdldGxiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNSArLQogbW0vdm1zdGF0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg KwogOCBmaWxlcyBjaGFuZ2VkLCAzNjIgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IGIv RG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKaW5kZXggYmJhOTY0Mjhh ZGU3Li42ZDkzZWYyMDM1NjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vY29yZS1hcGkvcGlu X3VzZXJfcGFnZXMucnN0CisrKyBiL0RvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFn ZXMucnN0CkBAIC01Myw3ICs1Myw3IEBAIFdoaWNoIGZsYWdzIGFyZSBzZXQgYnkgZWFjaCB3cmFw cGVyCiBGb3IgdGhlc2UgcGluX3VzZXJfcGFnZXMqKCkgZnVuY3Rpb25zLCBGT0xMX1BJTiBpcyBP UidkIGluIHdpdGggd2hhdGV2ZXIgZ3VwCiBmbGFncyB0aGUgY2FsbGVyIHByb3ZpZGVzLiBUaGUg Y2FsbGVyIGlzIHJlcXVpcmVkIHRvIHBhc3MgaW4gYSBub24tbnVsbCBzdHJ1Y3QKIHBhZ2VzKiBh cnJheSwgYW5kIHRoZSBmdW5jdGlvbiB0aGVuIHBpbiBwYWdlcyBieSBpbmNyZW1lbnRpbmcgZWFj aCBieSBhIHNwZWNpYWwKLXZhbHVlLiBGb3Igbm93LCB0aGF0IHZhbHVlIGlzICsxLCBqdXN0IGxp a2UgZ2V0X3VzZXJfcGFnZXMqKCkuOjoKK3ZhbHVlOiBHVVBfUElOX0NPVU5USU5HX0JJQVMuOjoK IAogIEZ1bmN0aW9uCiAgLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBi L2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA2YTFhMzU3ZTdkODYuLjk2NjY5ODlkMmI5ZSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAt MTAxNiw2ICsxMDE2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGdldF9wYWdlKHN0cnVjdCBwYWdl ICpwYWdlKQogCXBhZ2VfcmVmX2luYyhwYWdlKTsKIH0KIAordm9pZCBncmFiX3BhZ2Uoc3RydWN0 IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBmbGFncyk7CisKIHN0YXRpYyBpbmxpbmUgX19tdXN0 X2NoZWNrIGJvb2wgdHJ5X2dldF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQogewogCXBhZ2UgPSBj b21wb3VuZF9oZWFkKHBhZ2UpOwpAQCAtMTA0NCwyOSArMTA0Niw3MCBAQCBzdGF0aWMgaW5saW5l IHZvaWQgcHV0X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCiAJCV9fcHV0X3BhZ2UocGFnZSk7CiB9 CiAKLS8qKgotICogdW5waW5fdXNlcl9wYWdlKCkgLSByZWxlYXNlIGEgZ3VwLXBpbm5lZCBwYWdl Ci0gKiBAcGFnZTogICAgICAgICAgICBwb2ludGVyIHRvIHBhZ2UgdG8gYmUgcmVsZWFzZWQKKy8q CisgKiBHVVBfUElOX0NPVU5USU5HX0JJQVMsIGFuZCB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbnMg dGhhdCB1c2UgaXQsIG92ZXJsb2FkCisgKiB0aGUgcGFnZSdzIHJlZmNvdW50IHNvIHRoYXQgdHdv IHNlcGFyYXRlIGl0ZW1zIGFyZSB0cmFja2VkOiB0aGUgb3JpZ2luYWwgcGFnZQorICogcmVmZXJl bmNlIGNvdW50LCBhbmQgYWxzbyBhIG5ldyBjb3VudCBvZiBob3cgbWFueSBwaW5fdXNlcl9wYWdl cygpIGNhbGxzIHdlcmUKKyAqIG1hZGUgYWdhaW5zdCB0aGUgcGFnZS4gKCJndXAtcGlubmVkIiBp cyBhbm90aGVyIHRlcm0gZm9yIHRoZSBsYXR0ZXIpLgorICoKKyAqIFdpdGggdGhpcyBzY2hlbWUs IHBpbl91c2VyX3BhZ2VzKCkgYmVjb21lcyBzcGVjaWFsOiBzdWNoIHBhZ2VzIGFyZSBtYXJrZWQg YXMKKyAqIGRpc3RpbmN0IGZyb20gbm9ybWFsIHBhZ2VzLiBBcyBzdWNoLCB0aGUgdW5waW5fdXNl cl9wYWdlKCkgY2FsbCAoYW5kIGl0cworICogdmFyaWFudHMpIG11c3QgYmUgdXNlZCBpbiBvcmRl ciB0byByZWxlYXNlIGd1cC1waW5uZWQgcGFnZXMuCisgKgorICogQ2hvaWNlIG9mIHZhbHVlOgog ICoKLSAqIFBhZ2VzIHRoYXQgd2VyZSBwaW5uZWQgdmlhIHBpbl91c2VyX3BhZ2VzKigpIG11c3Qg YmUgcmVsZWFzZWQgdmlhIGVpdGhlcgotICogdW5waW5fdXNlcl9wYWdlKCksIG9yIG9uZSBvZiB0 aGUgdW5waW5fdXNlcl9wYWdlcyooKSByb3V0aW5lcy4gVGhpcyBpcyBzbwotICogdGhhdCBldmVu dHVhbGx5IHN1Y2ggcGFnZXMgY2FuIGJlIHNlcGFyYXRlbHkgdHJhY2tlZCBhbmQgdW5pcXVlbHkg aGFuZGxlZC4gSW4KLSAqIHBhcnRpY3VsYXIsIGludGVyYWN0aW9ucyB3aXRoIFJETUEgYW5kIGZp bGVzeXN0ZW1zIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KKyAqIEJ5IG1ha2luZyBHVVBfUElOX0NP VU5USU5HX0JJQVMgYSBwb3dlciBvZiB0d28sIGRlYnVnZ2luZyBvZiBwYWdlIHJlZmVyZW5jZQor ICogY291bnRzIHdpdGggcmVzcGVjdCB0byBwaW5fdXNlcl9wYWdlcygpIGFuZCB1bnBpbl91c2Vy X3BhZ2UoKSBiZWNvbWVzCisgKiBzaW1wbGVyLCBkdWUgdG8gdGhlIGZhY3QgdGhhdCBhZGRpbmcg YW4gZXZlbiBwb3dlciBvZiB0d28gdG8gdGhlIHBhZ2UKKyAqIHJlZmNvdW50IGhhcyB0aGUgZWZm ZWN0IG9mIHVzaW5nIG9ubHkgdGhlIHVwcGVyIE4gYml0cywgZm9yIHRoZSBjb2RlIHRoYXQKKyAq IGNvdW50cyB1cCB1c2luZyB0aGUgYmlhcyB2YWx1ZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBsb3dl ciBiaXRzIGFyZSBsZWZ0IGZvcgorICogdGhlIGV4Y2x1c2l2ZSB1c2Ugb2YgdGhlIG9yaWdpbmFs IGNvZGUgdGhhdCBpbmNyZW1lbnRzIGFuZCBkZWNyZW1lbnRzIGJ5IG9uZQorICogKG9yIGF0IGxl YXN0LCBieSBtdWNoIHNtYWxsZXIgdmFsdWVzIHRoYW4gdGhlIGJpYXMgdmFsdWUpLgogICoKLSAq IHVucGluX3VzZXJfcGFnZSgpIGFuZCBwdXRfcGFnZSgpIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxl LCBkZXNwaXRlIHRoaXMgZWFybHkKLSAqIGltcGxlbWVudGF0aW9uIHRoYXQgbWFrZXMgdGhlbSBs b29rIHRoZSBzYW1lLiB1bnBpbl91c2VyX3BhZ2UoKSBjYWxscyBtdXN0Ci0gKiBiZSBwZXJmZWN0 bHkgbWF0Y2hlZCB1cCB3aXRoIHBpbiooKSBjYWxscy4KKyAqIE9mIGNvdXJzZSwgb25jZSB0aGUg bG93ZXIgYml0cyBvdmVyZmxvdyBpbnRvIHRoZSB1cHBlciBiaXRzIChhbmQgdGhpcyBpcworICog T0ssIGJlY2F1c2Ugc3VidHJhY3Rpb24gcmVjb3ZlcnMgdGhlIG9yaWdpbmFsIHZhbHVlcyksIHRo ZW4gdmlzdWFsIGluc3BlY3Rpb24KKyAqIG5vIGxvbmdlciBzdWZmaWNlcyB0byBkaXJlY3RseSB2 aWV3IHRoZSBzZXBhcmF0ZSBjb3VudHMuIEhvd2V2ZXIsIGZvciBub3JtYWwKKyAqIGFwcGxpY2F0 aW9ucyB0aGF0IGRvbid0IGhhdmUgaHVnZSBwYWdlIHJlZmVyZW5jZSBjb3VudHMsIHRoaXMgd29u J3QgYmUgYW4KKyAqIGlzc3VlLgorICoKKyAqIExvY2tpbmc6IHRoZSBsb2NrbGVzcyBhbGdvcml0 aG0gZGVzY3JpYmVkIGluIHBhZ2VfY2FjaGVfZ2V0X3NwZWN1bGF0aXZlKCkKKyAqIGFuZCBwYWdl X2NhY2hlX2d1cF9waW5fc3BlY3VsYXRpdmUoKSBwcm92aWRlcyBzYWZlIG9wZXJhdGlvbiBmb3IK KyAqIGdldF91c2VyX3BhZ2VzIGFuZCBwYWdlX21rY2xlYW4gYW5kIG90aGVyIGNhbGxzIHRoYXQg cmFjZSB0byBzZXQgdXAgcGFnZQorICogdGFibGUgZW50cmllcy4KICAqLwotc3RhdGljIGlubGlu ZSB2b2lkIHVucGluX3VzZXJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKLXsKLQlwdXRfcGFnZShw YWdlKTsKLX0KKyNkZWZpbmUgR1VQX1BJTl9DT1VOVElOR19CSUFTICgxVUwgPDwgMTApCiAKK3Zv aWQgdW5waW5fdXNlcl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKTsKIHZvaWQgdW5waW5fdXNlcl9w YWdlc19kaXJ0eV9sb2NrKHN0cnVjdCBwYWdlICoqcGFnZXMsIHVuc2lnbmVkIGxvbmcgbnBhZ2Vz LAogCQkJCSBib29sIG1ha2VfZGlydHkpOwotCiB2b2lkIHVucGluX3VzZXJfcGFnZXMoc3RydWN0 IHBhZ2UgKipwYWdlcywgdW5zaWduZWQgbG9uZyBucGFnZXMpOwogCisvKioKKyAqIHBhZ2VfZG1h X3Bpbm5lZCgpIC0gcmVwb3J0IGlmIGEgcGFnZSBpcyBwaW5uZWQgZm9yIERNQS4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIHBhZ2UgaGFzIGJlZW4gcGlubmVkIHZpYSBhIGNhbGwg dG8KKyAqIHBpbl91c2VyX3BhZ2VzKigpLgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgcGFy dGlhbGx5IGZ1enp5OiBmYWxzZSBpcyBub3QgZnV6enksIGJlY2F1c2UgaXQgbWVhbnMKKyAqICJk ZWZpbml0ZWx5IG5vdCBwaW5uZWQgZm9yIERNQSIsIGJ1dCB0cnVlIG1lYW5zICJwcm9iYWJseSBw aW5uZWQgZm9yIERNQSwgYnV0CisgKiBwb3NzaWJseSBhIGZhbHNlIHBvc2l0aXZlIGR1ZSB0byBo YXZpbmcgYXQgbGVhc3QgR1VQX1BJTl9DT1VOVElOR19CSUFTIHdvcnRoCisgKiBvZiBub3JtYWwg cGFnZSByZWZlcmVuY2VzIi4KKyAqCisgKiBGYWxzZSBwb3NpdGl2ZXMgYXJlIE9LLCBiZWNhdXNl OiBhKSBpdCdzIHVubGlrZWx5IGZvciBhIHBhZ2UgdG8gZ2V0IHRoYXQgbWFueQorICogcmVmY291 bnRzLCBhbmQgYikgYWxsIHRoZSBjYWxsZXJzIG9mIHRoaXMgcm91dGluZSBhcmUgZXhwZWN0ZWQg dG8gYmUgYWJsZSB0bworICogZGVhbCBncmFjZWZ1bGx5IHdpdGggYSBmYWxzZSBwb3NpdGl2ZS4K KyAqCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL3Zt L3Bpbl91c2VyX3BhZ2VzLnJzdC4KKyAqCisgKiBAcGFnZToJcG9pbnRlciB0byBwYWdlIHRvIGJl IHF1ZXJpZWQuCisgKiBAUmV0dXJuOglUcnVlLCBpZiBpdCBpcyBsaWtlbHkgdGhhdCB0aGUgcGFn ZSBoYXMgYmVlbiAiZG1hLXBpbm5lZCIuCisgKgkJRmFsc2UsIGlmIHRoZSBwYWdlIGlzIGRlZmlu aXRlbHkgbm90IGRtYS1waW5uZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCBwYWdlX2RtYV9w aW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJcmV0dXJuIChwYWdlX3JlZl9jb3VudChjb21w b3VuZF9oZWFkKHBhZ2UpKSkgPj0gR1VQX1BJTl9DT1VOVElOR19CSUFTOworfQorCiAjaWYgZGVm aW5lZChDT05GSUdfU1BBUlNFTUVNKSAmJiAhZGVmaW5lZChDT05GSUdfU1BBUlNFTUVNX1ZNRU1N QVApCiAjZGVmaW5lIFNFQ1RJT05fSU5fUEFHRV9GTEFHUwogI2VuZGlmCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCA4OWQ4 ZmYwNmM5Y2UuLmE3NDE4ZjdhNDRkYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUu aAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0yNDQsNiArMjQ0LDggQEAgZW51bSBu b2RlX3N0YXRfaXRlbSB7CiAJTlJfRElSVElFRCwJCS8qIHBhZ2UgZGlydHlpbmdzIHNpbmNlIGJv b3R1cCAqLwogCU5SX1dSSVRURU4sCQkvKiBwYWdlIHdyaXRpbmdzIHNpbmNlIGJvb3R1cCAqLwog CU5SX0tFUk5FTF9NSVNDX1JFQ0xBSU1BQkxFLAkvKiByZWNsYWltYWJsZSBub24tc2xhYiBrZXJu ZWwgcGFnZXMgKi8KKwlOUl9GT0xMX1BJTl9SRVFVRVNURUQsCS8qIHZpYTogcGluX3VzZXJfcGFn ZSgpLCBndXAgZmxhZzogRk9MTF9QSU4gKi8KKwlOUl9GT0xMX1BJTl9SRVRVUk5FRCwJLyogcGFn ZXMgcmV0dXJuZWQgdmlhIHVucGluX3VzZXJfcGFnZSgpICovCiAJTlJfVk1fTk9ERV9TVEFUX0lU RU1TCiB9OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2VfcmVmLmggYi9pbmNsdWRl L2xpbnV4L3BhZ2VfcmVmLmgKaW5kZXggMTRkMTRiZWIxZjdmLi5iOWNiZTU1M2QxZTcgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvcGFnZV9yZWYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BhZ2Vf cmVmLmgKQEAgLTEwMiw2ICsxMDIsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHBhZ2VfcmVmX3N1 YihzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG5yKQogCQlfX3BhZ2VfcmVmX21vZChwYWdlLCAtbnIp OwogfQogCitzdGF0aWMgaW5saW5lIGludCBwYWdlX3JlZl9zdWJfcmV0dXJuKHN0cnVjdCBwYWdl ICpwYWdlLCBpbnQgbnIpCit7CisJaW50IHJldCA9IGF0b21pY19zdWJfcmV0dXJuKG5yLCAmcGFn ZS0+X3JlZmNvdW50KTsKKworCWlmIChwYWdlX3JlZl90cmFjZXBvaW50X2FjdGl2ZShfX3RyYWNl cG9pbnRfcGFnZV9yZWZfbW9kKSkKKwkJX19wYWdlX3JlZl9tb2QocGFnZSwgLW5yKTsKKworCXJl dHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBwYWdlX3JlZl9pbmMoc3RydWN0IHBh Z2UgKnBhZ2UpCiB7CiAJYXRvbWljX2luYygmcGFnZS0+X3JlZmNvdW50KTsKZGlmZiAtLWdpdCBh L21tL2d1cC5jIGIvbW0vZ3VwLmMKaW5kZXggNjg3ZDQ4NTA2ZjA0Li40NWZlOTIzZTI4ZTIgMTAw NjQ0Ci0tLSBhL21tL2d1cC5jCisrKyBiL21tL2d1cC5jCkBAIC0zNiw2ICszNiwyMCBAQCBzdGF0 aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19ndXBfbG9uZ3Rlcm1fbG9ja2VkKHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrLAogCQkJCQkJICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJCQkJICBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzLAogCQkJCQkJICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwor CisjaWZkZWYgQ09ORklHX0RFQlVHX1ZNCitzdGF0aWMgaW5saW5lIHZvaWQgX191cGRhdGVfcHJv Y192bXN0YXQoc3RydWN0IHBhZ2UgKnBhZ2UsCisJCQkJCWVudW0gbm9kZV9zdGF0X2l0ZW0gaXRl bSwgaW50IGNvdW50KQoreworCW1vZF9ub2RlX3BhZ2Vfc3RhdGUocGFnZV9wZ2RhdChwYWdlKSwg aXRlbSwgY291bnQpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3VwZGF0ZV9wcm9j X3Ztc3RhdChzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCQkJZW51bSBub2RlX3N0YXRfaXRlbSBpdGVt LCBpbnQgY291bnQpCit7Cit9CisjZW5kaWYKKwogLyoKICAqIFJldHVybiB0aGUgY29tcG91bmQg aGVhZCBwYWdlIHdpdGggcmVmIGFwcHJvcHJpYXRlbHkgaW5jcmVtZW50ZWQsCiAgKiBvciBOVUxM IGlmIHRoYXQgZmFpbGVkLgpAQCAtNTEsNiArNjUsMTM4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IHBhZ2UgKnRyeV9nZXRfY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJlZnMp CiAJcmV0dXJuIGhlYWQ7CiB9CiAKKy8qKgorICogdHJ5X3Bpbl9jb21wb3VuZF9oZWFkKCkgLSBt YXJrIGEgY29tcG91bmQgcGFnZSBhcyBiZWluZyB1c2VkIGJ5CisgKiBwaW5fdXNlcl9wYWdlcyoo KS4KKyAqCisgKiBUaGlzIGlzIHRoZSBGT0xMX1BJTiBjb3VudGVycGFydCB0byB0cnlfZ2V0X2Nv bXBvdW5kX2hlYWQoKS4KKyAqCisgKiBAcGFnZToJcG9pbnRlciB0byBwYWdlIHRvIGJlIG1hcmtl ZAorICogQFJldHVybjoJdGhlIGNvbXBvdW5kIGhlYWQgcGFnZSwgd2l0aCByZWYgYXBwcm9wcmlh dGVseSBpbmNyZW1lbnRlZCwKKyAqIG9yIE5VTEwgdXBvbiBmYWlsdXJlLgorICovCitfX211c3Rf Y2hlY2sgc3RydWN0IHBhZ2UgKnRyeV9waW5fY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFn ZSwgaW50IHJlZnMpCit7CisJc3RydWN0IHBhZ2UgKmhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hl YWQocGFnZSwKKwkJCQkJCSAgR1VQX1BJTl9DT1VOVElOR19CSUFTICogcmVmcyk7CisJaWYgKCFo ZWFkKQorCQlyZXR1cm4gTlVMTDsKKworCV9fdXBkYXRlX3Byb2Nfdm1zdGF0KHBhZ2UsIE5SX0ZP TExfUElOX1JFUVVFU1RFRCwgcmVmcyk7CisJcmV0dXJuIGhlYWQ7Cit9CisKKy8qCisgKiB0cnlf Z3JhYl9jb21wb3VuZF9oZWFkKCkgLSBhdHRlbXB0IHRvIGVsZXZhdGUgYSBwYWdlJ3MgcmVmY291 bnQsIGJ5IGEKKyAqIGZsYWdzLWRlcGVuZGVudCBhbW91bnQuCisgKgorICogVGhpcyBoYXMgYSBk ZWZhdWx0IGFzc3VtcHRpb24gb2YgInVzZSBGT0xMX0dFVCBiZWhhdmlvciwgaWYgRk9MTF9QSU4g aXMgbm90CisgKiBzZXQiLgorICoKKyAqICJncmFiIiBuYW1lcyBpbiB0aGlzIGZpbGUgbWVhbiwg Imxvb2sgYXQgZmxhZ3MgdG8gZGVjaWRlIHdpdGggdG8gdXNlIEZPTExfUElOCisgKiBvciBGT0xM X0dFVCBiZWhhdmlvciwgd2hlbiBpbmNyZW1lbnRpbmcgdGhlIHBhZ2UncyByZWZjb3VudC4KKyAq Lworc3RhdGljIHN0cnVjdCBwYWdlICp0cnlfZ3JhYl9jb21wb3VuZF9oZWFkKHN0cnVjdCBwYWdl ICpwYWdlLCBpbnQgcmVmcywKKwkJCQkJICAgdW5zaWduZWQgaW50IGZsYWdzKQoreworCWlmIChm bGFncyAmIEZPTExfUElOKQorCQlyZXR1cm4gdHJ5X3Bpbl9jb21wb3VuZF9oZWFkKHBhZ2UsIHJl ZnMpOworCisJcmV0dXJuIHRyeV9nZXRfY29tcG91bmRfaGVhZChwYWdlLCByZWZzKTsKK30KKwor LyoqCisgKiBncmFiX3BhZ2UoKSAtIGVsZXZhdGUgYSBwYWdlJ3MgcmVmY291bnQgYnkgYSBmbGFn LWRlcGVuZGVudCBhbW91bnQKKyAqCisgKiBUaGlzIG1pZ2h0IG5vdCBkbyBhbnl0aGluZyBhdCBh bGwsIGRlcGVuZGluZyBvbiB0aGUgZmxhZ3MgYXJndW1lbnQuCisgKgorICogImdyYWIiIG5hbWVz IGluIHRoaXMgZmlsZSBtZWFuLCAibG9vayBhdCBmbGFncyB0byBkZWNpZGUgd2l0aCB0byB1c2Ug Rk9MTF9QSU4KKyAqIG9yIEZPTExfR0VUIGJlaGF2aW9yLCB3aGVuIGluY3JlbWVudGluZyB0aGUg cGFnZSdzIHJlZmNvdW50LgorICoKKyAqIEBwYWdlOglwb2ludGVyIHRvIHBhZ2UgdG8gYmUgZ3Jh YmJlZAorICogQGZsYWdzOglndXAgZmxhZ3M6IHRoZXNlIGFyZSB0aGUgRk9MTF8qIGZsYWcgdmFs dWVzLgorICoKKyAqIEVpdGhlciBGT0xMX1BJTiBvciBGT0xMX0dFVCAob3IgbmVpdGhlcikgbWF5 IGJlIHNldCwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lCisgKiB0aW1lLiAoVGhhdCdzIHRydWUg dGhyb3VnaG91dCB0aGUgZ2V0X3VzZXJfcGFnZXMqKCkgYW5kIHBpbl91c2VyX3BhZ2VzKigpCisg KiBBUElzLikgQ2FzZXM6CisgKgorICoJRk9MTF9HRVQ6IHBhZ2UncyByZWZjb3VudCB3aWxsIGJl IGluY3JlbWVudGVkIGJ5IDEuCisgKglGT0xMX1BJTjogcGFnZSdzIHJlZmNvdW50IHdpbGwgYmUg aW5jcmVtZW50ZWQgYnkgR1VQX1BJTl9DT1VOVElOR19CSUFTLgorICovCit2b2lkIGdyYWJfcGFn ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGZsYWdzKQoreworCWlmIChmbGFncyAm IEZPTExfR0VUKQorCQlnZXRfcGFnZShwYWdlKTsKKwllbHNlIGlmIChmbGFncyAmIEZPTExfUElO KSB7CisJCWdldF9wYWdlKHBhZ2UpOworCQlXQVJOX09OX09OQ0UoZmxhZ3MgJiBGT0xMX0dFVCk7 CisJCS8qCisJCSAqIFVzZSBnZXRfcGFnZSgpLCBhYm92ZSwgdG8gZG8gdGhlIHJlZmNvdW50IGVy cm9yCisJCSAqIGNoZWNraW5nLiBUaGVuIGp1c3QgYWRkIGluIHRoZSByZW1haW5pbmcgcmVmZXJl bmNlczoKKwkJICovCisJCXBhZ2VfcmVmX2FkZChwYWdlLCBHVVBfUElOX0NPVU5USU5HX0JJQVMg LSAxKTsKKwkJX191cGRhdGVfcHJvY192bXN0YXQocGFnZSwgTlJfRk9MTF9QSU5fUkVRVUVTVEVE LCAxKTsKKwl9Cit9CisKKyNpZmRlZiBDT05GSUdfREVWX1BBR0VNQVBfT1BTCitzdGF0aWMgYm9v bCBfX3VucGluX2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sK Kwlib29sIGlzX2Rldm1hcCA9IHBhZ2VfaXNfZGV2bWFwX21hbmFnZWQocGFnZSk7CisKKwlpZiAo aXNfZGV2bWFwKSB7CisJCWludCBjb3VudCA9IHBhZ2VfcmVmX3N1Yl9yZXR1cm4ocGFnZSwgR1VQ X1BJTl9DT1VOVElOR19CSUFTKTsKKworCQlfX3VwZGF0ZV9wcm9jX3Ztc3RhdChwYWdlLCBOUl9G T0xMX1BJTl9SRVRVUk5FRCwgMSk7CisJCS8qCisJCSAqIGRldm1hcCBwYWdlIHJlZmNvdW50cyBh cmUgMS1iYXNlZCwgcmF0aGVyIHRoYW4gMC1iYXNlZDogaWYKKwkJICogcmVmY291bnQgaXMgMSwg dGhlbiB0aGUgcGFnZSBpcyBmcmVlIGFuZCB0aGUgcmVmY291bnQgaXMKKwkJICogc3RhYmxlIGJl Y2F1c2Ugbm9ib2R5IGhvbGRzIGEgcmVmZXJlbmNlIG9uIHRoZSBwYWdlLgorCQkgKi8KKwkJaWYg KGNvdW50ID09IDEpCisJCQlmcmVlX2Rldm1hcF9tYW5hZ2VkX3BhZ2UocGFnZSk7CisJCWVsc2Ug aWYgKCFjb3VudCkKKwkJCV9fcHV0X3BhZ2UocGFnZSk7CisJfQorCisJcmV0dXJuIGlzX2Rldm1h cDsKK30KKyNlbHNlCitzdGF0aWMgYm9vbCBfX3VucGluX2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFn ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYgLyogQ09O RklHX0RFVl9QQUdFTUFQX09QUyAqLworCisvKioKKyAqIHVucGluX3VzZXJfcGFnZSgpIC0gcmVs ZWFzZSBhIGRtYS1waW5uZWQgcGFnZQorICogQHBhZ2U6ICAgICAgICAgICAgcG9pbnRlciB0byBw YWdlIHRvIGJlIHJlbGVhc2VkCisgKgorICogUGFnZXMgdGhhdCB3ZXJlIHBpbm5lZCB2aWEgcGlu X3VzZXJfcGFnZXMqKCkgbXVzdCBiZSByZWxlYXNlZCB2aWEgZWl0aGVyCisgKiB1bnBpbl91c2Vy X3BhZ2UoKSwgb3Igb25lIG9mIHRoZSB1bnBpbl91c2VyX3BhZ2VzKigpIHJvdXRpbmVzLiBUaGlz IGlzIHNvCisgKiB0aGF0IHN1Y2ggcGFnZXMgY2FuIGJlIHNlcGFyYXRlbHkgdHJhY2tlZCBhbmQg dW5pcXVlbHkgaGFuZGxlZC4gSW4KKyAqIHBhcnRpY3VsYXIsIGludGVyYWN0aW9ucyB3aXRoIFJE TUEgYW5kIGZpbGVzeXN0ZW1zIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KKyAqLwordm9pZCB1bnBp bl91c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJcGFnZSA9IGNvbXBvdW5kX2hlYWQo cGFnZSk7CisKKwkvKgorCSAqIEZvciBkZXZtYXAgbWFuYWdlZCBwYWdlcyB3ZSBuZWVkIHRvIGNh dGNoIHJlZmNvdW50IHRyYW5zaXRpb24gZnJvbQorCSAqIEdVUF9QSU5fQ09VTlRJTkdfQklBUyB0 byAxLCB3aGVuIHJlZmNvdW50IHJlYWNoIG9uZSBpdCBtZWFucyB0aGUKKwkgKiBwYWdlIGlzIGZy ZWUgYW5kIHdlIG5lZWQgdG8gaW5mb3JtIHRoZSBkZXZpY2UgZHJpdmVyIHRocm91Z2gKKwkgKiBj YWxsYmFjay4gU2VlIGluY2x1ZGUvbGludXgvbWVtcmVtYXAuaCBhbmQgSE1NIGZvciBkZXRhaWxz LgorCSAqLworCWlmIChfX3VucGluX2Rldm1hcF9tYW5hZ2VkX3VzZXJfcGFnZShwYWdlKSkKKwkJ cmV0dXJuOworCisJaWYgKHBhZ2VfcmVmX3N1Yl9hbmRfdGVzdChwYWdlLCBHVVBfUElOX0NPVU5U SU5HX0JJQVMpKQorCQlfX3B1dF9wYWdlKHBhZ2UpOworCisJX191cGRhdGVfcHJvY192bXN0YXQo cGFnZSwgTlJfRk9MTF9QSU5fUkVUVVJORUQsIDEpOworfQorRVhQT1JUX1NZTUJPTCh1bnBpbl91 c2VyX3BhZ2UpOworCiAvKioKICAqIHVucGluX3VzZXJfcGFnZXNfZGlydHlfbG9jaygpIC0gcmVs ZWFzZSBhbmQgb3B0aW9uYWxseSBkaXJ0eSBndXAtcGlubmVkIHBhZ2VzCiAgKiBAcGFnZXM6ICBh cnJheSBvZiBwYWdlcyB0byBiZSBtYXliZSBtYXJrZWQgZGlydHksIGFuZCBkZWZpbml0ZWx5IHJl bGVhc2VkLgpAQCAtMjM3LDEwICszODMsMTEgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpmb2xsb3df cGFnZV9wdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJfQogCiAJcGFnZSA9IHZtX25v cm1hbF9wYWdlKHZtYSwgYWRkcmVzcywgcHRlKTsKLQlpZiAoIXBhZ2UgJiYgcHRlX2Rldm1hcChw dGUpICYmIChmbGFncyAmIEZPTExfR0VUKSkgeworCWlmICghcGFnZSAmJiBwdGVfZGV2bWFwKHB0 ZSkgJiYgKGZsYWdzICYgKEZPTExfR0VUIHwgRk9MTF9QSU4pKSkgewogCQkvKgotCQkgKiBPbmx5 IHJldHVybiBkZXZpY2UgbWFwcGluZyBwYWdlcyBpbiB0aGUgRk9MTF9HRVQgY2FzZSBzaW5jZQot CQkgKiB0aGV5IGFyZSBvbmx5IHZhbGlkIHdoaWxlIGhvbGRpbmcgdGhlIHBnbWFwIHJlZmVyZW5j ZS4KKwkJICogT25seSByZXR1cm4gZGV2aWNlIG1hcHBpbmcgcGFnZXMgaW4gdGhlIEZPTExfR0VU IG9yIEZPTExfUElOCisJCSAqIGNhc2Ugc2luY2UgdGhleSBhcmUgb25seSB2YWxpZCB3aGlsZSBo b2xkaW5nIHRoZSBwZ21hcAorCQkgKiByZWZlcmVuY2UuCiAJCSAqLwogCQkqcGdtYXAgPSBnZXRf ZGV2X3BhZ2VtYXAocHRlX3BmbihwdGUpLCAqcGdtYXApOwogCQlpZiAoKnBnbWFwKQpAQCAtMjc4 LDExICs0MjUsMjMgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFnZV9wdGUoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCWdvdG8gcmV0cnk7CiAJfQogCi0JaWYgKGZsYWdzICYg Rk9MTF9HRVQpIHsKKwlpZiAoZmxhZ3MgJiAoRk9MTF9QSU4gfCBGT0xMX0dFVCkpIHsKKwkJLyoK KwkJICogQWxsb3cgdHJ5X2dldF9wYWdlKCkgdG8gdGFrZSBjYXJlIG9mIGVycm9yIGhhbmRsaW5n LCBmb3IKKwkJICogYm90aCBjYXNlczogRk9MTF9HRVQgb3IgRk9MTF9QSU46CisJCSAqLwogCQlp ZiAodW5saWtlbHkoIXRyeV9nZXRfcGFnZShwYWdlKSkpIHsKIAkJCXBhZ2UgPSBFUlJfUFRSKC1F Tk9NRU0pOwogCQkJZ290byBvdXQ7CiAJCX0KKworCQlpZiAoZmxhZ3MgJiBGT0xMX1BJTikgewor CQkJV0FSTl9PTl9PTkNFKGZsYWdzICYgRk9MTF9HRVQpOworCisJCQkvKiBXZSBnb3QgYSArMSBy ZWZjb3VudCBmcm9tIHRyeV9nZXRfcGFnZSgpLCBhYm92ZS4gKi8KKwkJCXBhZ2VfcmVmX2FkZChw YWdlLCBHVVBfUElOX0NPVU5USU5HX0JJQVMgLSAxKTsKKwkJCV9fdXBkYXRlX3Byb2Nfdm1zdGF0 KHBhZ2UsIE5SX0ZPTExfUElOX1JFUVVFU1RFRCwgMSk7CisJCX0KIAl9CiAJaWYgKGZsYWdzICYg Rk9MTF9UT1VDSCkgewogCQlpZiAoKGZsYWdzICYgRk9MTF9XUklURSkgJiYKQEAgLTU0NCw4ICs3 MDMsOCBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKmZvbGxvd19wYWdlX21hc2soc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsCiAJLyogbWFrZSB0aGlzIGhhbmRsZSBodWdlcGQgKi8KIAlwYWdlID0g Zm9sbG93X2h1Z2VfYWRkcihtbSwgYWRkcmVzcywgZmxhZ3MgJiBGT0xMX1dSSVRFKTsKIAlpZiAo IUlTX0VSUihwYWdlKSkgewotCQlCVUdfT04oZmxhZ3MgJiBGT0xMX0dFVCk7Ci0JCXJldHVybiBw YWdlOworCQlXQVJOX09OX09OQ0UoZmxhZ3MgJiAoRk9MTF9HRVQgfCBGT0xMX1BJTikpOworCQly ZXR1cm4gTlVMTDsKIAl9CiAKIAlwZ2QgPSBwZ2Rfb2Zmc2V0KG1tLCBhZGRyZXNzKTsKQEAgLTEx MzEsNiArMTI5MCwzNiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19nZXRfdXNlcl9w YWdlc19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJcmV0dXJuIHBhZ2VzX2RvbmU7 CiB9CiAKK3N0YXRpYyBsb25nIF9fZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLAorCQkJCSAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJCQkgICAgdW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJCQkgICAgdW5zaWduZWQg aW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCQkgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCit7CisJLyoKKwkgKiBQYXJ0cyBvZiBGT0xM X0xPTkdURVJNIGJlaGF2aW9yIGFyZSBpbmNvbXBhdGlibGUgd2l0aAorCSAqIEZBVUxUX0ZMQUdf QUxMT1dfUkVUUlkgYmVjYXVzZSBvZiB0aGUgRlMgREFYIGNoZWNrIHJlcXVpcmVtZW50IG9uCisJ ICogdm1hcy4gSG93ZXZlciwgdGhpcyBvbmx5IGNvbWVzIHVwIGlmIGxvY2tlZCBpcyBzZXQsIGFu ZCB0aGVyZSBhcmUKKwkgKiBjYWxsZXJzIHRoYXQgZG8gcmVxdWVzdCBGT0xMX0xPTkdURVJNLCBi dXQgZG8gbm90IHNldCBsb2NrZWQuIFNvLAorCSAqIGFsbG93IHdoYXQgd2UgY2FuLgorCSAqLwor CWlmIChndXBfZmxhZ3MgJiBGT0xMX0xPTkdURVJNKSB7CisJCWlmIChXQVJOX09OX09OQ0UobG9j a2VkKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQkvKgorCQkgKiBUaGlzIHdpbGwgY2hlY2sgdGhl IHZtYXMgKGV2ZW4gaWYgb3VyIHZtYXMgYXJnIGlzIE5VTEwpCisJCSAqIGFuZCByZXR1cm4gLUVO T1RTVVBQIGlmIERBWCBpc24ndCBhbGxvd2VkIGluIHRoaXMgY2FzZToKKwkJICovCisJCXJldHVy biBfX2d1cF9sb25ndGVybV9sb2NrZWQodHNrLCBtbSwgc3RhcnQsIG5yX3BhZ2VzLCBwYWdlcywK KwkJCQkJICAgICB2bWFzLCBndXBfZmxhZ3MgfCBGT0xMX1RPVUNIIHwKKwkJCQkJICAgICBGT0xM X1JFTU9URSk7CisJfQorCisJcmV0dXJuIF9fZ2V0X3VzZXJfcGFnZXNfbG9ja2VkKHRzaywgbW0s IHN0YXJ0LCBucl9wYWdlcywgcGFnZXMsIHZtYXMsCisJCQkJICAgICAgIGxvY2tlZCwKKwkJCQkg ICAgICAgZ3VwX2ZsYWdzIHwgRk9MTF9UT1VDSCB8IEZPTExfUkVNT1RFKTsKK30KKwogLyoKICAq IGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5CiAgKiBA dHNrOgl0aGUgdGFza19zdHJ1Y3QgdG8gdXNlIGZvciBwYWdlIGZhdWx0IGFjY291bnRpbmcsIG9y CkBAIC0xMjA1LDI4ICsxMzk0LDggQEAgbG9uZyBnZXRfdXNlcl9wYWdlc19yZW1vdGUoc3RydWN0 IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCWlmIChXQVJOX09OX09O Q0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCS8qCi0JICog UGFydHMgb2YgRk9MTF9MT05HVEVSTSBiZWhhdmlvciBhcmUgaW5jb21wYXRpYmxlIHdpdGgKLQkg KiBGQVVMVF9GTEFHX0FMTE9XX1JFVFJZIGJlY2F1c2Ugb2YgdGhlIEZTIERBWCBjaGVjayByZXF1 aXJlbWVudCBvbgotCSAqIHZtYXMuIEhvd2V2ZXIsIHRoaXMgb25seSBjb21lcyB1cCBpZiBsb2Nr ZWQgaXMgc2V0LCBhbmQgdGhlcmUgYXJlCi0JICogY2FsbGVycyB0aGF0IGRvIHJlcXVlc3QgRk9M TF9MT05HVEVSTSwgYnV0IGRvIG5vdCBzZXQgbG9ja2VkLiBTbywKLQkgKiBhbGxvdyB3aGF0IHdl IGNhbi4KLQkgKi8KLQlpZiAoZ3VwX2ZsYWdzICYgRk9MTF9MT05HVEVSTSkgewotCQlpZiAoV0FS Tl9PTl9PTkNFKGxvY2tlZCkpCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJLyoKLQkJICogVGhpcyB3 aWxsIGNoZWNrIHRoZSB2bWFzIChldmVuIGlmIG91ciB2bWFzIGFyZyBpcyBOVUxMKQotCQkgKiBh bmQgcmV0dXJuIC1FTk9UU1VQUCBpZiBEQVggaXNuJ3QgYWxsb3dlZCBpbiB0aGlzIGNhc2U6Ci0J CSAqLwotCQlyZXR1cm4gX19ndXBfbG9uZ3Rlcm1fbG9ja2VkKHRzaywgbW0sIHN0YXJ0LCBucl9w YWdlcywgcGFnZXMsCi0JCQkJCSAgICAgdm1hcywgZ3VwX2ZsYWdzIHwgRk9MTF9UT1VDSCB8Ci0J CQkJCSAgICAgRk9MTF9SRU1PVEUpOwotCX0KLQotCXJldHVybiBfX2dldF91c2VyX3BhZ2VzX2xv Y2tlZCh0c2ssIG1tLCBzdGFydCwgbnJfcGFnZXMsIHBhZ2VzLCB2bWFzLAotCQkJCSAgICAgICBs b2NrZWQsCi0JCQkJICAgICAgIGd1cF9mbGFncyB8IEZPTExfVE9VQ0ggfCBGT0xMX1JFTU9URSk7 CisJcmV0dXJuIF9fZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHRzaywgbW0sIHN0YXJ0LCBucl9wYWdl cywgZ3VwX2ZsYWdzLAorCQkJCSAgICAgICBwYWdlcywgdm1hcywgbG9ja2VkKTsKIH0KIEVYUE9S VF9TWU1CT0woZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKTsKIApAQCAtMTQyMSwxMCArMTU5MCwxMSBA QCBzdGF0aWMgbG9uZyBfX2dldF91c2VyX3BhZ2VzX2xvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzaywKIAlyZXR1cm4gaSA/IDogLUVGQVVMVDsKIH0KIAotbG9uZyBnZXRfdXNlcl9wYWdlc19y ZW1vdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAotCQkJ ICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKLQkJCSAgIHVu c2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCi0JCQkgICBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tlZCkKK3N0YXRpYyBsb25nIF9fZ2V0X3Vz ZXJfcGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAorCQkJCSAgICBzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBucl9wYWdlcywKKwkJCQkgICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2Ug KipwYWdlcywKKwkJCQkgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2Nr ZWQpCiB7CiAJcmV0dXJuIDA7CiB9CkBAIC0xODY0LDEzICsyMDM0LDE3IEBAIHN0YXRpYyBpbmxp bmUgcHRlX3QgZ3VwX2dldF9wdGUocHRlX3QgKnB0ZXApCiAjZW5kaWYgLyogQ09ORklHX0dVUF9H RVRfUFRFX0xPV19ISUdIICovCiAKIHN0YXRpYyB2b2lkIF9fbWF5YmVfdW51c2VkIHVuZG9fZGV2 X3BhZ2VtYXAoaW50ICpuciwgaW50IG5yX3N0YXJ0LAorCQkJCQkgICAgdW5zaWduZWQgaW50IGZs YWdzLAogCQkJCQkgICAgc3RydWN0IHBhZ2UgKipwYWdlcykKIHsKIAl3aGlsZSAoKCpucikgLSBu cl9zdGFydCkgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHBhZ2VzWy0tKCpucildOwogCiAJCUNs ZWFyUGFnZVJlZmVyZW5jZWQocGFnZSk7Ci0JCXB1dF9wYWdlKHBhZ2UpOworCQlpZiAoZmxhZ3Mg JiBGT0xMX1BJTikKKwkJCXVucGluX3VzZXJfcGFnZShwYWdlKTsKKwkJZWxzZQorCQkJcHV0X3Bh Z2UocGFnZSk7CiAJfQogfQogCkBAIC0xOTAzLDcgKzIwNzcsNyBAQCBzdGF0aWMgaW50IGd1cF9w dGVfcmFuZ2UocG1kX3QgcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5k LAogCiAJCQlwZ21hcCA9IGdldF9kZXZfcGFnZW1hcChwdGVfcGZuKHB0ZSksIHBnbWFwKTsKIAkJ CWlmICh1bmxpa2VseSghcGdtYXApKSB7Ci0JCQkJdW5kb19kZXZfcGFnZW1hcChuciwgbnJfc3Rh cnQsIHBhZ2VzKTsKKwkJCQl1bmRvX2Rldl9wYWdlbWFwKG5yLCBucl9zdGFydCwgZmxhZ3MsIHBh Z2VzKTsKIAkJCQlnb3RvIHB0ZV91bm1hcDsKIAkJCX0KIAkJfSBlbHNlIGlmIChwdGVfc3BlY2lh bChwdGUpKQpAQCAtMTkxMiw3ICsyMDg2LDcgQEAgc3RhdGljIGludCBndXBfcHRlX3JhbmdlKHBt ZF90IHBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCwKIAkJVk1fQlVH X09OKCFwZm5fdmFsaWQocHRlX3BmbihwdGUpKSk7CiAJCXBhZ2UgPSBwdGVfcGFnZShwdGUpOwog Ci0JCWhlYWQgPSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQocGFnZSwgMSk7CisJCWhlYWQgPSB0cnlf Z3JhYl9jb21wb3VuZF9oZWFkKHBhZ2UsIDEsIGZsYWdzKTsKIAkJaWYgKCFoZWFkKQogCQkJZ290 byBwdGVfdW5tYXA7CiAKQEAgLTE5NjgsMTIgKzIxNDIsMTIgQEAgc3RhdGljIGludCBfX2d1cF9k ZXZpY2VfaHVnZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBhZGRyLAogCiAJCXBn bWFwID0gZ2V0X2Rldl9wYWdlbWFwKHBmbiwgcGdtYXApOwogCQlpZiAodW5saWtlbHkoIXBnbWFw KSkgewotCQkJdW5kb19kZXZfcGFnZW1hcChuciwgbnJfc3RhcnQsIHBhZ2VzKTsKKwkJCXVuZG9f ZGV2X3BhZ2VtYXAobnIsIG5yX3N0YXJ0LCBmbGFncywgcGFnZXMpOwogCQkJcmV0dXJuIDA7CiAJ CX0KIAkJU2V0UGFnZVJlZmVyZW5jZWQocGFnZSk7CiAJCXBhZ2VzWypucl0gPSBwYWdlOwotCQln ZXRfcGFnZShwYWdlKTsKKwkJZ3JhYl9wYWdlKHBhZ2UsIGZsYWdzKTsKIAkJKCpucikrKzsKIAkJ cGZuKys7CiAJfSB3aGlsZSAoYWRkciArPSBQQUdFX1NJWkUsIGFkZHIgIT0gZW5kKTsKQEAgLTE5 OTUsNyArMjE2OSw3IEBAIHN0YXRpYyBpbnQgX19ndXBfZGV2aWNlX2h1Z2VfcG1kKHBtZF90IG9y aWcsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCXJldHVybiAwOwogCiAJaWYg KHVubGlrZWx5KHBtZF92YWwob3JpZykgIT0gcG1kX3ZhbCgqcG1kcCkpKSB7Ci0JCXVuZG9fZGV2 X3BhZ2VtYXAobnIsIG5yX3N0YXJ0LCBwYWdlcyk7CisJCXVuZG9fZGV2X3BhZ2VtYXAobnIsIG5y X3N0YXJ0LCBmbGFncywgcGFnZXMpOwogCQlyZXR1cm4gMDsKIAl9CiAJcmV0dXJuIDE7CkBAIC0y MDEzLDcgKzIxODcsNyBAQCBzdGF0aWMgaW50IF9fZ3VwX2RldmljZV9odWdlX3B1ZChwdWRfdCBv cmlnLCBwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQlyZXR1cm4gMDsKIAogCWlm ICh1bmxpa2VseShwdWRfdmFsKG9yaWcpICE9IHB1ZF92YWwoKnB1ZHApKSkgewotCQl1bmRvX2Rl dl9wYWdlbWFwKG5yLCBucl9zdGFydCwgcGFnZXMpOworCQl1bmRvX2Rldl9wYWdlbWFwKG5yLCBu cl9zdGFydCwgZmxhZ3MsIHBhZ2VzKTsKIAkJcmV0dXJuIDA7CiAJfQogCXJldHVybiAxOwpAQCAt MjA0Nyw4ICsyMjIxLDExIEBAIHN0YXRpYyBpbnQgcmVjb3JkX3N1YnBhZ2VzKHN0cnVjdCBwYWdl ICpwYWdlLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJcmV0dXJuIG5yOwogfQogCi1zdGF0aWMgdm9p ZCBwdXRfY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJlZnMpCitzdGF0aWMg dm9pZCBwdXRfY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJlZnMsIHVuc2ln bmVkIGludCBmbGFncykKIHsKKwlpZiAoZmxhZ3MgJiBGT0xMX1BJTikKKwkJcmVmcyAqPSBHVVBf UElOX0NPVU5USU5HX0JJQVM7CisKIAkvKiBEbyBhIGdldF9wYWdlKCkgZmlyc3QsIGluIGNhc2Ug cmVmcyA9PSBwYWdlLT5fcmVmY291bnQgKi8KIAlnZXRfcGFnZShwYWdlKTsKIAlwYWdlX3JlZl9z dWIocGFnZSwgcmVmcyk7CkBAIC0yMDg4LDEyICsyMjY1LDEyIEBAIHN0YXRpYyBpbnQgZ3VwX2h1 Z2VwdGUocHRlX3QgKnB0ZXAsIHVuc2lnbmVkIGxvbmcgc3osIHVuc2lnbmVkIGxvbmcgYWRkciwK IAlwYWdlID0gaGVhZCArICgoYWRkciAmIChzei0xKSkgPj4gUEFHRV9TSElGVCk7CiAJcmVmcyA9 IHJlY29yZF9zdWJwYWdlcyhwYWdlLCBhZGRyLCBlbmQsIHBhZ2VzICsgKm5yKTsKIAotCWhlYWQg PSB0cnlfZ2V0X2NvbXBvdW5kX2hlYWQoaGVhZCwgcmVmcyk7CisJaGVhZCA9IHRyeV9ncmFiX2Nv bXBvdW5kX2hlYWQoaGVhZCwgcmVmcywgZmxhZ3MpOwogCWlmICghaGVhZCkKIAkJcmV0dXJuIDA7 CiAKIAlpZiAodW5saWtlbHkocHRlX3ZhbChwdGUpICE9IHB0ZV92YWwoKnB0ZXApKSkgewotCQlw dXRfY29tcG91bmRfaGVhZChoZWFkLCByZWZzKTsKKwkJcHV0X2NvbXBvdW5kX2hlYWQoaGVhZCwg cmVmcywgZmxhZ3MpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTIxNDgsMTIgKzIzMjUsMTIgQEAg c3RhdGljIGludCBndXBfaHVnZV9wbWQocG1kX3Qgb3JpZywgcG1kX3QgKnBtZHAsIHVuc2lnbmVk IGxvbmcgYWRkciwKIAlwYWdlID0gcG1kX3BhZ2Uob3JpZykgKyAoKGFkZHIgJiB+UE1EX01BU0sp ID4+IFBBR0VfU0hJRlQpOwogCXJlZnMgPSByZWNvcmRfc3VicGFnZXMocGFnZSwgYWRkciwgZW5k LCBwYWdlcyArICpucik7CiAKLQloZWFkID0gdHJ5X2dldF9jb21wb3VuZF9oZWFkKHBtZF9wYWdl KG9yaWcpLCByZWZzKTsKKwloZWFkID0gdHJ5X2dyYWJfY29tcG91bmRfaGVhZChwbWRfcGFnZShv cmlnKSwgcmVmcywgZmxhZ3MpOwogCWlmICghaGVhZCkKIAkJcmV0dXJuIDA7CiAKIAlpZiAodW5s aWtlbHkocG1kX3ZhbChvcmlnKSAhPSBwbWRfdmFsKCpwbWRwKSkpIHsKLQkJcHV0X2NvbXBvdW5k X2hlYWQoaGVhZCwgcmVmcyk7CisJCXB1dF9jb21wb3VuZF9oZWFkKGhlYWQsIHJlZnMsIGZsYWdz KTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yMTgyLDEyICsyMzU5LDEyIEBAIHN0YXRpYyBpbnQg Z3VwX2h1Z2VfcHVkKHB1ZF90IG9yaWcsIHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIGFkZHIs CiAJcGFnZSA9IHB1ZF9wYWdlKG9yaWcpICsgKChhZGRyICYgflBVRF9NQVNLKSA+PiBQQUdFX1NI SUZUKTsKIAlyZWZzID0gcmVjb3JkX3N1YnBhZ2VzKHBhZ2UsIGFkZHIsIGVuZCwgcGFnZXMgKyAq bnIpOwogCi0JaGVhZCA9IHRyeV9nZXRfY29tcG91bmRfaGVhZChwdWRfcGFnZShvcmlnKSwgcmVm cyk7CisJaGVhZCA9IHRyeV9ncmFiX2NvbXBvdW5kX2hlYWQocHVkX3BhZ2Uob3JpZyksIHJlZnMs IGZsYWdzKTsKIAlpZiAoIWhlYWQpCiAJCXJldHVybiAwOwogCiAJaWYgKHVubGlrZWx5KHB1ZF92 YWwob3JpZykgIT0gcHVkX3ZhbCgqcHVkcCkpKSB7Ci0JCXB1dF9jb21wb3VuZF9oZWFkKGhlYWQs IHJlZnMpOworCQlwdXRfY29tcG91bmRfaGVhZChoZWFkLCByZWZzLCBmbGFncyk7CiAJCXJldHVy biAwOwogCX0KIApAQCAtMjIxMSwxMiArMjM4OCwxMiBAQCBzdGF0aWMgaW50IGd1cF9odWdlX3Bn ZChwZ2RfdCBvcmlnLCBwZ2RfdCAqcGdkcCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCXBhZ2UgPSBw Z2RfcGFnZShvcmlnKSArICgoYWRkciAmIH5QR0RJUl9NQVNLKSA+PiBQQUdFX1NISUZUKTsKIAly ZWZzID0gcmVjb3JkX3N1YnBhZ2VzKHBhZ2UsIGFkZHIsIGVuZCwgcGFnZXMgKyAqbnIpOwogCi0J aGVhZCA9IHRyeV9nZXRfY29tcG91bmRfaGVhZChwZ2RfcGFnZShvcmlnKSwgcmVmcyk7CisJaGVh ZCA9IHRyeV9ncmFiX2NvbXBvdW5kX2hlYWQocGdkX3BhZ2Uob3JpZyksIHJlZnMsIGZsYWdzKTsK IAlpZiAoIWhlYWQpCiAJCXJldHVybiAwOwogCiAJaWYgKHVubGlrZWx5KHBnZF92YWwob3JpZykg IT0gcGdkX3ZhbCgqcGdkcCkpKSB7Ci0JCXB1dF9jb21wb3VuZF9oZWFkKGhlYWQsIHJlZnMpOwor CQlwdXRfY29tcG91bmRfaGVhZChoZWFkLCByZWZzLCBmbGFncyk7CiAJCXJldHVybiAwOwogCX0K IApAQCAtMjUxNyw5ICsyNjk0LDEyIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGdldF91c2VyX3BhZ2Vz X2Zhc3QpOwogLyoqCiAgKiBwaW5fdXNlcl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBwYWdlcyBp biBtZW1vcnkgd2l0aG91dCB0YWtpbmcgbG9ja3MKICAqCi0gKiBGb3Igbm93LCB0aGlzIGlzIGEg cGxhY2Vob2xkZXIgZnVuY3Rpb24sIHVudGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKLSAqIGNv bnZlcnRlZCB0byB1c2UgdGhlIGNvcnJlY3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJf cGFnZXMqKCkgQVBJLiBTbywKLSAqIHRoaXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2Vz X2Zhc3QoKS4KKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBnZXRfdXNlcl9wYWdlc19mYXN0KCksIGV4 Y2VwdCB0aGF0IEZPTExfUElOIGlzIHNldC4gU2VlCisgKiBnZXRfdXNlcl9wYWdlc19mYXN0KCkg Zm9yIGRvY3VtZW50YXRpb24gb24gdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cywgYmVjYXVzZQorICog dGhlIGFyZ3VtZW50cyBoZXJlIGFyZSBpZGVudGljYWwuCisgKgorICogRk9MTF9QSU4gbWVhbnMg dGhhdCB0aGUgcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEgdW5waW5fdXNlcl9wYWdlKCkuIFBs ZWFzZQorICogc2VlIERvY3VtZW50YXRpb24vdm0vcGluX3VzZXJfcGFnZXMucnN0IGZvciBmdXJ0 aGVyIGRldGFpbHMuCiAgKgogICogVGhpcyBpcyBpbnRlbmRlZCBmb3IgQ2FzZSAxIChESU8pIGlu IERvY3VtZW50YXRpb24vdm0vcGluX3VzZXJfcGFnZXMucnN0LiBJdAogICogaXMgTk9UIGludGVu ZGVkIGZvciBDYXNlIDIgKFJETUE6IGxvbmctdGVybSBwaW5zKS4KQEAgLTI1MjcsMjEgKzI3MDcs MjQgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZ2V0X3VzZXJfcGFnZXNfZmFzdCk7CiBpbnQgcGluX3Vz ZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJCQl1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKQogewotCS8qCi0JICogVGhp cyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZh dGVkLgotCSAqIFVudGlsIHRoZW4sIGp1c3QgYmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcg Z2V0X3VzZXJfcGFnZXMqKCkKLQkgKiByb3V0aW5lLgotCSAqLwotCXJldHVybiBnZXRfdXNlcl9w YWdlc19mYXN0KHN0YXJ0LCBucl9wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7CisJLyogRk9MTF9H RVQgYW5kIEZPTExfUElOIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisJaWYgKFdBUk5fT05f T05DRShndXBfZmxhZ3MgJiBGT0xMX0dFVCkpCisJCXJldHVybiAtRUlOVkFMOworCisJZ3VwX2Zs YWdzIHw9IEZPTExfUElOOworCXJldHVybiBpbnRlcm5hbF9nZXRfdXNlcl9wYWdlc19mYXN0KHN0 YXJ0LCBucl9wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChw aW5fdXNlcl9wYWdlc19mYXN0KTsKIAogLyoqCiAgKiBwaW5fdXNlcl9wYWdlc19yZW1vdGUoKSAt IHBpbiBwYWdlcyBvZiBhIHJlbW90ZSBwcm9jZXNzICh0YXNrICE9IGN1cnJlbnQpCiAgKgotICog Rm9yIG5vdywgdGhpcyBpcyBhIHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNh bGwgc2l0ZXMgYXJlCi0gKiBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3Bh Z2VzKigpIG9yIHBpbl91c2VyX3BhZ2VzKigpIEFQSS4gU28sCi0gKiB0aGlzIGlzIGlkZW50aWNh bCB0byBnZXRfdXNlcl9wYWdlc19yZW1vdGUoKS4KKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBnZXRf dXNlcl9wYWdlc19yZW1vdGUoKSwgZXhjZXB0IHRoYXQgRk9MTF9QSU4gaXMgc2V0LiBTZWUKKyAq IGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpIGZvciBkb2N1bWVudGF0aW9uIG9uIHRoZSBmdW5jdGlv biBhcmd1bWVudHMsIGJlY2F1c2UKKyAqIHRoZSBhcmd1bWVudHMgaGVyZSBhcmUgaWRlbnRpY2Fs LgorICoKKyAqIEZPTExfUElOIG1lYW5zIHRoYXQgdGhlIHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQg dmlhIHVucGluX3VzZXJfcGFnZSgpLiBQbGVhc2UKKyAqIHNlZSBEb2N1bWVudGF0aW9uL3ZtL3Bp bl91c2VyX3BhZ2VzLnJzdCBmb3IgZGV0YWlscy4KICAqCiAgKiBUaGlzIGlzIGludGVuZGVkIGZv ciBDYXNlIDEgKERJTykgaW4gRG9jdW1lbnRhdGlvbi92bS9waW5fdXNlcl9wYWdlcy5yc3QuIEl0 CiAgKiBpcyBOT1QgaW50ZW5kZWQgZm9yIENhc2UgMiAoUkRNQTogbG9uZy10ZXJtIHBpbnMpLgpA QCAtMjU1MSwyMiArMjczNCwyNCBAQCBsb25nIHBpbl91c2VyX3BhZ2VzX3JlbW90ZShzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQkgICB1bnNpZ25lZCBp bnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJICAgc3RydWN0IHZtX2FyZWFf c3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCiB7Ci0JLyoKLQkgKiBUaGlzIGlzIGEgcGxhY2Vo b2xkZXIsIHVudGlsIHRoZSBwaW4gZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmF0ZWQuCi0JICogVW50 aWwgdGhlbiwganVzdCBiZWhhdmUgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBnZXRfdXNlcl9wYWdl cyooKQotCSAqIHJvdXRpbmUuCi0JICovCi0JcmV0dXJuIGdldF91c2VyX3BhZ2VzX3JlbW90ZSh0 c2ssIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywgcGFnZXMsCi0JCQkJICAgICB2bWFz LCBsb2NrZWQpOworCS8qIEZPTExfR0VUIGFuZCBGT0xMX1BJTiBhcmUgbXV0dWFsbHkgZXhjbHVz aXZlLiAqLworCWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9HRVQpKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWd1cF9mbGFncyB8PSBGT0xMX1BJTjsKKwlyZXR1cm4gX19nZXRfdXNl cl9wYWdlc19yZW1vdGUodHNrLCBtbSwgc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsCisJCQkJ ICAgICAgIHBhZ2VzLCB2bWFzLCBsb2NrZWQpOwogfQogRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9w YWdlc19yZW1vdGUpOwogCiAvKioKICAqIHBpbl91c2VyX3BhZ2VzKCkgLSBwaW4gdXNlciBwYWdl cyBpbiBtZW1vcnkgZm9yIHVzZSBieSBvdGhlciBkZXZpY2VzCiAgKgotICogRm9yIG5vdywgdGhp cyBpcyBhIHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNhbGwgc2l0ZXMgYXJl Ci0gKiBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigpIG9yIHBp bl91c2VyX3BhZ2VzKigpIEFQSS4gU28sCi0gKiB0aGlzIGlzIGlkZW50aWNhbCB0byBnZXRfdXNl cl9wYWdlcygpLgorICogTmVhcmx5IHRoZSBzYW1lIGFzIGdldF91c2VyX3BhZ2VzKCksIGV4Y2Vw dCB0aGF0IEZPTExfVE9VQ0ggaXMgbm90IHNldCwgYW5kCisgKiBGT0xMX1BJTiBpcyBzZXQuCisg KgorICogRk9MTF9QSU4gbWVhbnMgdGhhdCB0aGUgcGFnZXMgbXVzdCBiZSByZWxlYXNlZCB2aWEg dW5waW5fdXNlcl9wYWdlKCkuIFBsZWFzZQorICogc2VlIERvY3VtZW50YXRpb24vdm0vcGluX3Vz ZXJfcGFnZXMucnN0IGZvciBkZXRhaWxzLgogICoKICAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENh c2UgMSAoRElPKSBpbiBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKICAq IGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCkBAIC0y NTc1LDExICsyNzYwLDEyIEBAIGxvbmcgcGluX3VzZXJfcGFnZXModW5zaWduZWQgbG9uZyBzdGFy dCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJICAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3Ms IHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCSAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFz KQogewotCS8qCi0JICogVGhpcyBpcyBhIHBsYWNlaG9sZGVyLCB1bnRpbCB0aGUgcGluIGZ1bmN0 aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgotCSAqIFVudGlsIHRoZW4sIGp1c3QgYmVoYXZlIGxpa2Ug dGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkKLQkgKiByb3V0aW5lLgotCSAqLwot CXJldHVybiBnZXRfdXNlcl9wYWdlcyhzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywgcGFnZXMs IHZtYXMpOworCS8qIEZPTExfR0VUIGFuZCBGT0xMX1BJTiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZl LiAqLworCWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9HRVQpKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWd1cF9mbGFncyB8PSBGT0xMX1BJTjsKKwlyZXR1cm4gX19ndXBfbG9uZ3Rl cm1fbG9ja2VkKGN1cnJlbnQsIGN1cnJlbnQtPm1tLCBzdGFydCwgbnJfcGFnZXMsCisJCQkJICAg ICBwYWdlcywgdm1hcywgZ3VwX2ZsYWdzKTsKIH0KIEVYUE9SVF9TWU1CT0wocGluX3VzZXJfcGFn ZXMpOwpkaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmMKaW5k ZXggNDFhMGZiZGRjOTZiLi40ZTA0YTZhZWU4YTYgMTAwNjQ0Ci0tLSBhL21tL2h1Z2VfbWVtb3J5 LmMKKysrIGIvbW0vaHVnZV9tZW1vcnkuYwpAQCAtOTQ1LDYgKzk0NSwxMSBAQCBzdHJ1Y3QgcGFn ZSAqZm9sbG93X2Rldm1hcF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgYWRkciwKIAkgKi8KIAlXQVJOX09OQ0UoZmxhZ3MgJiBGT0xMX0NPVywgIm1tOiBJbiBm b2xsb3dfZGV2bWFwX3BtZCB3aXRoIEZPTExfQ09XIHNldCIpOwogCisJLyogRk9MTF9HRVQgYW5k IEZPTExfUElOIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisJaWYgKFdBUk5fT05fT05DRSgo ZmxhZ3MgJiAoRk9MTF9QSU4gfCBGT0xMX0dFVCkpID09CisJCQkgKEZPTExfUElOIHwgRk9MTF9H RVQpKSkKKwkJcmV0dXJuIE5VTEw7CisKIAlpZiAoZmxhZ3MgJiBGT0xMX1dSSVRFICYmICFwbWRf d3JpdGUoKnBtZCkpCiAJCXJldHVybiBOVUxMOwogCkBAIC05NjAsNyArOTY1LDcgQEAgc3RydWN0 IHBhZ2UgKmZvbGxvd19kZXZtYXBfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNp Z25lZCBsb25nIGFkZHIsCiAJICogZGV2aWNlIG1hcHBlZCBwYWdlcyBjYW4gb25seSBiZSByZXR1 cm5lZCBpZiB0aGUKIAkgKiBjYWxsZXIgd2lsbCBtYW5hZ2UgdGhlIHBhZ2UgcmVmZXJlbmNlIGNv dW50LgogCSAqLwotCWlmICghKGZsYWdzICYgRk9MTF9HRVQpKQorCWlmICghKGZsYWdzICYgKEZP TExfR0VUIHwgRk9MTF9QSU4pKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVFWElTVCk7CiAKIAlwZm4g Kz0gKGFkZHIgJiB+UE1EX01BU0spID4+IFBBR0VfU0hJRlQ7CkBAIC05NjgsNyArOTczLDcgQEAg c3RydWN0IHBhZ2UgKmZvbGxvd19kZXZtYXBfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJaWYgKCEqcGdtYXApCiAJCXJldHVybiBFUlJfUFRSKC1F RkFVTFQpOwogCXBhZ2UgPSBwZm5fdG9fcGFnZShwZm4pOwotCWdldF9wYWdlKHBhZ2UpOworCWdy YWJfcGFnZShwYWdlLCBmbGFncyk7CiAKIAlyZXR1cm4gcGFnZTsKIH0KQEAgLTEwODgsNiArMTA5 MywxMSBAQCBzdHJ1Y3QgcGFnZSAqZm9sbG93X2Rldm1hcF9wdWQoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAlpZiAoZmxhZ3MgJiBGT0xMX1dSSVRFICYm ICFwdWRfd3JpdGUoKnB1ZCkpCiAJCXJldHVybiBOVUxMOwogCisJLyogRk9MTF9HRVQgYW5kIEZP TExfUElOIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisJaWYgKFdBUk5fT05fT05DRSgoZmxh Z3MgJiAoRk9MTF9QSU4gfCBGT0xMX0dFVCkpID09CisJCQkgKEZPTExfUElOIHwgRk9MTF9HRVQp KSkKKwkJcmV0dXJuIE5VTEw7CisKIAlpZiAocHVkX3ByZXNlbnQoKnB1ZCkgJiYgcHVkX2Rldm1h cCgqcHVkKSkKIAkJLyogcGFzcyAqLzsKIAllbHNlCkBAIC0xMDk5LDggKzExMDksMTAgQEAgc3Ry dWN0IHBhZ2UgKmZvbGxvd19kZXZtYXBfcHVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1 bnNpZ25lZCBsb25nIGFkZHIsCiAJLyoKIAkgKiBkZXZpY2UgbWFwcGVkIHBhZ2VzIGNhbiBvbmx5 IGJlIHJldHVybmVkIGlmIHRoZQogCSAqIGNhbGxlciB3aWxsIG1hbmFnZSB0aGUgcGFnZSByZWZl cmVuY2UgY291bnQuCisJICoKKwkgKiBBdCBsZWFzdCBvbmUgb2YgRk9MTF9HRVQgfCBGT0xMX1BJ TiBtdXN0IGJlIHNldCwgc28gYXNzZXJ0IHRoYXQgaGVyZToKIAkgKi8KLQlpZiAoIShmbGFncyAm IEZPTExfR0VUKSkKKwlpZiAoIShmbGFncyAmIChGT0xMX0dFVCB8IEZPTExfUElOKSkpCiAJCXJl dHVybiBFUlJfUFRSKC1FRVhJU1QpOwogCiAJcGZuICs9IChhZGRyICYgflBVRF9NQVNLKSA+PiBQ QUdFX1NISUZUOwpAQCAtMTEwOCw3ICsxMTIwLDcgQEAgc3RydWN0IHBhZ2UgKmZvbGxvd19kZXZt YXBfcHVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJ aWYgKCEqcGdtYXApCiAJCXJldHVybiBFUlJfUFRSKC1FRkFVTFQpOwogCXBhZ2UgPSBwZm5fdG9f cGFnZShwZm4pOwotCWdldF9wYWdlKHBhZ2UpOworCWdyYWJfcGFnZShwYWdlLCBmbGFncyk7CiAK IAlyZXR1cm4gcGFnZTsKIH0KQEAgLTE1MjIsOCArMTUzNCw3IEBAIHN0cnVjdCBwYWdlICpmb2xs b3dfdHJhbnNfaHVnZV9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiBza2lwX21sb2Nr OgogCXBhZ2UgKz0gKGFkZHIgJiB+SFBBR0VfUE1EX01BU0spID4+IFBBR0VfU0hJRlQ7CiAJVk1f QlVHX09OX1BBR0UoIVBhZ2VDb21wb3VuZChwYWdlKSAmJiAhaXNfem9uZV9kZXZpY2VfcGFnZShw YWdlKSwgcGFnZSk7Ci0JaWYgKGZsYWdzICYgRk9MTF9HRVQpCi0JCWdldF9wYWdlKHBhZ2UpOwor CWdyYWJfcGFnZShwYWdlLCBmbGFncyk7CiAKIG91dDoKIAlyZXR1cm4gcGFnZTsKZGlmZiAtLWdp dCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCBhYzY1YmI1ZTM4YWMuLjg0ODQ0 ZWM0YWM4YiAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAt NDM1Niw3ICs0MzU2LDcgQEAgbG9uZyBmb2xsb3dfaHVnZXRsYl9wYWdlKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIHNhbWVfcGFnZToKIAkJaWYgKHBh Z2VzKSB7CiAJCQlwYWdlc1tpXSA9IG1lbV9tYXBfb2Zmc2V0KHBhZ2UsIHBmbl9vZmZzZXQpOwot CQkJZ2V0X3BhZ2UocGFnZXNbaV0pOworCQkJZ3JhYl9wYWdlKHBhZ2VzW2ldLCBmbGFncyk7CiAJ CX0KIAogCQlpZiAodm1hcykKQEAgLTQ5MTYsNiArNDkxNiwxMiBAQCBmb2xsb3dfaHVnZV9wbWQo c3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKIAlzdHJ1Y3QgcGFn ZSAqcGFnZSA9IE5VTEw7CiAJc3BpbmxvY2tfdCAqcHRsOwogCXB0ZV90IHB0ZTsKKworCS8qIEZP TExfR0VUIGFuZCBGT0xMX1BJTiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiAqLworCWlmIChXQVJO X09OX09OQ0UoKGZsYWdzICYgKEZPTExfUElOIHwgRk9MTF9HRVQpKSA9PQorCQkJIChGT0xMX1BJ TiB8IEZPTExfR0VUKSkpCisJCXJldHVybiBOVUxMOworCiByZXRyeToKIAlwdGwgPSBwbWRfbG9j a3B0cihtbSwgcG1kKTsKIAlzcGluX2xvY2socHRsKTsKQEAgLTQ5MjgsOCArNDkzNCw3IEBAIGZv bGxvd19odWdlX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAogCXB0ZSA9IGh1Z2VfcHRlcF9nZXQoKHB0ZV90ICopcG1kKTsKIAlpZiAocHRlX3ByZXNlbnQo cHRlKSkgewogCQlwYWdlID0gcG1kX3BhZ2UoKnBtZCkgKyAoKGFkZHJlc3MgJiB+UE1EX01BU0sp ID4+IFBBR0VfU0hJRlQpOwotCQlpZiAoZmxhZ3MgJiBGT0xMX0dFVCkKLQkJCWdldF9wYWdlKHBh Z2UpOworCQlncmFiX3BhZ2UocGFnZSwgZmxhZ3MpOwogCX0gZWxzZSB7CiAJCWlmIChpc19odWdl dGxiX2VudHJ5X21pZ3JhdGlvbihwdGUpKSB7CiAJCQlzcGluX3VubG9jayhwdGwpOwpAQCAtNDk1 MCw3ICs0OTU1LDcgQEAgc3RydWN0IHBhZ2UgKiBfX3dlYWsKIGZvbGxvd19odWdlX3B1ZChzdHJ1 Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogCQlwdWRfdCAqcHVkLCBp bnQgZmxhZ3MpCiB7Ci0JaWYgKGZsYWdzICYgRk9MTF9HRVQpCisJaWYgKGZsYWdzICYgKEZPTExf R0VUIHwgRk9MTF9QSU4pKQogCQlyZXR1cm4gTlVMTDsKIAogCXJldHVybiBwdGVfcGFnZSgqKHB0 ZV90ICopcHVkKSArICgoYWRkcmVzcyAmIH5QVURfTUFTSykgPj4gUEFHRV9TSElGVCk7CkBAIC00 OTU5LDcgKzQ5NjQsNyBAQCBmb2xsb3dfaHVnZV9wdWQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu c2lnbmVkIGxvbmcgYWRkcmVzcywKIHN0cnVjdCBwYWdlICogX193ZWFrCiBmb2xsb3dfaHVnZV9w Z2Qoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcGdkX3QgKnBn ZCwgaW50IGZsYWdzKQogewotCWlmIChmbGFncyAmIEZPTExfR0VUKQorCWlmIChmbGFncyAmIChG T0xMX0dFVCB8IEZPTExfUElOKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gcHRlX3BhZ2Uo KihwdGVfdCAqKXBnZCkgKyAoKGFkZHJlc3MgJiB+UEdESVJfTUFTSykgPj4gUEFHRV9TSElGVCk7 CmRpZmYgLS1naXQgYS9tbS92bXN0YXQuYyBiL21tL3Ztc3RhdC5jCmluZGV4IDc4ZDUzMzc4ZGI5 OS4uYjU2ODA4YmFlMWI0IDEwMDY0NAotLS0gYS9tbS92bXN0YXQuYworKysgYi9tbS92bXN0YXQu YwpAQCAtMTE2OCw2ICsxMTY4LDggQEAgY29uc3QgY2hhciAqIGNvbnN0IHZtc3RhdF90ZXh0W10g PSB7CiAJIm5yX2RpcnRpZWQiLAogCSJucl93cml0dGVuIiwKIAkibnJfa2VybmVsX21pc2NfcmVj bGFpbWFibGUiLAorCSJucl9mb2xsX3Bpbl9yZXF1ZXN0ZWQiLAorCSJucl9mb2xsX3Bpbl9yZXR1 cm5lZCIsCiAKIAkvKiBlbnVtIHdyaXRlYmFja19zdGF0X2l0ZW0gY291bnRlcnMgKi8KIAkibnJf ZGlydHlfdGhyZXNob2xkIiwKLS0gCjIuMjQuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVs