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=-12.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 160A9C352B9 for ; Thu, 15 Oct 2020 12:38:29 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 8B8602225A for ; Thu, 15 Oct 2020 12:38:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B8602225A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 50E7487D86; Thu, 15 Oct 2020 12:38:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yfNOKqpj7Rm3; Thu, 15 Oct 2020 12:38:23 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id 43942883FB; Thu, 15 Oct 2020 12:38:23 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 349B4C1ADC; Thu, 15 Oct 2020 12:38:23 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id C1061C0051 for ; Thu, 15 Oct 2020 12:38:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id A3B6A883F8 for ; Thu, 15 Oct 2020 12:38:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EXsZ_np4EzDN for ; Thu, 15 Oct 2020 12:38:17 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by fraxinus.osuosl.org (Postfix) with ESMTPS id AA29B87D86 for ; Thu, 15 Oct 2020 12:38:16 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C0804B181; Thu, 15 Oct 2020 12:38:14 +0000 (UTC) From: Thomas Zimmermann To: maarten.lankhorst@linux.intel.com, mripard@kernel.org, airlied@linux.ie, daniel@ffwll.ch, sam@ravnborg.org, alexander.deucher@amd.com, christian.koenig@amd.com, kraxel@redhat.com, l.stach@pengutronix.de, linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com, inki.dae@samsung.com, jy0922.shim@samsung.com, sw0312.kim@samsung.com, kyungmin.park@samsung.com, kgene@kernel.org, krzk@kernel.org, yuq825@gmail.com, bskeggs@redhat.com, robh@kernel.org, tomeu.vizoso@collabora.com, steven.price@arm.com, alyssa.rosenzweig@collabora.com, hjc@rock-chips.com, heiko@sntech.de, hdegoede@redhat.com, sean@poorly.run, eric@anholt.net, oleksandr_andrushchenko@epam.com, ray.huang@amd.com, sumit.semwal@linaro.org, emil.velikov@collabora.com, luben.tuikov@amd.com, apaneers@amd.com, linus.walleij@linaro.org, melissa.srw@gmail.com, chris@chris-wilson.co.uk, miaoqinglang@huawei.com Subject: [PATCH v4 06/10] drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends Date: Thu, 15 Oct 2020 14:38:02 +0200 Message-Id: <20201015123806.32416-7-tzimmermann@suse.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201015123806.32416-1-tzimmermann@suse.de> References: <20201015123806.32416-1-tzimmermann@suse.de> MIME-Version: 1.0 Cc: linux-samsung-soc@vger.kernel.org, lima@lists.freedesktop.org, nouveau@lists.freedesktop.org, etnaviv@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, virtualization@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org, linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, Thomas Zimmermann , xen-devel@lists.xenproject.org, spice-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" VGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgdm1hcC92dW5tYXAncyB1c2Ugb2YgcmF3IHBvaW50ZXJz IGluIEdFTSBvYmplY3QKZnVuY3Rpb25zIHdpdGggaW5zdGFuY2VzIG9mIHN0cnVjdCBkbWFfYnVm X21hcC4gR0VNIGJhY2tlbmRzIGFyZQpjb252ZXJ0ZWQgYXMgd2VsbC4gRm9yIG1vc3Qgb2YgdGhl bSwgdGhpcyBzaW1wbHkgY2hhbmdlcyB0aGUgcmV0dXJuZWQgdHlwZS4KClRUTS1iYXNlZCBkcml2 ZXJzIG5vdyByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZW1v cnksCmVpdGhlciBzeXN0ZW0gb3IgSS9PIG1lbW9yeS4gR0VNIFZSQU0gaGVscGVycyBhbmQgcXhs IG5vdyB1c2UgdHRtX2JvX3ZtYXAoKQpldCBhbC4gQW1kZ3B1LCBub3V2ZWF1IGFuZCByYWRlb24g dXNlIGRybV9nZW1fdHRtX3ZtYXAoKSBldCBhbCBpbnN0ZWFkIG9mCmltcGxlbWVudGluZyB0aGVp ciBvd24gdm1hcCBjYWxsYmFja3MuCgp2NDoKCSogdXNlIHR0bV9ib192bWFwKCksIGRybV9nZW1f dHRtX3ZtYXAoKSwgZXQgYWwuIChEYW5pZWwsIENocmlzdGlhbikKCSogZml4IGEgdHJhaWxpbmcg eyBpbiBkcm1fZ2VtX3ZtYXAoKQoJKiByZW1vdmUgc2V2ZXJhbCBlbXB0eSBmdW5jdGlvbnMgaW5z dGVhZCBvZiBjb252ZXJ0aW5nIHRoZW0gKERhbmllbCkKCSogY29tbWVudCB1c2VzIG9mIHJhdyBw b2ludGVycyB3aXRoIGEgVE9ETyAoRGFuaWVsKQoJKiBUT0RPIGxpc3Q6IGNvbnZlcnQgbW9yZSBo ZWxwZXJzIHRvIHVzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAKClNpZ25lZC1vZmYtYnk6IFRob21hcyBa aW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L3Rv ZG8ucnN0ICAgICAgICAgICAgICAgICAgfCAgMTggKysrKwogZHJpdmVycy9ncHUvZHJtL0tjb25m aWcgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZG1hX2J1Zi5jIHwgIDM2IC0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kbWFfYnVmLmggfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2dlbS5jICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5oICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9jdXJzb3IuYyAg ICAgICAgICAgIHwgIDI3ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgICAg ICAgICAgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jICAgICAgICAgICAg ICAgICAgIHwgIDIzICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMg ICAgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyAg ICAgIHwgIDQ4ICsrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIu YyAgICAgICB8IDEwNyArKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9kcnYuaCAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYv ZXRuYXZpdl9nZW1fcHJpbWUuYyB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9n ZW0uYyAgICAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hl ZC5jICAgICAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9t b2RlLmMgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyAgICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmggICAg ICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMgICAgICAg fCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmggICAgICAgfCAg IDIgLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9wcmltZS5jICAgICB8ICAyMCAt LS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5jIHwgIDE0ICst LQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jICAgICAgICAgICB8ICAxMSArLQog ZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jICAgICAgICAgICAgICB8ICAxNCArKy0KIGRy aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oICAgICAgICAgICAgICAgfCAgMTEgKy0KIGRyaXZl cnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5jICAgICAgICAgICAgfCAgMzEgKysrLS0tCiBkcml2 ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuaCAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9wcmltZS5jICAgICAgICAgICAgIHwgIDEyICstLQogZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICAgICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9k cm0vcmFkZW9uL3JhZGVvbl9nZW0uYyAgICAgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9wcmltZS5jICAgICAgIHwgIDIwIC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgfCAgMjIgKystLQogZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uaCB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3Rpbnkv Y2lycnVzLmMgICAgICAgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20x MnUzMjAuYyAgICAgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9k ZXNldC5jICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94 X21vZGUuYyAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyAgICAg ICAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggICAgICAg ICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYyAgICAgICAg ICAgICB8ICAxNiArKy0KIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYyAg ICAgfCAgMTggKystLQogZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5oICAg ICB8ICAgNiArLQogaW5jbHVkZS9kcm0vZHJtX2dlbS5oICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNSArLQogaW5jbHVkZS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmggICAgICAgICAgICB8ICAg MiArLQogaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaCAgICAgICAgICB8ICAgNCAr LQogaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oICAgICAgICAgICB8ICAxNCArLS0K IDQ3IGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCAyOTUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QgYi9Eb2N1bWVudGF0aW9uL2dw dS90b2RvLnJzdAppbmRleCA3MDA2MzdlMjVlY2QuLjdlNmZjM2MwNGFkZCAxMDA2NDQKLS0tIGEv RG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5y c3QKQEAgLTQ0Niw2ICs0NDYsMjQgQEAgQ29udGFjdDogVmlsbGUgU3lyasOkbMOkLCBEYW5pZWwg VmV0dGVyCiAKIExldmVsOiBJbnRlcm1lZGlhdGUKIAorVXNlIHN0cnVjdCBkbWFfYnVmX21hcCB0 aHJvdWdob3V0IGNvZGViYXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworUG9pbnRlcnMgdG8gc2hhcmVkIGRldmljZSBtZW1vcnkgYXJlIHN0b3JlZCBpbiBz dHJ1Y3QgZG1hX2J1Zl9tYXAuIEVhY2gKK2luc3RhbmNlIGtub3dzIHdoZXRoZXIgaXQgcmVmZXJz IHRvIHN5c3RlbSBvciBJL08gbWVtb3J5LiBNb3N0IG9mIHRoZSBEUk0td2lkZQoraW50ZXJmYWNl IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIHN0cnVjdCBkbWFfYnVmX21hcCwgYnV0IGltcGxl bWVudGF0aW9ucworb2Z0ZW4gc3RpbGwgdXNlIHJhdyBwb2ludGVycy4KKworVGhlIHRhc2sgaXMg dG8gdXNlIHN0cnVjdCBkbWFfYnVmX21hcCB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KKworKiBNZW1v cnkgbWFuYWdlcnMgc2hvdWxkIHVzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgZm9yIGRtYS1idWYtaW1w b3J0ZWQgYnVmZmVycy4KKyogVFRNIG1pZ2h0IGJlbmVmaXQgZnJvbSB1c2luZyBzdHJ1Y3QgZG1h X2J1Zl9tYXAgaW50ZXJuYWxseS4KKyogRnJhbWVidWZmZXIgY29weWluZyBhbmQgYmxpdHRpbmcg aGVscGVycyBzaG91bGQgb3BlcmF0ZSBvbiBzdHJ1Y3QgZG1hX2J1Zl9tYXAuCisKK0NvbnRhY3Q6 IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPiwgQ2hyaXN0aWFuIEvDtm5p ZywgRGFuaWVsIFZldHRlcgorCitMZXZlbDogSW50ZXJtZWRpYXRlCisKIAogQ29yZSByZWZhY3Rv cmluZ3MKID09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4IDE0N2Q2MWI5Njc0ZS4uMzE5ODM5 Yjg3ZDM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJz L2dwdS9kcm0vS2NvbmZpZwpAQCAtMjM5LDYgKzIzOSw3IEBAIGNvbmZpZyBEUk1fUkFERU9OCiAJ c2VsZWN0IEZXX0xPQURFUgogICAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVIKICAgICAgICAg c2VsZWN0IERSTV9UVE0KKwlzZWxlY3QgRFJNX1RUTV9IRUxQRVIKIAlzZWxlY3QgUE9XRVJfU1VQ UExZCiAJc2VsZWN0IEhXTU9OCiAJc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKQEAgLTI1 OSw2ICsyNjAsNyBAQCBjb25maWcgRFJNX0FNREdQVQogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgog CXNlbGVjdCBEUk1fU0NIRUQKIAlzZWxlY3QgRFJNX1RUTQorCXNlbGVjdCBEUk1fVFRNX0hFTFBF UgogCXNlbGVjdCBQT1dFUl9TVVBQTFkKIAlzZWxlY3QgSFdNT04KIAlzZWxlY3QgQkFDS0xJR0hU X0NMQVNTX0RFVklDRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2RtYV9idWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVm LmMKaW5kZXggNWI0NjVhYjc3NGQxLi5lNTkxOWVmY2E4NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwpAQCAtNDEsNDIgKzQxLDYgQEAKICNpbmNsdWRl IDxsaW51eC9kbWEtZmVuY2UtYXJyYXkuaD4KICNpbmNsdWRlIDxsaW51eC9wY2ktcDJwZG1hLmg+ CiAKLS8qKgotICogYW1kZ3B1X2dlbV9wcmltZV92bWFwIC0gJmRtYV9idWZfb3BzLnZtYXAgaW1w bGVtZW50YXRpb24KLSAqIEBvYmo6IEdFTSBCTwotICoKLSAqIFNldHMgdXAgYW4gaW4ta2VybmVs IHZpcnR1YWwgbWFwcGluZyBvZiB0aGUgQk8ncyBtZW1vcnkuCi0gKgotICogUmV0dXJuczoKLSAq IFRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIG1hcHBpbmcgb3IgYW4gZXJyb3IgcG9pbnRlci4K LSAqLwotdm9pZCAqYW1kZ3B1X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKQotewotCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOwot CWludCByZXQ7Ci0KLQlyZXQgPSB0dG1fYm9fa21hcCgmYm8tPnRibywgMCwgYm8tPnRiby5udW1f cGFnZXMsCi0JCQkgICZiby0+ZG1hX2J1Zl92bWFwKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gRVJS X1BUUihyZXQpOwotCi0JcmV0dXJuIGJvLT5kbWFfYnVmX3ZtYXAudmlydHVhbDsKLX0KLQotLyoq Ci0gKiBhbWRncHVfZ2VtX3ByaW1lX3Z1bm1hcCAtICZkbWFfYnVmX29wcy52dW5tYXAgaW1wbGVt ZW50YXRpb24KLSAqIEBvYmo6IEdFTSBCTwotICogQHZhZGRyOiBWaXJ0dWFsIGFkZHJlc3MgKHVu dXNlZCkKLSAqCi0gKiBUZWFycyBkb3duIHRoZSBpbi1rZXJuZWwgdmlydHVhbCBtYXBwaW5nIG9m IHRoZSBCTydzIG1lbW9yeS4KLSAqLwotdm9pZCBhbWRncHVfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCi17Ci0Jc3RydWN0IGFtZGdwdV9i byAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Ci0KLQl0dG1fYm9fa3VubWFwKCZiby0+ZG1h X2J1Zl92bWFwKTsKLX0KLQogLyoqCiAgKiBhbWRncHVfZ2VtX3ByaW1lX21tYXAgLSAmZHJtX2Ry aXZlci5nZW1fcHJpbWVfbW1hcCBpbXBsZW1lbnRhdGlvbgogICogQG9iajogR0VNIEJPCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuaAppbmRleCAyYzVjODRhMDZi YjkuLjM5YjViOTYxNmZkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2RtYV9idWYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZG1hX2J1Zi5oCkBAIC0zMSw4ICszMSw2IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYW1kZ3B1 X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgIHN0cnVj dCBkbWFfYnVmICpkbWFfYnVmKTsKIGJvb2wgYW1kZ3B1X2RtYWJ1Zl9pc194Z21pX2FjY2Vzc2li bGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgc3RydWN0IGFtZGdwdV9i byAqYm8pOwotdm9pZCAqYW1kZ3B1X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKTsKLXZvaWQgYW1kZ3B1X2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKIGludCBhbWRncHVfZ2VtX3ByaW1lX21tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCmluZGV4IGJlMDhhNjNlZjU4 Yy4uNTc2NjU5ODI3ZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5j CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPgogI2luY2x1 ZGUgPGRybS9kcm1fZGVidWdmcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3R0bV9oZWxwZXIu aD4KIAogI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUgImFtZGdwdV9kaXNwbGF5LmgiCkBA IC0yMjAsOCArMjIxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5j cyBhbWRncHVfZ2VtX29iamVjdF9mdW5jcyA9IHsKIAkub3BlbiA9IGFtZGdwdV9nZW1fb2JqZWN0 X29wZW4sCiAJLmNsb3NlID0gYW1kZ3B1X2dlbV9vYmplY3RfY2xvc2UsCiAJLmV4cG9ydCA9IGFt ZGdwdV9nZW1fcHJpbWVfZXhwb3J0LAotCS52bWFwID0gYW1kZ3B1X2dlbV9wcmltZV92bWFwLAot CS52dW5tYXAgPSBhbWRncHVfZ2VtX3ByaW1lX3Z1bm1hcCwKKwkudm1hcCA9IGRybV9nZW1fdHRt X3ZtYXAsCisJLnZ1bm1hcCA9IGRybV9nZW1fdHRtX3Z1bm1hcCwKIH07CiAKIC8qCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmggYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKaW5kZXggMTMyZTVmOTU1MTgwLi4w MTI5NmVmMGQ2NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0 LmgKQEAgLTEwMCw3ICsxMDAsNiBAQCBzdHJ1Y3QgYW1kZ3B1X2JvIHsKIAlzdHJ1Y3QgYW1kZ3B1 X2JvCQkqcGFyZW50OwogCXN0cnVjdCBhbWRncHVfYm8JCSpzaGFkb3c7CiAKLQlzdHJ1Y3QgdHRt X2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7CiAJc3RydWN0IGFtZGdwdV9tbgkJKm1uOwogCiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2N1cnNvci5jIGIvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfY3Vyc29yLmMKaW5kZXggZTBmNDYxMzkxOGFkLi43NDJkNDNhN2VkZjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2N1cnNvci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X2N1cnNvci5jCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyB2b2lk IGFzdF9jdXJzb3JfZmluaShzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKIAogCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGFzdC0+Y3Vyc29yLmdibyk7ICsraSkgewogCQlnYm8gPSBhc3QtPmN1 cnNvci5nYm9baV07Ci0JCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCBhc3QtPmN1cnNvci52YWRk cltpXSk7CisJCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCAmYXN0LT5jdXJzb3IubWFwW2ldKTsK IAkJZHJtX2dlbV92cmFtX3VucGluKGdibyk7CiAJCWRybV9nZW1fdnJhbV9wdXQoZ2JvKTsKIAl9 CkBAIC02MCw3ICs2MCw3IEBAIGludCBhc3RfY3Vyc29yX2luaXQoc3RydWN0IGFzdF9wcml2YXRl ICphc3QpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZhc3QtPmJhc2U7CiAJc2l6ZV90IHNp emUsIGk7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibzsKLQl2b2lkIF9faW9tZW0g KnZhZGRyOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJaW50IHJldDsKIAogCXNpemUgPSBy b3VuZHVwKEFTVF9IV0NfU0laRSArIEFTVF9IV0NfU0lHTkFUVVJFX1NJWkUsIFBBR0VfU0laRSk7 CkBAIC03NywxNiArNzcsMTUgQEAgaW50IGFzdF9jdXJzb3JfaW5pdChzdHJ1Y3QgYXN0X3ByaXZh dGUgKmFzdCkKIAkJCWRybV9nZW1fdnJhbV9wdXQoZ2JvKTsKIAkJCWdvdG8gZXJyX2RybV9nZW1f dnJhbV9wdXQ7CiAJCX0KLQkJdmFkZHIgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8pOwotCQlpZiAo SVNfRVJSKHZhZGRyKSkgewotCQkJcmV0ID0gUFRSX0VSUih2YWRkcik7CisJCXJldCA9IGRybV9n ZW1fdnJhbV92bWFwKGdibywgJm1hcCk7CisJCWlmIChyZXQpIHsKIAkJCWRybV9nZW1fdnJhbV91 bnBpbihnYm8pOwogCQkJZHJtX2dlbV92cmFtX3B1dChnYm8pOwogCQkJZ290byBlcnJfZHJtX2dl bV92cmFtX3B1dDsKIAkJfQogCiAJCWFzdC0+Y3Vyc29yLmdib1tpXSA9IGdibzsKLQkJYXN0LT5j dXJzb3IudmFkZHJbaV0gPSB2YWRkcjsKKwkJYXN0LT5jdXJzb3IubWFwW2ldID0gbWFwOwogCX0K IAogCXJldHVybiBkcm1tX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGV2LCBhc3RfY3Vyc29yX3JlbGVh c2UsIE5VTEwpOwpAQCAtOTUsNyArOTQsNyBAQCBpbnQgYXN0X2N1cnNvcl9pbml0KHN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0KQogCXdoaWxlIChpKSB7CiAJCS0taTsKIAkJZ2JvID0gYXN0LT5jdXJz b3IuZ2JvW2ldOwotCQlkcm1fZ2VtX3ZyYW1fdnVubWFwKGdibywgYXN0LT5jdXJzb3IudmFkZHJb aV0pOworCQlkcm1fZ2VtX3ZyYW1fdnVubWFwKGdibywgJmFzdC0+Y3Vyc29yLm1hcFtpXSk7CiAJ CWRybV9nZW1fdnJhbV91bnBpbihnYm8pOwogCQlkcm1fZ2VtX3ZyYW1fcHV0KGdibyk7CiAJfQpA QCAtMTcwLDYgKzE2OSw3IEBAIGludCBhc3RfY3Vyc29yX2JsaXQoc3RydWN0IGFzdF9wcml2YXRl ICphc3QsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmYXN0LT5iYXNlOwogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87CisJ c3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAlpbnQgcmV0OwogCXZvaWQgKnNyYzsKIAl2b2lkIF9f aW9tZW0gKmRzdDsKQEAgLTE4MywxOCArMTgzLDE3IEBAIGludCBhc3RfY3Vyc29yX2JsaXQoc3Ry dWN0IGFzdF9wcml2YXRlICphc3QsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQogCXJldCA9 IGRybV9nZW1fdnJhbV9waW4oZ2JvLCAwKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwotCXNy YyA9IGRybV9nZW1fdnJhbV92bWFwKGdibyk7Ci0JaWYgKElTX0VSUihzcmMpKSB7Ci0JCXJldCA9 IFBUUl9FUlIoc3JjKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8sICZtYXApOworCWlm IChyZXQpCiAJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV91bnBpbjsKLQl9CisJc3JjID0gbWFwLnZh ZGRyOyAvKiBUT0RPOiBVc2UgbWFwcGluZyBhYnN0cmFjdGlvbiBwcm9wZXJseSAqLwogCi0JZHN0 ID0gYXN0LT5jdXJzb3IudmFkZHJbYXN0LT5jdXJzb3IubmV4dF9pbmRleF07CisJZHN0ID0gYXN0 LT5jdXJzb3IubWFwW2FzdC0+Y3Vyc29yLm5leHRfaW5kZXhdLnZhZGRyX2lvbWVtOwogCiAJLyog ZG8gZGF0YSB0cmFuc2ZlciB0byBjdXJzb3IgQk8gKi8KIAl1cGRhdGVfY3Vyc29yX2ltYWdlKGRz dCwgc3JjLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwogCi0JZHJtX2dlbV92cmFtX3Z1bm1hcChn Ym8sIHNyYyk7CisJZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8sICZtYXApOwogCWRybV9nZW1fdnJh bV91bnBpbihnYm8pOwogCiAJcmV0dXJuIDA7CkBAIC0yNTcsNyArMjU2LDcgQEAgdm9pZCBhc3Rf Y3Vyc29yX3Nob3coc3RydWN0IGFzdF9wcml2YXRlICphc3QsIGludCB4LCBpbnQgeSwKIAl1OCBf X2lvbWVtICpzaWc7CiAJdTgganJlZzsKIAotCWRzdCA9IGFzdC0+Y3Vyc29yLnZhZGRyW2FzdC0+ Y3Vyc29yLm5leHRfaW5kZXhdOworCWRzdCA9IGFzdC0+Y3Vyc29yLm1hcFthc3QtPmN1cnNvci5u ZXh0X2luZGV4XS52YWRkcjsKIAogCXNpZyA9IGRzdCArIEFTVF9IV0NfU0laRTsKIAl3cml0ZWwo eCwgc2lnICsgQVNUX0hXQ19TSUdOQVRVUkVfWCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oCmluZGV4IDQ2 NzA0OWNhODQzMC4uZjk2MzE0MWRkODUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaApAQCAtMjgsMTAg KzI4LDExIEBACiAjaWZuZGVmIF9fQVNUX0RSVl9IX18KICNkZWZpbmUgX19BU1RfRFJWX0hfXwog Ci0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1 ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvaTJjLmg+CiAjaW5jbHVk ZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+CisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4KICNpbmNs dWRlIDxkcm0vZHJtX2NydGMuaD4KQEAgLTEzMSw3ICsxMzIsNyBAQCBzdHJ1Y3QgYXN0X3ByaXZh dGUgewogCiAJc3RydWN0IHsKIAkJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdib1tBU1Rf REVGQVVMVF9IV0NfTlVNXTsKLQkJdm9pZCBfX2lvbWVtICp2YWRkcltBU1RfREVGQVVMVF9IV0Nf TlVNXTsKKwkJc3RydWN0IGRtYV9idWZfbWFwIG1hcFtBU1RfREVGQVVMVF9IV0NfTlVNXTsKIAkJ dW5zaWduZWQgaW50IG5leHRfaW5kZXg7CiAJfSBjdXJzb3I7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCmluZGV4IDFk YTY3ZDM0ZTU1ZC4uYTg5YWQ0NTcwZTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKQEAgLTM2LDYgKzM2LDcgQEAK ICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4K ICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAu aD4KICNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgogI2luY2x1ZGUgPGxpbnV4L3BhZ2V2 ZWMuaD4KIApAQCAtMTIwNywyNiArMTIwOCwzMCBAQCB2b2lkIGRybV9nZW1fdW5waW4oc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopCiAKIHZvaWQgKmRybV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaikKIHsKLQl2b2lkICp2YWRkcjsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFw OworCWludCByZXQ7CiAKLQlpZiAob2JqLT5mdW5jcy0+dm1hcCkKLQkJdmFkZHIgPSBvYmotPmZ1 bmNzLT52bWFwKG9iaik7Ci0JZWxzZQotCQl2YWRkciA9IEVSUl9QVFIoLUVPUE5PVFNVUFApOwor CWlmICghb2JqLT5mdW5jcy0+dm1hcCkKKwkJcmV0dXJuIEVSUl9QVFIoLUVPUE5PVFNVUFApOwog Ci0JaWYgKCF2YWRkcikKLQkJdmFkZHIgPSBFUlJfUFRSKC1FTk9NRU0pOworCXJldCA9IG9iai0+ ZnVuY3MtPnZtYXAob2JqLCAmbWFwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gRVJSX1BUUihyZXQp OworCWVsc2UgaWYgKGRtYV9idWZfbWFwX2lzX251bGwoJm1hcCkpCisJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwogCi0JcmV0dXJuIHZhZGRyOworCXJldHVybiBtYXAudmFkZHI7CiB9CiAKIHZv aWQgZHJtX2dlbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRy KQogeworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFfQlVGX01BUF9JTklUX1ZBRERSKHZh ZGRyKTsKKwogCWlmICghdmFkZHIpCiAJCXJldHVybjsKIAogCWlmIChvYmotPmZ1bmNzLT52dW5t YXApCi0JCW9iai0+ZnVuY3MtPnZ1bm1hcChvYmosIHZhZGRyKTsKKwkJb2JqLT5mdW5jcy0+dnVu bWFwKG9iaiwgJm1hcCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW1fY21hX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5j CmluZGV4IGQ1Mjc0ODVlYTBiNy4uYjU3ZTNlOTIyMmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f Y21hX2hlbHBlci5jCkBAIC01MTksNiArNTE5LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dl bV9jbWFfcHJpbWVfbW1hcCk7CiAgKiBkcm1fZ2VtX2NtYV9wcmltZV92bWFwIC0gbWFwIGEgQ01B IEdFTSBvYmplY3QgaW50byB0aGUga2VybmVsJ3MgdmlydHVhbAogICogICAgIGFkZHJlc3Mgc3Bh Y2UKICAqIEBvYmo6IEdFTSBvYmplY3QKKyAqIEBtYXA6IFJldHVybnMgdGhlIGtlcm5lbCB2aXJ0 dWFsIGFkZHJlc3Mgb2YgdGhlIENNQSBHRU0gb2JqZWN0J3MgYmFja2luZworICogICAgICAgc3Rv cmUuCiAgKgogICogVGhpcyBmdW5jdGlvbiBtYXBzIGEgYnVmZmVyIGV4cG9ydGVkIHZpYSBEUk0g UFJJTUUgaW50byB0aGUga2VybmVsJ3MKICAqIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gU2luY2Ug dGhlIENNQSBidWZmZXJzIGFyZSBhbHJlYWR5IG1hcHBlZCBpbnRvIHRoZQpAQCAtNTI3LDEzICs1 MjksMTUgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCk7CiAgKiBk cml2ZXIncyAmZHJtX2dlbV9vYmplY3RfZnVuY3Mudm1hcCBjYWxsYmFjay4KICAqCiAgKiBSZXR1 cm5zOgotICogVGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIENNQSBHRU0gb2JqZWN0 J3MgYmFja2luZyBzdG9yZS4KKyAqIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBj b2RlIG90aGVyd2lzZS4KICAqLwotdm9pZCAqZHJtX2dlbV9jbWFfcHJpbWVfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCBkcm1fZ2VtX2NtYV9wcmltZV92bWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3Qg ZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2JqID0gdG9fZHJtX2dlbV9jbWFfb2JqKG9iaik7CiAK LQlyZXR1cm4gY21hX29iai0+dmFkZHI7CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgY21h X29iai0+dmFkZHIpOworCisJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2Vt X2NtYV9wcmltZV92bWFwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f c2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYwpp bmRleCBmYjExZGY3YWNlZDUuLjU1NTNmNThmNjhmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f c2htZW1faGVscGVyLmMKQEAgLTI1OCwxOSArMjU4LDI1IEBAIHZvaWQgZHJtX2dlbV9zaG1lbV91 bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2dl bV9zaG1lbV91bnBpbik7CiAKLXN0YXRpYyB2b2lkICpkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2Vk KHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pCitzdGF0aWMgaW50IGRybV9nZW1f c2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgc3Ry dWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAm c2htZW0tPmJhc2U7Ci0Jc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAlpbnQgcmV0ID0gMDsKIAot CWlmIChzaG1lbS0+dm1hcF91c2VfY291bnQrKyA+IDApCi0JCXJldHVybiBzaG1lbS0+dmFkZHI7 CisJaWYgKHNobWVtLT52bWFwX3VzZV9jb3VudCsrID4gMCkgeworCQlkbWFfYnVmX21hcF9zZXRf dmFkZHIobWFwLCBzaG1lbS0+dmFkZHIpOworCQlyZXR1cm4gMDsKKwl9CiAKIAlpZiAob2JqLT5p bXBvcnRfYXR0YWNoKSB7Ci0JCXJldCA9IGRtYV9idWZfdm1hcChvYmotPmltcG9ydF9hdHRhY2gt PmRtYWJ1ZiwgJm1hcCk7Ci0JCWlmICghcmV0KQotCQkJc2htZW0tPnZhZGRyID0gbWFwLnZhZGRy OworCQlyZXQgPSBkbWFfYnVmX3ZtYXAob2JqLT5pbXBvcnRfYXR0YWNoLT5kbWFidWYsIG1hcCk7 CisJCWlmICghcmV0KSB7CisJCQlpZiAoV0FSTl9PTihtYXAtPmlzX2lvbWVtKSkgeworCQkJCXJl dCA9IC1FSU87CisJCQkJZ290byBlcnJfcHV0X3BhZ2VzOworCQkJfQorCQkJc2htZW0tPnZhZGRy ID0gbWFwLT52YWRkcjsKKwkJfQogCX0gZWxzZSB7CiAJCXBncHJvdF90IHByb3QgPSBQQUdFX0tF Uk5FTDsKIApAQCAtMjg0LDYgKzI5MCw4IEBAIHN0YXRpYyB2b2lkICpkcm1fZ2VtX3NobWVtX3Zt YXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pCiAJCQkJICAgIFZN X01BUCwgcHJvdCk7CiAJCWlmICghc2htZW0tPnZhZGRyKQogCQkJcmV0ID0gLUVOT01FTTsKKwkJ ZWxzZQorCQkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgc2htZW0tPnZhZGRyKTsKIAl9CiAK IAlpZiAocmV0KSB7CkBAIC0yOTEsNyArMjk5LDcgQEAgc3RhdGljIHZvaWQgKmRybV9nZW1fc2ht ZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkKIAkJZ290 byBlcnJfcHV0X3BhZ2VzOwogCX0KIAotCXJldHVybiBzaG1lbS0+dmFkZHI7CisJcmV0dXJuIDA7 CiAKIGVycl9wdXRfcGFnZXM6CiAJaWYgKCFvYmotPmltcG9ydF9hdHRhY2gpCkBAIC0yOTksMTIg KzMwNywxNCBAQCBzdGF0aWMgdm9pZCAqZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQogZXJyX3plcm9fdXNlOgogCXNobWVtLT52bWFw X3VzZV9jb3VudCA9IDA7CiAKLQlyZXR1cm4gRVJSX1BUUihyZXQpOworCXJldHVybiByZXQ7CiB9 CiAKIC8qCiAgKiBkcm1fZ2VtX3NobWVtX3ZtYXAgLSBDcmVhdGUgYSB2aXJ0dWFsIG1hcHBpbmcg Zm9yIGEgc2htZW0gR0VNIG9iamVjdAogICogQHNobWVtOiBzaG1lbSBHRU0gb2JqZWN0CisgKiBA bWFwOiBSZXR1cm5zIHRoZSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBTSE1FTSBHRU0g b2JqZWN0J3MgYmFja2luZworICogICAgICAgc3RvcmUuCiAgKgogICogVGhpcyBmdW5jdGlvbiBt YWtlcyBzdXJlIHRoYXQgYSBjb250aWd1b3VzIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3MgbWFwcGlu ZwogICogZXhpc3RzIGZvciB0aGUgYnVmZmVyIGJhY2tpbmcgdGhlIHNobWVtIEdFTSBvYmplY3Qu CkBAIC0zMTgsMjYgKzMyOCwyNSBAQCBzdGF0aWMgdm9pZCAqZHJtX2dlbV9zaG1lbV92bWFwX2xv Y2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQogICogUmV0dXJuczoKICAq IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqLwot dm9pZCAqZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoraW50 IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRt YV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSA9 IHRvX2RybV9nZW1fc2htZW1fb2JqKG9iaik7Ci0Jdm9pZCAqdmFkZHI7CiAJaW50IHJldDsKIAog CXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmc2htZW0tPnZtYXBfbG9jayk7CiAJaWYg KHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQl2YWRkciA9IGRybV9nZW1fc2htZW1fdm1h cF9sb2NrZWQoc2htZW0pOworCQlyZXR1cm4gcmV0OworCXJldCA9IGRybV9nZW1fc2htZW1fdm1h cF9sb2NrZWQoc2htZW0sIG1hcCk7CiAJbXV0ZXhfdW5sb2NrKCZzaG1lbS0+dm1hcF9sb2NrKTsK IAotCXJldHVybiB2YWRkcjsKKwlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZ2Vt X3NobWVtX3ZtYXApOwogCi1zdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQo c3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkKK3N0YXRpYyB2b2lkIGRybV9nZW1f c2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLAor CQkJCQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiA9ICZzaG1lbS0+YmFzZTsKLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwID0gRE1BX0JVRl9N QVBfSU5JVF9WQUREUihzaG1lbS0+dmFkZHIpOwogCiAJaWYgKFdBUk5fT05fT05DRSghc2htZW0t PnZtYXBfdXNlX2NvdW50KSkKIAkJcmV0dXJuOwpAQCAtMzQ2LDcgKzM1NSw3IEBAIHN0YXRpYyB2 b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmpl Y3QgKnNobWVtKQogCQlyZXR1cm47CiAKIAlpZiAob2JqLT5pbXBvcnRfYXR0YWNoKQotCQlkbWFf YnVmX3Z1bm1hcChvYmotPmltcG9ydF9hdHRhY2gtPmRtYWJ1ZiwgJm1hcCk7CisJCWRtYV9idWZf dnVubWFwKG9iai0+aW1wb3J0X2F0dGFjaC0+ZG1hYnVmLCBtYXApOwogCWVsc2UKIAkJdnVubWFw KHNobWVtLT52YWRkcik7CiAKQEAgLTM1Nyw2ICszNjYsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZ2Vt X3NobWVtX3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkK IC8qCiAgKiBkcm1fZ2VtX3NobWVtX3Z1bm1hcCAtIFVubWFwIGEgdmlydHVhbCBtYXBwaW5nIGZv IGEgc2htZW0gR0VNIG9iamVjdAogICogQHNobWVtOiBzaG1lbSBHRU0gb2JqZWN0CisgKiBAbWFw OiBLZXJuZWwgdmlydHVhbCBhZGRyZXNzIHdoZXJlIHRoZSBTSE1FTSBHRU0gb2JqZWN0IHdhcyBt YXBwZWQKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGNsZWFucyB1cCBhIGtlcm5lbCB2aXJ0dWFsIGFk ZHJlc3MgbWFwcGluZyBhY3F1aXJlZCBieQogICogZHJtX2dlbV9zaG1lbV92bWFwKCkuIFRoZSBt YXBwaW5nIGlzIG9ubHkgcmVtb3ZlZCB3aGVuIHRoZSB1c2UgY291bnQgZHJvcHMgdG8KQEAgLTM2 NiwxMiArMzc2LDEyIEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChz dHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQogICogYWxzbyBiZSBjYWxsZWQgYnkg ZHJpdmVycyBkaXJlY3RseSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGhpZGUgdGhlCiAgKiBkaWZm ZXJlbmNlcyBiZXR3ZWVuIGRtYS1idWYgaW1wb3J0ZWQgYW5kIG5hdGl2ZWx5IGFsbG9jYXRlZCBv YmplY3RzLgogICovCi12b2lkIGRybV9nZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqLCB2b2lkICp2YWRkcikKK3ZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVj dCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0gPSB0b19kcm1fZ2VtX3NobWVtX29iaihvYmop OwogCiAJbXV0ZXhfbG9jaygmc2htZW0tPnZtYXBfbG9jayk7Ci0JZHJtX2dlbV9zaG1lbV92dW5t YXBfbG9ja2VkKHNobWVtKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQoc2htZW0sIG1h cCk7CiAJbXV0ZXhfdW5sb2NrKCZzaG1lbS0+dm1hcF9sb2NrKTsKIH0KIEVYUE9SVF9TWU1CT0wo ZHJtX2dlbV9zaG1lbV92dW5tYXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9n ZW1fdnJhbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMK aW5kZXggMmQ1ZWQzMDUxOGYxLi40ZDg1NTNiMjg1NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f dnJhbV9oZWxwZXIuYwpAQCAtMSw1ICsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9yLWxhdGVyCiAKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1Z2ZzLmg+CkBA IC0xMTMsOCArMTE0LDggQEAgc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2NsZWFudXAoc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKIAkgKiB1cDsgb25seSByZWxlYXNlIHRoZSBHRU0g b2JqZWN0LgogCSAqLwogCi0JV0FSTl9PTihnYm8tPmttYXBfdXNlX2NvdW50KTsKLQlXQVJOX09O KGdiby0+a21hcC52aXJ0dWFsKTsKKwlXQVJOX09OKGdiby0+dm1hcF91c2VfY291bnQpOworCVdB Uk5fT04oZG1hX2J1Zl9tYXBfaXNfc2V0KCZnYm8tPm1hcCkpOwogCiAJZHJtX2dlbV9vYmplY3Rf cmVsZWFzZSgmZ2JvLT5iby5iYXNlKTsKIH0KQEAgLTM4MiwyOSArMzgzLDM3IEBAIGludCBkcm1f Z2VtX3ZyYW1fdW5waW4oc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKIH0KIEVYUE9S VF9TWU1CT0woZHJtX2dlbV92cmFtX3VucGluKTsKIAotc3RhdGljIHZvaWQgKmRybV9nZW1fdnJh bV9rbWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKQorc3RhdGljIGlu dCBkcm1fZ2VtX3ZyYW1fa21hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdi bywKKwkJCQkgICAgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJaW50IHJldDsKLQlzdHJ1 Y3QgdHRtX2JvX2ttYXBfb2JqICprbWFwID0gJmdiby0+a21hcDsKLQlib29sIGlzX2lvbWVtOwog Ci0JaWYgKGdiby0+a21hcF91c2VfY291bnQgPiAwKQorCWlmIChnYm8tPnZtYXBfdXNlX2NvdW50 ID4gMCkKIAkJZ290byBvdXQ7CiAKLQlyZXQgPSB0dG1fYm9fa21hcCgmZ2JvLT5ibywgMCwgZ2Jv LT5iby5udW1fcGFnZXMsIGttYXApOworCXJldCA9IHR0bV9ib192bWFwKCZnYm8tPmJvLCAmZ2Jv LT5tYXApOwogCWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7CisJCXJldHVybiByZXQ7 CiAKIG91dDoKLQkrK2diby0+a21hcF91c2VfY291bnQ7Ci0JcmV0dXJuIHR0bV9rbWFwX29ial92 aXJ0dWFsKGttYXAsICZpc19pb21lbSk7CisJKytnYm8tPnZtYXBfdXNlX2NvdW50OworCSptYXAg PSBnYm8tPm1hcDsKKworCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fZ2VtX3ZyYW1f a3VubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKQorc3RhdGljIHZv aWQgZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3Qg KmdibywKKwkJCQkgICAgICAgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7Ci0JaWYgKFdBUk5f T05fT05DRSghZ2JvLT5rbWFwX3VzZV9jb3VudCkpCisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGdiby0+Ym8uYmFzZS5kZXY7CisKKwlpZiAoZHJtX1dBUk5fT05fT05DRShkZXYsICFnYm8tPnZt YXBfdXNlX2NvdW50KSkKIAkJcmV0dXJuOwotCWlmICgtLWdiby0+a21hcF91c2VfY291bnQgPiAw KQorCisJaWYgKGRybV9XQVJOX09OX09OQ0UoZGV2LCAhZG1hX2J1Zl9tYXBfaXNfZXF1YWwoJmdi by0+bWFwLCBtYXApKSkKKwkJcmV0dXJuOyAvKiBCVUc6IG1hcCBub3QgbWFwcGVkIGZyb20gdGhp cyBCTyAqLworCisJaWYgKC0tZ2JvLT52bWFwX3VzZV9jb3VudCA+IDApCiAJCXJldHVybjsKIAog CS8qCkBAIC00MTgsNyArNDI3LDkgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2t1bm1hcF9s b2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKIC8qKgogICogZHJtX2dlbV92 cmFtX3ZtYXAoKSAtIFBpbnMgYW5kIG1hcHMgYSBHRU0gVlJBTSBvYmplY3QgaW50byBrZXJuZWwg YWRkcmVzcwogICogICAgICAgICAgICAgICAgICAgICAgIHNwYWNlCi0gKiBAZ2JvOglUaGUgR0VN IFZSQU0gb2JqZWN0IHRvIG1hcAorICogQGdibzogVGhlIEdFTSBWUkFNIG9iamVjdCB0byBtYXAK KyAqIEBtYXA6IFJldHVybnMgdGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFZSQU0g R0VNIG9iamVjdCdzIGJhY2tpbmcKKyAqICAgICAgIHN0b3JlLgogICoKICAqIFRoZSB2bWFwIGZ1 bmN0aW9uIHBpbnMgYSBHRU0gVlJBTSBvYmplY3QgdG8gaXRzIGN1cnJlbnQgbG9jYXRpb24sIGVp dGhlcgogICogc3lzdGVtIG9yIHZpZGVvIG1lbW9yeSwgYW5kIG1hcHMgaXRzIGJ1ZmZlciBpbnRv IGtlcm5lbCBhZGRyZXNzIHNwYWNlLgpAQCAtNDI3LDQ4ICs0MzgsNDQgQEAgc3RhdGljIHZvaWQg ZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdi bykKICAqIHVubWFwIGFuZCB1bnBpbiB0aGUgR0VNIFZSQU0gb2JqZWN0LgogICoKICAqIFJldHVy bnM6Ci0gKiBUaGUgYnVmZmVyJ3MgdmlydHVhbCBhZGRyZXNzIG9uIHN1Y2Nlc3MsIG9yCi0gKiBh biBFUlJfUFRSKCktZW5jb2RlZCBlcnJvciBjb2RlIG90aGVyd2lzZS4KKyAqIDAgb24gc3VjY2Vz cywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotdm9pZCAqZHJtX2dl bV92cmFtX3ZtYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKK2ludCBkcm1fZ2Vt X3ZyYW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvLCBzdHJ1Y3QgZG1hX2J1 Zl9tYXAgKm1hcCkKIHsKIAlpbnQgcmV0OwotCXZvaWQgKmJhc2U7CiAKIAlyZXQgPSB0dG1fYm9f cmVzZXJ2ZSgmZ2JvLT5ibywgdHJ1ZSwgZmFsc2UsIE5VTEwpOwogCWlmIChyZXQpCi0JCXJldHVy biBFUlJfUFRSKHJldCk7CisJCXJldHVybiByZXQ7CiAKIAlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGlu X2xvY2tlZChnYm8sIDApOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3R0bV9ib191bnJlc2VydmU7 Ci0JYmFzZSA9IGRybV9nZW1fdnJhbV9rbWFwX2xvY2tlZChnYm8pOwotCWlmIChJU19FUlIoYmFz ZSkpIHsKLQkJcmV0ID0gUFRSX0VSUihiYXNlKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1fa21hcF9s b2NrZWQoZ2JvLCBtYXApOworCWlmIChyZXQpCiAJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV91bnBp bl9sb2NrZWQ7Ci0JfQogCiAJdHRtX2JvX3VucmVzZXJ2ZSgmZ2JvLT5ibyk7CiAKLQlyZXR1cm4g YmFzZTsKKwlyZXR1cm4gMDsKIAogZXJyX2RybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQ6CiAJZHJt X2dlbV92cmFtX3VucGluX2xvY2tlZChnYm8pOwogZXJyX3R0bV9ib191bnJlc2VydmU6CiAJdHRt X2JvX3VucmVzZXJ2ZSgmZ2JvLT5ibyk7Ci0JcmV0dXJuIEVSUl9QVFIocmV0KTsKKwlyZXR1cm4g cmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZyYW1fdm1hcCk7CiAKIC8qKgogICogZHJt X2dlbV92cmFtX3Z1bm1hcCgpIC0gVW5tYXBzIGFuZCB1bnBpbnMgYSBHRU0gVlJBTSBvYmplY3QK LSAqIEBnYm86CVRoZSBHRU0gVlJBTSBvYmplY3QgdG8gdW5tYXAKLSAqIEB2YWRkcjoJVGhlIG1h cHBpbmcncyBiYXNlIGFkZHJlc3MgYXMgcmV0dXJuZWQgYnkgZHJtX2dlbV92cmFtX3ZtYXAoKQor ICogQGdibzogVGhlIEdFTSBWUkFNIG9iamVjdCB0byB1bm1hcAorICogQG1hcDogS2VybmVsIHZp cnR1YWwgYWRkcmVzcyB3aGVyZSB0aGUgVlJBTSBHRU0gb2JqZWN0IHdhcyBtYXBwZWQKICAqCiAg KiBBIGNhbGwgdG8gZHJtX2dlbV92cmFtX3Z1bm1hcCgpIHVubWFwcyBhbmQgdW5waW5zIGEgR0VN IFZSQU0gYnVmZmVyLiBTZWUKICAqIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkcm1fZ2VtX3ZyYW1f dm1hcCgpIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICovCi12b2lkIGRybV9nZW1fdnJhbV92dW5t YXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgdm9pZCAqdmFkZHIpCit2b2lkIGRy bV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgc3RydWN0 IGRtYV9idWZfbWFwICptYXApCiB7CiAJaW50IHJldDsKIApAQCAtNDc2LDcgKzQ4Myw3IEBAIHZv aWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvLCB2 b2lkICp2YWRkcikKIAlpZiAoV0FSTl9PTkNFKHJldCwgInR0bV9ib19yZXNlcnZlX2ZhaWxlZCgp OiByZXQ9JWRcbiIsIHJldCkpCiAJCXJldHVybjsKIAotCWRybV9nZW1fdnJhbV9rdW5tYXBfbG9j a2VkKGdibyk7CisJZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoZ2JvLCBtYXApOwogCWRybV9n ZW1fdnJhbV91bnBpbl9sb2NrZWQoZ2JvKTsKIAogCXR0bV9ib191bnJlc2VydmUoJmdiby0+Ym8p OwpAQCAtNTY3LDE1ICs1NzQsMTMgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2JvX2RyaXZl cl9tb3ZlX25vdGlmeShzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvLAogCQkJCQkgICAg ICAgYm9vbCBldmljdCwKIAkJCQkJICAgICAgIHN0cnVjdCB0dG1fcmVzb3VyY2UgKm5ld19tZW0p CiB7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiAqa21hcCA9ICZnYm8tPmttYXA7CisJc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9ICZnYm8tPmJvOworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBiby0+YmFzZS5kZXY7CiAKLQlpZiAoV0FSTl9PTl9PTkNFKGdiby0+a21hcF91c2VfY291 bnQpKQorCWlmIChkcm1fV0FSTl9PTl9PTkNFKGRldiwgZ2JvLT52bWFwX3VzZV9jb3VudCkpCiAJ CXJldHVybjsKIAotCWlmICgha21hcC0+dmlydHVhbCkKLQkJcmV0dXJuOwotCXR0bV9ib19rdW5t YXAoa21hcCk7Ci0Ja21hcC0+dmlydHVhbCA9IE5VTEw7CisJdHRtX2JvX3Z1bm1hcChibywgJmdi by0+bWFwKTsKIH0KIAogc3RhdGljIGludCBkcm1fZ2VtX3ZyYW1fYm9fZHJpdmVyX21vdmUoc3Ry dWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywKQEAgLTgzMiwzNyArODM3LDMzIEBAIHN0YXRp YyB2b2lkIGRybV9nZW1fdnJhbV9vYmplY3RfdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpn ZW0pCiB9CiAKIC8qKgotICogZHJtX2dlbV92cmFtX29iamVjdF92bWFwKCkgLSBcCi0JSW1wbGVt ZW50cyAmc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzLnZtYXAKLSAqIEBnZW06CVRoZSBHRU0g b2JqZWN0IHRvIG1hcAorICogZHJtX2dlbV92cmFtX29iamVjdF92bWFwKCkgLQorICoJSW1wbGVt ZW50cyAmc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzLnZtYXAKKyAqIEBnZW06IFRoZSBHRU0g b2JqZWN0IHRvIG1hcAorICogQG1hcDogUmV0dXJucyB0aGUga2VybmVsIHZpcnR1YWwgYWRkcmVz cyBvZiB0aGUgVlJBTSBHRU0gb2JqZWN0J3MgYmFja2luZworICogICAgICAgc3RvcmUuCiAgKgog ICogUmV0dXJuczoKLSAqIFRoZSBidWZmZXJzIHZpcnR1YWwgYWRkcmVzcyBvbiBzdWNjZXNzLCBv cgotICogTlVMTCBvdGhlcndpc2UuCisgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJy b3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyB2b2lkICpkcm1fZ2VtX3ZyYW1fb2JqZWN0 X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pCitzdGF0aWMgaW50IGRybV9nZW1fdnJh bV9vYmplY3Rfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3RydWN0IGRtYV9idWZf bWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyA9IGRybV9nZW1f dnJhbV9vZl9nZW0oZ2VtKTsKLQl2b2lkICpiYXNlOwogCi0JYmFzZSA9IGRybV9nZW1fdnJhbV92 bWFwKGdibyk7Ci0JaWYgKElTX0VSUihiYXNlKSkKLQkJcmV0dXJuIE5VTEw7Ci0JcmV0dXJuIGJh c2U7CisJcmV0dXJuIGRybV9nZW1fdnJhbV92bWFwKGdibywgbWFwKTsKIH0KIAogLyoqCi0gKiBk cm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcCgpIC0gXAotCUltcGxlbWVudHMgJnN0cnVjdCBkcm1f Z2VtX29iamVjdF9mdW5jcy52dW5tYXAKLSAqIEBnZW06CVRoZSBHRU0gb2JqZWN0IHRvIHVubWFw Ci0gKiBAdmFkZHI6CVRoZSBtYXBwaW5nJ3MgYmFzZSBhZGRyZXNzCisgKiBkcm1fZ2VtX3ZyYW1f b2JqZWN0X3Z1bm1hcCgpIC0KKyAqCUltcGxlbWVudHMgJnN0cnVjdCBkcm1fZ2VtX29iamVjdF9m dW5jcy52dW5tYXAKKyAqIEBnZW06IFRoZSBHRU0gb2JqZWN0IHRvIHVubWFwCisgKiBAbWFwOiBL ZXJuZWwgdmlydHVhbCBhZGRyZXNzIHdoZXJlIHRoZSBWUkFNIEdFTSBvYmplY3Qgd2FzIG1hcHBl ZAogICovCi1zdGF0aWMgdm9pZCBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbSwKLQkJCQkgICAgICAgdm9pZCAqdmFkZHIpCitzdGF0aWMgdm9pZCBk cm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3Ry dWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdi byA9IGRybV9nZW1fdnJhbV9vZl9nZW0oZ2VtKTsKIAotCWRybV9nZW1fdnJhbV92dW5tYXAoZ2Jv LCB2YWRkcik7CisJZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8sIG1hcCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAppbmRleCA5NjgyYzI2ZDg5YmIuLmY1YmU2Mjdl MWRlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5oCkBAIC01MSw3ICs1MSw3 IEBAIGludCBldG5hdml2X2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIGludCBldG5hdml2X2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiBpbnQgZXRuYXZpdl9nZW1fbW1hcF9vZmZzZXQoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHU2NCAqb2Zmc2V0KTsKIHN0cnVjdCBzZ190YWJsZSAq ZXRuYXZpdl9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KTsKLXZvaWQgKmV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOworaW50IGV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIGludCBldG5hdml2X2dlbV9wcmltZV9tbWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAogCQkJICAgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEpOwogc3RydWN0IGRybV9nZW1fb2JqZWN0ICpldG5hdml2X2dlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZp di9ldG5hdml2X2dlbV9wcmltZS5jCmluZGV4IGE2ZDk5MzJhMzJhZS4uYmMyNTQzZGQ5ODdkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbV9wcmltZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1lLmMKQEAgLTIyLDkg KzIyLDE0IEBAIHN0cnVjdCBzZ190YWJsZSAqZXRuYXZpdl9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxl KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9f c2cob2JqLT5kZXYsIGV0bmF2aXZfb2JqLT5wYWdlcywgbnBhZ2VzKTsKIH0KIAotdm9pZCAqZXRu YXZpdl9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCBldG5h dml2X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1h X2J1Zl9tYXAgKm1hcCkKIHsKLQlyZXR1cm4gZXRuYXZpdl9nZW1fdm1hcChvYmopOworCXZvaWQg KnZhZGRyID0gZXRuYXZpdl9nZW1fdm1hcChvYmopOworCWlmICghdmFkZHIpCisJCXJldHVybiAt RU5PTUVNOworCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAsIHZhZGRyKTsKKworCXJldHVybiAw OwogfQogCiBpbnQgZXRuYXZpdl9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jCmluZGV4IDExMjIzZmUzNDhkZi4uODMyZTUyODBh NmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMKQEAgLTE4MiwxNCArMTgyLDE0IEBAIHN0YXRp YyBpbnQgbGltYV9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiBk cm1fZ2VtX3NobWVtX3BpbihvYmopOwogfQogCi1zdGF0aWMgdm9pZCAqbGltYV9nZW1fdm1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBpbnQgbGltYV9nZW1fdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3Ry dWN0IGxpbWFfYm8gKmJvID0gdG9fbGltYV9ibyhvYmopOwogCiAJaWYgKGJvLT5oZWFwX3NpemUp Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVy biBkcm1fZ2VtX3NobWVtX3ZtYXAob2JqKTsKKwlyZXR1cm4gZHJtX2dlbV9zaG1lbV92bWFwKG9i aiwgbWFwKTsKIH0KIAogc3RhdGljIGludCBsaW1hX2dlbV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFf c2NoZWQuYwppbmRleCBkYzZkZjllOWE0MGQuLmEwNzBhODVmOGYzNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1h L2xpbWFfc2NoZWQuYwpAQCAtMSw2ICsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIE9SIE1JVAogLyogQ29weXJpZ2h0IDIwMTctMjAxOSBRaWFuZyBZdSA8eXVxODI1 QGdtYWlsLmNvbT4gKi8KIAorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVk ZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxs aW51eC92bWFsbG9jLmg+CkBAIC0zMDMsNiArMzA0LDggQEAgc3RhdGljIHZvaWQgbGltYV9zY2hl ZF9idWlsZF9lcnJvcl90YXNrX2xpc3Qoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaykKIAlz dHJ1Y3QgbGltYV9kdW1wX2NodW5rX2J1ZmZlciAqYnVmZmVyX2NodW5rOwogCXUzMiBzaXplLCB0 YXNrX3NpemUsIG1lbV9zaXplOwogCWludCBpOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CisJ aW50IHJldDsKIAogCW11dGV4X2xvY2soJmRldi0+ZXJyb3JfdGFza19saXN0X2xvY2spOwogCkBA IC0zODgsMTUgKzM5MSwxNSBAQCBzdGF0aWMgdm9pZCBsaW1hX3NjaGVkX2J1aWxkX2Vycm9yX3Rh c2tfbGlzdChzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKQogCQl9IGVsc2UgewogCQkJYnVm ZmVyX2NodW5rLT5zaXplID0gbGltYV9ib19zaXplKGJvKTsKIAotCQkJZGF0YSA9IGRybV9nZW1f c2htZW1fdm1hcCgmYm8tPmJhc2UuYmFzZSk7Ci0JCQlpZiAoSVNfRVJSX09SX05VTEwoZGF0YSkp IHsKKwkJCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcCgmYm8tPmJhc2UuYmFzZSwgJm1hcCk7CisJ CQlpZiAocmV0KSB7CiAJCQkJa3ZmcmVlKGV0KTsKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAotCQkJ bWVtY3B5KGJ1ZmZlcl9jaHVuayArIDEsIGRhdGEsIGJ1ZmZlcl9jaHVuay0+c2l6ZSk7CisJCQlt ZW1jcHkoYnVmZmVyX2NodW5rICsgMSwgbWFwLnZhZGRyLCBidWZmZXJfY2h1bmstPnNpemUpOwog Ci0JCQlkcm1fZ2VtX3NobWVtX3Z1bm1hcCgmYm8tPmJhc2UuYmFzZSwgZGF0YSk7CisJCQlkcm1f Z2VtX3NobWVtX3Z1bm1hcCgmYm8tPmJhc2UuYmFzZSwgJm1hcCk7CiAJCX0KIAogCQlidWZmZXJf Y2h1bmsgPSAodm9pZCAqKShidWZmZXJfY2h1bmsgKyAxKSArIGJ1ZmZlcl9jaHVuay0+c2l6ZTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jIGIvZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMKaW5kZXggMzg2NzJmOWU1YzRmLi44 ZWY3Njc2OWI5N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBf bW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCkBAIC05 LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxp bnV4L2RtYS1idWYtbWFwLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuaD4KQEAgLTE1NTYsMTUgKzE1 NTcsMTggQEAgbWdhZzIwMF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2LCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJICAgICAgc3RydWN0IGRybV9yZWN0ICpjbGlw KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmbWRldi0+YmFzZTsKKwlzdHJ1Y3QgZG1h X2J1Zl9tYXAgbWFwOwogCXZvaWQgKnZtYXA7CisJaW50IHJldDsKIAotCXZtYXAgPSBkcm1fZ2Vt X3NobWVtX3ZtYXAoZmItPm9ialswXSk7Ci0JaWYgKGRybV9XQVJOX09OKGRldiwgIXZtYXApKQor CXJldCA9IGRybV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdLCAmbWFwKTsKKwlpZiAoZHJtX1dB Uk5fT04oZGV2LCByZXQpKQogCQlyZXR1cm47IC8qIEJVRzogU0hNRU0gQk8gc2hvdWxkIGFsd2F5 cyBiZSB2bWFwcGVkICovCisJdm1hcCA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcg YWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCWRybV9mYl9tZW1jcHlfZHN0Y2xpcChtZGV2LT52 cmFtLCB2bWFwLCBmYiwgY2xpcCk7CiAKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBd LCB2bWFwKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCAmbWFwKTsKIAogCS8q IEFsd2F5cyBzY2Fub3V0IGltYWdlIGF0IFZSQU0gb2Zmc2V0IDAgKi8KIAltZ2FnMjAwX3NldF9z dGFydGFkZChtZGV2LCAodTMyKTApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWcKaW5kZXggNWRlYzFl NTY5NGI3Li45NDM2MzEwZDA4NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZwpAQCAtNiw2ICs2 LDcgQEAgY29uZmlnIERSTV9OT1VWRUFVCiAJc2VsZWN0IEZXX0xPQURFUgogCXNlbGVjdCBEUk1f S01TX0hFTFBFUgogCXNlbGVjdCBEUk1fVFRNCisJc2VsZWN0IERSTV9UVE1fSEVMUEVSCiAJc2Vs ZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgaWYgRFJNX05PVVZFQVVfQkFDS0xJR0hUCiAJc2Vs ZWN0IEFDUElfVklERU8gaWYgQUNQSSAmJiBYODYgJiYgQkFDS0xJR0hUX0NMQVNTX0RFVklDRSAm JiBJTlBVVAogCXNlbGVjdCBYODZfUExBVEZPUk1fREVWSUNFUyBpZiBBQ1BJICYmIFg4NgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9iby5oIGIvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbm91dmVhdV9iby5oCmluZGV4IDY0MWVmNjI5OGEwZS4uNjA0NWI4NWE3 NjJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9iby5oCkBAIC0zOSw4ICszOSw2IEBA IHN0cnVjdCBub3V2ZWF1X2JvIHsKIAl1bnNpZ25lZCBtb2RlOwogCiAJc3RydWN0IG5vdXZlYXVf ZHJtX3RpbGUgKnRpbGU7Ci0KLQlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqIGRtYV9idWZfdm1hcDsK IH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vdXZlYXVfYm8gKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfZ2VtLmMKaW5kZXggOWE0MjFjMzk0OWRlLi5mOTQyYjUyNmIwYTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYwpAQCAtMjQsNiArMjQsOCBAQAogICoKICAq LwogCisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fdHRtX2hlbHBlci5oPgorCiAjaW5jbHVkZSAibm91 dmVhdV9kcnYuaCIKICNpbmNsdWRlICJub3V2ZWF1X2RtYS5oIgogI2luY2x1ZGUgIm5vdXZlYXVf ZmVuY2UuaCIKQEAgLTE3Niw4ICsxNzgsOCBAQCBjb25zdCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Rf ZnVuY3Mgbm91dmVhdV9nZW1fb2JqZWN0X2Z1bmNzID0gewogCS5waW4gPSBub3V2ZWF1X2dlbV9w cmltZV9waW4sCiAJLnVucGluID0gbm91dmVhdV9nZW1fcHJpbWVfdW5waW4sCiAJLmdldF9zZ190 YWJsZSA9IG5vdXZlYXVfZ2VtX3ByaW1lX2dldF9zZ190YWJsZSwKLQkudm1hcCA9IG5vdXZlYXVf Z2VtX3ByaW1lX3ZtYXAsCi0JLnZ1bm1hcCA9IG5vdXZlYXVfZ2VtX3ByaW1lX3Z1bm1hcCwKKwku dm1hcCA9IGRybV9nZW1fdHRtX3ZtYXAsCisJLnZ1bm1hcCA9IGRybV9nZW1fdHRtX3Z1bm1hcCwK IH07CiAKIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9n ZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKaW5kZXggYjM1YzE4 MDMyMmUyLi4zYjkxOWM3YzkzMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0u aApAQCAtMzcsNyArMzcsNSBAQCBleHRlcm4gdm9pZCBub3V2ZWF1X2dlbV9wcmltZV91bnBpbihz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKik7CiBleHRlcm4gc3RydWN0IHNnX3RhYmxlICpub3V2ZWF1 X2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICopOwogZXh0ZXJu IHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbm91dmVhdV9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxl KAogCXN0cnVjdCBkcm1fZGV2aWNlICosIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwgc3Ry dWN0IHNnX3RhYmxlICopOwotZXh0ZXJuIHZvaWQgKm5vdXZlYXVfZ2VtX3ByaW1lX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICopOwotZXh0ZXJuIHZvaWQgbm91dmVhdV9nZW1fcHJpbWVfdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqLCB2b2lkICopOwogCiAjZW5kaWYKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYwppbmRleCBhODI2NGFlYmYzZDQuLjJmMTZiNTI0 OTI4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9wcmltZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYwpAQCAtMzUsMjYg KzM1LDYgQEAgc3RydWN0IHNnX3RhYmxlICpub3V2ZWF1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIGRybV9wcmltZV9wYWdlc190b19z ZyhvYmotPmRldiwgbnZiby0+Ym8udHRtLT5wYWdlcywgbnBhZ2VzKTsKIH0KIAotdm9pZCAqbm91 dmVhdV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKLXsKLQlzdHJ1 Y3Qgbm91dmVhdV9ibyAqbnZibyA9IG5vdXZlYXVfZ2VtX29iamVjdChvYmopOwotCWludCByZXQ7 Ci0KLQlyZXQgPSB0dG1fYm9fa21hcCgmbnZiby0+Ym8sIDAsIG52Ym8tPmJvLm51bV9wYWdlcywK LQkJCSAgJm52Ym8tPmRtYV9idWZfdm1hcCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKLQotCXJldHVybiBudmJvLT5kbWFfYnVmX3ZtYXAudmlydHVhbDsKLX0KLQotdm9pZCBu b3V2ZWF1X2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQg KnZhZGRyKQotewotCXN0cnVjdCBub3V2ZWF1X2JvICpudmJvID0gbm91dmVhdV9nZW1fb2JqZWN0 KG9iaik7Ci0KLQl0dG1fYm9fa3VubWFwKCZudmJvLT5kbWFfYnVmX3ZtYXApOwotfQotCiBzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm5vdXZlYXVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJCSBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICph dHRhY2gsCiAJCQkJCQkJIHN0cnVjdCBzZ190YWJsZSAqc2cpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5jIGIvZHJpdmVycy9ncHUvZHJtL3Bh bmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYwppbmRleCBmZGJjOGQ5NDkxMzUuLjVhYjAzZDYwNWY1 NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5jCkBAIC01 LDYgKzUsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5oPgogI2luY2x1 ZGUgPGRybS9wYW5mcm9zdF9kcm0uaD4KICNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+Cisj aW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4K ICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgpA QCAtNzIsNiArNzMsNyBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X3BlcmZjbnRfZW5hYmxlX2xvY2tl ZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKIHsKIAlzdHJ1Y3QgcGFuZnJvc3RfZmls ZV9wcml2ICp1c2VyID0gZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKIAlzdHJ1Y3QgcGFuZnJvc3Rf cGVyZmNudCAqcGVyZmNudCA9IHBmZGV2LT5wZXJmY250OworCXN0cnVjdCBkbWFfYnVmX21hcCBt YXA7CiAJc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpibzsKIAl1MzIgY2ZnLCBhczsKIAlp bnQgcmV0OwpAQCAtMTAzLDExICsxMDUsMTAgQEAgc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250 X2VuYWJsZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJCWdvdG8gZXJy X2Nsb3NlX2JvOwogCX0KIAotCXBlcmZjbnQtPmJ1ZiA9IGRybV9nZW1fc2htZW1fdm1hcCgmYm8t PmJhc2UpOwotCWlmIChJU19FUlIocGVyZmNudC0+YnVmKSkgewotCQlyZXQgPSBQVFJfRVJSKHBl cmZjbnQtPmJ1Zik7CisJcmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwKCZiby0+YmFzZSwgJm1hcCk7 CisJaWYgKHJldCkKIAkJZ290byBlcnJfcHV0X21hcHBpbmc7Ci0JfQorCXBlcmZjbnQtPmJ1ZiA9 IG1hcC52YWRkcjsKIAogCS8qCiAJICogSW52YWxpZGF0ZSB0aGUgY2FjaGUgYW5kIGNsZWFyIHRo ZSBjb3VudGVycyB0byBzdGFydCBmcm9tIGEgZnJlc2gKQEAgLTE2Myw3ICsxNjQsNyBAQCBzdGF0 aWMgaW50IHBhbmZyb3N0X3BlcmZjbnRfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgcGFuZnJvc3RfZGV2 aWNlICpwZmRldiwKIAlyZXR1cm4gMDsKIAogZXJyX3Z1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1 bm1hcCgmYm8tPmJhc2UsIHBlcmZjbnQtPmJ1Zik7CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoJmJv LT5iYXNlLCAmbWFwKTsKIGVycl9wdXRfbWFwcGluZzoKIAlwYW5mcm9zdF9nZW1fbWFwcGluZ19w dXQocGVyZmNudC0+bWFwcGluZyk7CiBlcnJfY2xvc2VfYm86CkBAIC0xODAsNiArMTgxLDcgQEAg c3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBwYW5mcm9z dF9kZXZpY2UgKnBmZGV2LAogewogCXN0cnVjdCBwYW5mcm9zdF9maWxlX3ByaXYgKnVzZXIgPSBm aWxlX3ByaXYtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBwYW5mcm9zdF9wZXJmY250ICpwZXJmY250 ID0gcGZkZXYtPnBlcmZjbnQ7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcCA9IERNQV9CVUZfTUFQ X0lOSVRfVkFERFIocGVyZmNudC0+YnVmKTsKIAogCWlmICh1c2VyICE9IHBlcmZjbnQtPnVzZXIp CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTkyLDcgKzE5NCw3IEBAIHN0YXRpYyBpbnQgcGFuZnJv c3RfcGVyZmNudF9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwK IAkJICBHUFVfUEVSRkNOVF9DRkdfTU9ERShHUFVfUEVSRkNOVF9DRkdfTU9ERV9PRkYpKTsKIAog CXBlcmZjbnQtPnVzZXIgPSBOVUxMOwotCWRybV9nZW1fc2htZW1fdnVubWFwKCZwZXJmY250LT5t YXBwaW5nLT5vYmotPmJhc2UuYmFzZSwgcGVyZmNudC0+YnVmKTsKKwlkcm1fZ2VtX3NobWVtX3Z1 bm1hcCgmcGVyZmNudC0+bWFwcGluZy0+b2JqLT5iYXNlLmJhc2UsICZtYXApOwogCXBlcmZjbnQt PmJ1ZiA9IE5VTEw7CiAJcGFuZnJvc3RfZ2VtX2Nsb3NlKCZwZXJmY250LT5tYXBwaW5nLT5vYmot PmJhc2UuYmFzZSwgZmlsZV9wcml2KTsKIAlwYW5mcm9zdF9tbXVfYXNfcHV0KHBmZGV2LCBwZXJm Y250LT5tYXBwaW5nLT5tbXUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCmluZGV4IDQ1ZmQ3 NmUwNGJkYy4uZTE2NWZhOWIyMDg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4 bF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCkBAIC0y NSw2ICsyNSw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9jcmMzMi5oPgogI2luY2x1ZGUgPGxpbnV4 L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KIAogI2luY2x1ZGUgPGRy bS9kcm1fZHJ2Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KQEAgLTU4MSw2ICs1ODIs OCBAQCBzdGF0aWMgdm9pZCBxeGxfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IHF4bF9ibyAq Y3Vyc29yX2JvID0gTlVMTCwgKnVzZXJfYm8gPSBOVUxMLCAqb2xkX2N1cnNvcl9ibyA9IE5VTEw7 CiAJaW50IHJldDsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgdXNlcl9tYXA7CisJc3RydWN0IGRtYV9i dWZfbWFwIGN1cnNvcl9tYXA7CiAJdm9pZCAqdXNlcl9wdHI7CiAJaW50IHNpemUgPSA2NCo2NCo0 OwogCkBAIC01OTUsOSArNTk4LDEwIEBAIHN0YXRpYyB2b2lkIHF4bF9jdXJzb3JfYXRvbWljX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJdXNlcl9ibyA9IGdlbV90b19xeGxfYm8o b2JqKTsKIAogCQkvKiBwaW5uaW5nIGlzIGRvbmUgaW4gdGhlIHByZXBhcmUvY2xlYW51cCBmcmFt ZXZidWZmZXIgKi8KLQkJcmV0ID0gcXhsX2JvX2ttYXAodXNlcl9ibywgJnVzZXJfcHRyKTsKKwkJ cmV0ID0gcXhsX2JvX2ttYXAodXNlcl9ibywgJnVzZXJfbWFwKTsKIAkJaWYgKHJldCkKIAkJCWdv dG8gb3V0X2ZyZWVfcmVsZWFzZTsKKwkJdXNlcl9wdHIgPSB1c2VyX21hcC52YWRkcjsgLyogVE9E TzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCQlyZXQgPSBxeGxfYWxs b2NfYm9fcmVzZXJ2ZWQocWRldiwgcmVsZWFzZSwKIAkJCQkJICAgIHNpemVvZihzdHJ1Y3QgcXhs X2N1cnNvcikgKyBzaXplLApAQCAtNjEzLDcgKzYxNyw3IEBAIHN0YXRpYyB2b2lkIHF4bF9jdXJz b3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJaWYgKHJldCkKIAkJ CWdvdG8gb3V0X3VucGluOwogCi0JCXJldCA9IHF4bF9ib19rbWFwKGN1cnNvcl9ibywgKHZvaWQg KiopJmN1cnNvcik7CisJCXJldCA9IHF4bF9ib19rbWFwKGN1cnNvcl9ibywgJmN1cnNvcl9tYXAp OwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfYmFja29mZjsKIApAQCAtMTEzMyw2ICsxMTM3LDcg QEAgaW50IHF4bF9jcmVhdGVfbW9uaXRvcnNfb2JqZWN0KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 KQogewogCWludCByZXQ7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqOworCXN0cnVjdCBk bWFfYnVmX21hcCBtYXA7CiAJaW50IG1vbml0b3JzX2NvbmZpZ19zaXplID0gc2l6ZW9mKHN0cnVj dCBxeGxfbW9uaXRvcnNfY29uZmlnKSArCiAJCXF4bF9udW1fY3J0YyAqIHNpemVvZihzdHJ1Y3Qg cXhsX2hlYWQpOwogCkBAIC0xMTQ5LDcgKzExNTQsNyBAQCBpbnQgcXhsX2NyZWF0ZV9tb25pdG9y c19vYmplY3Qoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCXF4bF9ib19rbWFwKHFkZXYtPm1vbml0b3JzX2NvbmZpZ19ibywgTlVMTCk7CisJcXhs X2JvX2ttYXAocWRldi0+bW9uaXRvcnNfY29uZmlnX2JvLCAmbWFwKTsKIAogCXFkZXYtPm1vbml0 b3JzX2NvbmZpZyA9IHFkZXYtPm1vbml0b3JzX2NvbmZpZ19iby0+a3B0cjsKIAlxZGV2LT5yYW1f aGVhZGVyLT5tb25pdG9yc19jb25maWcgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfZHJhdy5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jCmluZGV4IDM1OTlk YjA5Njk3My4uN2I3YWNiOTEwNzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4 bF9kcmF3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jCkBAIC0yMCw2ICsy MCw4IEBACiAgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9kbWEt YnVmLW1hcC5oPgorCiAjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KIAogI2luY2x1ZGUgInF4 bF9kcnYuaCIKQEAgLTQyLDEzICs0NCwxNSBAQCBzdGF0aWMgc3RydWN0IHF4bF9yZWN0ICpkcmF3 YWJsZV9zZXRfY2xpcHBpbmcoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCiAJCQkJCSAgICAgIHVu c2lnbmVkIGludCBudW1fY2xpcHMsCiAJCQkJCSAgICAgIHN0cnVjdCBxeGxfYm8gKmNsaXBzX2Jv KQogeworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJc3RydWN0IHF4bF9jbGlwX3JlY3RzICpk ZXZfY2xpcHM7CiAJaW50IHJldDsKIAotCXJldCA9IHF4bF9ib19rbWFwKGNsaXBzX2JvLCAodm9p ZCAqKikmZGV2X2NsaXBzKTsKLQlpZiAocmV0KSB7CisJcmV0ID0gcXhsX2JvX2ttYXAoY2xpcHNf Ym8sICZtYXApOworCWlmIChyZXQpCiAJCXJldHVybiBOVUxMOwotCX0KKwlkZXZfY2xpcHMgPSBt YXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovCisK IAlkZXZfY2xpcHMtPm51bV9yZWN0cyA9IG51bV9jbGlwczsKIAlkZXZfY2xpcHMtPmNodW5rLm5l eHRfY2h1bmsgPSAwOwogCWRldl9jbGlwcy0+Y2h1bmsucHJldl9jaHVuayA9IDA7CkBAIC0xNDIs NiArMTQ2LDcgQEAgdm9pZCBxeGxfZHJhd19kaXJ0eV9mYihzdHJ1Y3QgcXhsX2RldmljZSAqcWRl diwKIAlpbnQgc3RyaWRlID0gZmItPnBpdGNoZXNbMF07CiAJLyogZGVwdGggaXMgbm90IGFjdHVh bGx5IGludGVyZXN0aW5nLCB3ZSBkb24ndCBtYXNrIHdpdGggaXQgKi8KIAlpbnQgZGVwdGggPSBm Yi0+Zm9ybWF0LT5jcHBbMF0gKiA4OworCXN0cnVjdCBkbWFfYnVmX21hcCBzdXJmYWNlX21hcDsK IAl1aW50OF90ICpzdXJmYWNlX2Jhc2U7CiAJc3RydWN0IHF4bF9yZWxlYXNlICpyZWxlYXNlOwog CXN0cnVjdCBxeGxfYm8gKmNsaXBzX2JvOwpAQCAtMTk3LDkgKzIwMiwxMCBAQCB2b2lkIHF4bF9k cmF3X2RpcnR5X2ZiKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAogCWlmIChyZXQpCiAJCWdvdG8g b3V0X3JlbGVhc2VfYmFja29mZjsKIAotCXJldCA9IHF4bF9ib19rbWFwKGJvLCAodm9pZCAqKikm c3VyZmFjZV9iYXNlKTsKKwlyZXQgPSBxeGxfYm9fa21hcChibywgJnN1cmZhY2VfbWFwKTsKIAlp ZiAocmV0KQogCQlnb3RvIG91dF9yZWxlYXNlX2JhY2tvZmY7CisJc3VyZmFjZV9iYXNlID0gc3Vy ZmFjZV9tYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5 ICovCiAKIAlyZXQgPSBxeGxfaW1hZ2VfaW5pdChxZGV2LCByZWxlYXNlLCBkaW1hZ2UsIHN1cmZh Y2VfYmFzZSwKIAkJCSAgICAgbGVmdCAtIGR1bWJfc2hhZG93X29mZnNldCwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZHJ2LmgKaW5kZXggMzYwMmU4YjM0MTg5Li5lYjQzN2ZlYTVkOWUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Ry di5oCkBAIC0zMCw2ICszMCw3IEBACiAgKiBEZWZpbml0aW9ucyB0YWtlbiBmcm9tIHNwaWNlLXBy b3RvY29sLCBwbHVzIGtlcm5lbCBkcml2ZXIgc3BlY2lmaWMgYml0cy4KICAqLwogCisjaW5jbHVk ZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UuaD4KICNp bmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgpAQCAtNTAsNiArNTEsOCBAQAogCiAjaW5jbHVkZSAicXhsX2Rldi5oIgogCitzdHJ1Y3Qg ZG1hX2J1Zl9tYXA7CisKICNkZWZpbmUgRFJJVkVSX0FVVEhPUgkJIkRhdmUgQWlybGllIgogCiAj ZGVmaW5lIERSSVZFUl9OQU1FCQkicXhsIgpAQCAtNzksNyArODIsNyBAQCBzdHJ1Y3QgcXhsX2Jv IHsKIAkvKiBQcm90ZWN0ZWQgYnkgdGJvLnJlc2VydmVkICovCiAJc3RydWN0IHR0bV9wbGFjZQkJ cGxhY2VtZW50c1szXTsKIAlzdHJ1Y3QgdHRtX3BsYWNlbWVudAkJcGxhY2VtZW50OwotCXN0cnVj dCB0dG1fYm9fa21hcF9vYmoJCWttYXA7CisJc3RydWN0IGRtYV9idWZfbWFwCQltYXA7CiAJdm9p ZAkJCQkqa3B0cjsKIAl1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgIG1hcF9jb3VudDsK IAlpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7CkBAIC0zMzUsNyArMzM4LDYg QEAgaW50IHF4bF9nZW1fb2JqZWN0X29wZW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIHZvaWQgcXhsX2dlbV9vYmplY3RfY2xvc2Uoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KTsKIHZvaWQgcXhsX2JvX2ZvcmNlX2RlbGV0ZShzdHJ1Y3QgcXhsX2RldmljZSAqcWRldik7Ci1p bnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHZvaWQgKipwdHIpOwogCiAvKiBxeGxf ZHVtYi5jICovCiBpbnQgcXhsX21vZGVfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCkBAIC00NDUsOCArNDQ3LDkgQEAgc3RydWN0IHNnX3RhYmxlICpxeGxfZ2VtX3ByaW1l X2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CiBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKnF4bF9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKAogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAlzdHJ1Y3Qgc2df dGFibGUgKnNndCk7Ci12b2lkICpxeGxfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopOwotdm9pZCBxeGxfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaiwgdm9pZCAqdmFkZHIpOworaW50IHF4bF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwordm9pZCBxeGxfZ2Vt X3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgc3RydWN0IGRt YV9idWZfbWFwICptYXApOwogaW50IHF4bF9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwKIAkJCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfb2JqZWN0LmMKaW5kZXggOTQwZTk5MzU0ZjQ5Li43NTVkZjRkOGY5NWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9xeGwvcXhsX29iamVjdC5jCkBAIC0yMywxMCArMjMsMTIgQEAKICAqICAgICAgICAgIEFsb24g TGV2eQogICovCiAKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgorI2luY2x1ZGUgPGxp bnV4L2lvLW1hcHBpbmcuaD4KKwogI2luY2x1ZGUgInF4bF9kcnYuaCIKICNpbmNsdWRlICJxeGxf b2JqZWN0LmgiCiAKLSNpbmNsdWRlIDxsaW51eC9pby1tYXBwaW5nLmg+CiBzdGF0aWMgdm9pZCBx eGxfdHRtX2JvX2Rlc3Ryb3koc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pCiB7CiAJc3Ry dWN0IHF4bF9ibyAqYm87CkBAIC0xNTIsMjQgKzE1NCwyNyBAQCBpbnQgcXhsX2JvX2NyZWF0ZShz dHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKIAlyZXR1cm4gMDsKIH0KIAotaW50IHF4bF9ib19rbWFw KHN0cnVjdCBxeGxfYm8gKmJvLCB2b2lkICoqcHRyKQoraW50IHF4bF9ib19rbWFwKHN0cnVjdCBx eGxfYm8gKmJvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKLQlib29sIGlzX2lvbWVtOwog CWludCByOwogCiAJaWYgKGJvLT5rcHRyKSB7Ci0JCWlmIChwdHIpCi0JCQkqcHRyID0gYm8tPmtw dHI7CiAJCWJvLT5tYXBfY291bnQrKzsKLQkJcmV0dXJuIDA7CisJCWdvdG8gb3V0OwogCX0KLQly ID0gdHRtX2JvX2ttYXAoJmJvLT50Ym8sIDAsIGJvLT50Ym8ubnVtX3BhZ2VzLCAmYm8tPmttYXAp OworCXIgPSB0dG1fYm9fdm1hcCgmYm8tPnRibywgJmJvLT5tYXApOwogCWlmIChyKQogCQlyZXR1 cm4gcjsKLQliby0+a3B0ciA9IHR0bV9rbWFwX29ial92aXJ0dWFsKCZiby0+a21hcCwgJmlzX2lv bWVtKTsKLQlpZiAocHRyKQotCQkqcHRyID0gYm8tPmtwdHI7CiAJYm8tPm1hcF9jb3VudCA9IDE7 CisKKwkvKiBUT0RPOiBSZW1vdmUga3B0ciBpbiBmYXZvciBvZiBtYXAgZXZlcnl3aGVyZS4gKi8K KwlpZiAoYm8tPm1hcC5pc19pb21lbSkKKwkJYm8tPmtwdHIgPSAodm9pZCAqKWJvLT5tYXAudmFk ZHJfaW9tZW07CisJZWxzZQorCQliby0+a3B0ciA9IGJvLT5tYXAudmFkZHI7CisKK291dDoKKwkq bWFwID0gYm8tPm1hcDsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTgwLDYgKzE4NSw3IEBAIHZvaWQg KnF4bF9ib19rbWFwX2F0b21pY19wYWdlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAogCXZvaWQg KnJwdHI7CiAJaW50IHJldDsKIAlzdHJ1Y3QgaW9fbWFwcGluZyAqbWFwOworCXN0cnVjdCBkbWFf YnVmX21hcCBib19tYXA7CiAKIAlpZiAoYm8tPnRiby5tZW0ubWVtX3R5cGUgPT0gVFRNX1BMX1ZS QU0pCiAJCW1hcCA9IHFkZXYtPnZyYW1fbWFwcGluZzsKQEAgLTE5Niw5ICsyMDIsMTAgQEAgdm9p ZCAqcXhsX2JvX2ttYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCiAJCXJl dHVybiBycHRyOwogCX0KIAotCXJldCA9IHF4bF9ib19rbWFwKGJvLCAmcnB0cik7CisJcmV0ID0g cXhsX2JvX2ttYXAoYm8sICZib19tYXApOwogCWlmIChyZXQpCiAJCXJldHVybiBOVUxMOworCXJw dHIgPSBib19tYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Bl cmx5ICovCiAKIAlycHRyICs9IHBhZ2Vfb2Zmc2V0ICogUEFHRV9TSVpFOwogCXJldHVybiBycHRy OwpAQCAtMjEyLDcgKzIxOSw3IEBAIHZvaWQgcXhsX2JvX2t1bm1hcChzdHJ1Y3QgcXhsX2JvICpi bykKIAlpZiAoYm8tPm1hcF9jb3VudCA+IDApCiAJCXJldHVybjsKIAliby0+a3B0ciA9IE5VTEw7 Ci0JdHRtX2JvX2t1bm1hcCgmYm8tPmttYXApOworCXR0bV9ib192dW5tYXAoJmJvLT50Ym8sICZi by0+bWFwKTsKIH0KIAogdm9pZCBxeGxfYm9fa3VubWFwX2F0b21pY19wYWdlKHN0cnVjdCBxeGxf ZGV2aWNlICpxZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0 LmggYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuaAppbmRleCAwOWE1YzgxODMyNGQu LmViZjI0YzlkMmJmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmgKQEAgLTYzLDcgKzYzLDcg QEAgZXh0ZXJuIGludCBxeGxfYm9fY3JlYXRlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAogCQkJ IGJvb2wga2VybmVsLCBib29sIHBpbm5lZCwgdTMyIGRvbWFpbiwKIAkJCSBzdHJ1Y3QgcXhsX3N1 cmZhY2UgKnN1cmYsCiAJCQkgc3RydWN0IHF4bF9ibyAqKmJvX3B0cik7Ci1leHRlcm4gaW50IHF4 bF9ib19rbWFwKHN0cnVjdCBxeGxfYm8gKmJvLCB2b2lkICoqcHRyKTsKK2V4dGVybiBpbnQgcXhs X2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIGV4 dGVybiB2b2lkIHF4bF9ib19rdW5tYXAoc3RydWN0IHF4bF9ibyAqYm8pOwogdm9pZCAqcXhsX2Jv X2ttYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsIHN0cnVjdCBxeGxfYm8g KmJvLCBpbnQgcGFnZV9vZmZzZXQpOwogdm9pZCBxeGxfYm9fa3VubWFwX2F0b21pY19wYWdlKHN0 cnVjdCBxeGxfZGV2aWNlICpxZGV2LCBzdHJ1Y3QgcXhsX2JvICpibywgdm9pZCAqbWFwKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9wcmltZS5jCmluZGV4IDdkMzgxNmZjYTVhOC4uNGFhOTQ5Nzk5NDQ2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9xeGwvcXhsX3ByaW1lLmMKQEAgLTU0LDIwICs1NCwyMCBAQCBzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKnF4bF9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKAogCXJldHVybiBFUlJfUFRSKC1F Tk9TWVMpOwogfQogCi12b2lkICpxeGxfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopCitpbnQgcXhsX2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgcXhsX2JvICpibyA9IGdl bV90b19xeGxfYm8ob2JqKTsKLQl2b2lkICpwdHI7CiAJaW50IHJldDsKIAotCXJldCA9IHF4bF9i b19rbWFwKGJvLCAmcHRyKTsKKwlyZXQgPSBxeGxfYm9fa21hcChibywgbWFwKTsKIAlpZiAocmV0 IDwgMCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwkJcmV0dXJuIHJldDsKIAotCXJldHVybiBw dHI7CisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgcXhsX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQordm9pZCBxeGxfZ2VtX3ByaW1lX3Z1bm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgc3RydWN0IGRtYV9idWZfbWFwICpt YXApCiB7CiAJc3RydWN0IHF4bF9ibyAqYm8gPSBnZW1fdG9fcXhsX2JvKG9iaik7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbi5oCmluZGV4IDVkNTRiY2NlYmQ0ZC4uNDRjYjVlZTZmYzIwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uLmgKQEAgLTUwOSw3ICs1MDksNiBAQCBzdHJ1Y3QgcmFkZW9uX2JvIHsK IAkvKiBDb25zdGFudCBhZnRlciBpbml0aWFsaXphdGlvbiAqLwogCXN0cnVjdCByYWRlb25fZGV2 aWNlCQkqcmRldjsKIAotCXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWRtYV9idWZfdm1hcDsKIAlw aWRfdAkJCQlwaWQ7CiAKICNpZmRlZiBDT05GSUdfTU1VX05PVElGSUVSCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2dlbS5jCmluZGV4IDBjY2Q3MjEzZTQxZi4uZDI4NzZjZTNiYzllIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYworKysgYi9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPGRy bS9kcm1fZGVidWdmcy5oPgogI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8 ZHJtL2RybV9maWxlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fdHRtX2hlbHBlci5oPgogI2lu Y2x1ZGUgPGRybS9yYWRlb25fZHJtLmg+CiAKICNpbmNsdWRlICJyYWRlb24uaCIKQEAgLTQwLDgg KzQxLDYgQEAgc3RydWN0IGRtYV9idWYgKnJhZGVvbl9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ29iaiwKIHN0cnVjdCBzZ190YWJsZSAqcmFkZW9uX2dlbV9wcmltZV9n ZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogaW50IHJhZGVvbl9nZW1f cHJpbWVfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKIHZvaWQgcmFkZW9uX2dlbV9w cmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkICpyYWRlb25fZ2Vt X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotdm9pZCByYWRlb25fZ2Vt X3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpOwog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHJhZGVvbl9nZW1fb2Jq ZWN0X2Z1bmNzOwogCkBAIC0yMzUsOCArMjM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Z2VtX29iamVjdF9mdW5jcyByYWRlb25fZ2VtX29iamVjdF9mdW5jcyA9IHsKIAkucGluID0gcmFk ZW9uX2dlbV9wcmltZV9waW4sCiAJLnVucGluID0gcmFkZW9uX2dlbV9wcmltZV91bnBpbiwKIAku Z2V0X3NnX3RhYmxlID0gcmFkZW9uX2dlbV9wcmltZV9nZXRfc2dfdGFibGUsCi0JLnZtYXAgPSBy YWRlb25fZ2VtX3ByaW1lX3ZtYXAsCi0JLnZ1bm1hcCA9IHJhZGVvbl9nZW1fcHJpbWVfdnVubWFw LAorCS52bWFwID0gZHJtX2dlbV90dG1fdm1hcCwKKwkudnVubWFwID0gZHJtX2dlbV90dG1fdnVu bWFwLAogfTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCmluZGV4IGI5 ZGUwZTUxYzBiZS4uMDg4ZDM5YTUxYzBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3By aW1lLmMKQEAgLTM5LDI2ICszOSw2IEBAIHN0cnVjdCBzZ190YWJsZSAqcmFkZW9uX2dlbV9wcmlt ZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIGRybV9w cmltZV9wYWdlc190b19zZyhvYmotPmRldiwgYm8tPnRiby50dG0tPnBhZ2VzLCBucGFnZXMpOwog fQogCi12b2lkICpyYWRlb25fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopCi17Ci0Jc3RydWN0IHJhZGVvbl9ibyAqYm8gPSBnZW1fdG9fcmFkZW9uX2JvKG9iaik7Ci0J aW50IHJldDsKLQotCXJldCA9IHR0bV9ib19rbWFwKCZiby0+dGJvLCAwLCBiby0+dGJvLm51bV9w YWdlcywKLQkJCSAgJmJvLT5kbWFfYnVmX3ZtYXApOwotCWlmIChyZXQpCi0JCXJldHVybiBFUlJf UFRSKHJldCk7Ci0KLQlyZXR1cm4gYm8tPmRtYV9idWZfdm1hcC52aXJ0dWFsOwotfQotCi12b2lk IHJhZGVvbl9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lk ICp2YWRkcikKLXsKLQlzdHJ1Y3QgcmFkZW9uX2JvICpibyA9IGdlbV90b19yYWRlb25fYm8ob2Jq KTsKLQotCXR0bV9ib19rdW5tYXAoJmJvLT5kbWFfYnVmX3ZtYXApOwotfQotCiBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKnJhZGVvbl9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCQkJCQkJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAog CQkJCQkJCXN0cnVjdCBzZ190YWJsZSAqc2cpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV9nZW0uYwppbmRleCA3ZDVlYmIxMDMyM2IuLjc5NzFmNTc0MzZkZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCkBAIC01MzIsMjYgKzUz MiwzMiBAQCByb2NrY2hpcF9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIAotdm9pZCAqcm9ja2NoaXBfZ2Vt X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCitpbnQgcm9ja2NoaXBfZ2Vt X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21h cCAqbWFwKQogewogCXN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICpya19vYmogPSB0b19yb2Nr Y2hpcF9vYmoob2JqKTsKIAotCWlmIChya19vYmotPnBhZ2VzKQotCQlyZXR1cm4gdm1hcChya19v YmotPnBhZ2VzLCBya19vYmotPm51bV9wYWdlcywgVk1fTUFQLAotCQkJICAgIHBncHJvdF93cml0 ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKKwlpZiAocmtfb2JqLT5wYWdlcykgeworCQl2b2lkICp2 YWRkciA9IHZtYXAocmtfb2JqLT5wYWdlcywgcmtfb2JqLT5udW1fcGFnZXMsIFZNX01BUCwKKwkJ CQkgIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKKwkJaWYgKCF2YWRkcikKKwkJ CXJldHVybiAtRU5PTUVNOworCQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7CisJ CXJldHVybiAwOworCX0KIAogCWlmIChya19vYmotPmRtYV9hdHRycyAmIERNQV9BVFRSX05PX0tF Uk5FTF9NQVBQSU5HKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIC1FTk9NRU07CisJZG1hX2J1 Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgcmtfb2JqLT5rdmFkZHIpOwogCi0JcmV0dXJuIHJrX29iai0+ a3ZhZGRyOworCXJldHVybiAwOwogfQogCi12b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQordm9pZCByb2NrY2hpcF9n ZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1 Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqID0gdG9f cm9ja2NoaXBfb2JqKG9iaik7CiAKIAlpZiAocmtfb2JqLT5wYWdlcykgewotCQl2dW5tYXAodmFk ZHIpOworCQl2dW5tYXAobWFwLT52YWRkcik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmggYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oCmluZGV4IDdmZmM1NDFiZWEwNy4uNWE3 MGE1NmNkNDA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2Vt LmgKQEAgLTMxLDggKzMxLDggQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICoKIHJvY2tjaGlwX2dl bV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCiAJCQkJICAgc3RydWN0IHNnX3RhYmxl ICpzZyk7Ci12b2lkICpyb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7Ci12b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKK2ludCByb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwordm9p ZCByb2NrY2hpcF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIC8qIGRybSBkcml2ZXIgbW1hcCBmaWxlIG9wZXJh dGlvbnMgKi8KIGludCByb2NrY2hpcF9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rpbnkv Y2lycnVzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMuYwppbmRleCA3NDRhOGUzMzdl NDEuLmMwMmUzNWVkNmU3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLmMKQEAgLTE3LDYgKzE3LDcgQEAK ICAqLwogCiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1i dWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvcGNp Lmg+CiAKQEAgLTMxNCw2ICszMTUsNyBAQCBzdGF0aWMgaW50IGNpcnJ1c19mYl9ibGl0X3JlY3Qo c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQkgICAgICAgc3RydWN0IGRybV9yZWN0ICpy ZWN0KQogewogCXN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMgPSB0b19jaXJydXMoZmItPmRl dik7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAl2b2lkICp2bWFwOwogCWludCBpZHgsIHJl dDsKIApAQCAtMzIxLDEwICszMjMsMTAgQEAgc3RhdGljIGludCBjaXJydXNfZmJfYmxpdF9yZWN0 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCWlmICghZHJtX2Rldl9lbnRlcigmY2lycnVz LT5kZXYsICZpZHgpKQogCQlnb3RvIG91dDsKIAotCXJldCA9IC1FTk9NRU07Ci0Jdm1hcCA9IGRy bV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdKTsKLQlpZiAoIXZtYXApCisJcmV0ID0gZHJtX2dl bV9zaG1lbV92bWFwKGZiLT5vYmpbMF0sICZtYXApOworCWlmIChyZXQpCiAJCWdvdG8gb3V0X2Rl dl9leGl0OworCXZtYXAgPSBtYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0 aW9uIHByb3Blcmx5ICovCiAKIAlpZiAoY2lycnVzLT5jcHAgPT0gZmItPmZvcm1hdC0+Y3BwWzBd KQogCQlkcm1fZmJfbWVtY3B5X2RzdGNsaXAoY2lycnVzLT52cmFtLApAQCAtMzQzLDcgKzM0NSw3 IEBAIHN0YXRpYyBpbnQgY2lycnVzX2ZiX2JsaXRfcmVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKIAllbHNlCiAJCVdBUk5fT05fT05DRSgiY3BwIG1pc21hdGNoIik7CiAKLQlkcm1fZ2Vt X3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCB2bWFwKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChm Yi0+b2JqWzBdLCAmbWFwKTsKIAlyZXQgPSAwOwogCiBvdXRfZGV2X2V4aXQ6CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnkv Z20xMnUzMjAuYwppbmRleCBjYzM5NzY3MWY2ODkuLjEyYTg5MGNlYTZlOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20xMnUzMjAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlu eS9nbTEydTMyMC5jCkBAIC0yNDgsNiArMjQ4LDcgQEAgc3RhdGljIHZvaWQgZ20xMnUzMjBfY29w eV9mYl90b19ibG9ja3Moc3RydWN0IGdtMTJ1MzIwX2RldmljZSAqZ20xMnUzMjApCiB7CiAJaW50 IGJsb2NrLCBkc3Rfb2Zmc2V0LCBsZW4sIHJlbWFpbiwgcmV0LCB4MSwgeDIsIHkxLCB5MjsKIAlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCXZv aWQgKnZhZGRyOwogCXU4ICpzcmM7CiAKQEAgLTI2MiwxMSArMjYzLDEyIEBAIHN0YXRpYyB2b2lk IGdtMTJ1MzIwX2NvcHlfZmJfdG9fYmxvY2tzKHN0cnVjdCBnbTEydTMyMF9kZXZpY2UgKmdtMTJ1 MzIwKQogCXkxID0gZ20xMnUzMjAtPmZiX3VwZGF0ZS5yZWN0LnkxOwogCXkyID0gZ20xMnUzMjAt PmZiX3VwZGF0ZS5yZWN0LnkyOwogCi0JdmFkZHIgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZmItPm9i alswXSk7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJR00xMlUzMjBfRVJSKCJmYWlsZWQgdG8g dm1hcCBmYjogJWxkXG4iLCBQVFJfRVJSKHZhZGRyKSk7CisJcmV0ID0gZHJtX2dlbV9zaG1lbV92 bWFwKGZiLT5vYmpbMF0sICZtYXApOworCWlmIChyZXQpIHsKKwkJR00xMlUzMjBfRVJSKCJmYWls ZWQgdG8gdm1hcCBmYjogJWRcbiIsIHJldCk7CiAJCWdvdG8gcHV0X2ZiOwogCX0KKwl2YWRkciA9 IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8K IAogCWlmIChmYi0+b2JqWzBdLT5pbXBvcnRfYXR0YWNoKSB7CiAJCXJldCA9IGRtYV9idWZfYmVn aW5fY3B1X2FjY2VzcygKQEAgLTMxOCw3ICszMjAsNyBAQCBzdGF0aWMgdm9pZCBnbTEydTMyMF9j b3B5X2ZiX3RvX2Jsb2NrcyhzdHJ1Y3QgZ20xMnUzMjBfZGV2aWNlICpnbTEydTMyMCkKIAkJCUdN MTJVMzIwX0VSUigiZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyBlcnI6ICVkXG4iLCByZXQpOwogCX0K IHZ1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCB2YWRkcik7CisJZHJt X2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgJm1hcCk7CiBwdXRfZmI6CiAJZHJtX2ZyYW1l YnVmZmVyX3B1dChmYik7CiAJZ20xMnUzMjAtPmZiX3VwZGF0ZS5mYiA9IE5VTEw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0v dWRsL3VkbF9tb2Rlc2V0LmMKaW5kZXggZmVmNDNmNGUzYmFjLi40MmVlYmExZGZkYmYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKQEAgLTI3Niw2ICsyNzYsNyBAQCBzdGF0aWMgaW50IHVk bF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHks CiAJc3RydWN0IHVyYiAqdXJiOwogCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwogCWludCBsb2dfYnBw OworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJdm9pZCAqdmFkZHI7CiAKIAlyZXQgPSB1ZGxf bG9nX2NwcChmYi0+Zm9ybWF0LT5jcHBbMF0pOwpAQCAtMjk2LDExICsyOTcsMTIgQEAgc3RhdGlj IGludCB1ZGxfaGFuZGxlX2RhbWFnZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHgs IGludCB5LAogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQl2YWRkciA9IGRybV9nZW1fc2htZW1fdm1h cChmYi0+b2JqWzBdKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkgeworCXJldCA9IGRybV9nZW1fc2ht ZW1fdm1hcChmYi0+b2JqWzBdLCAmbWFwKTsKKwlpZiAocmV0KSB7CiAJCURSTV9FUlJPUigiZmFp bGVkIHRvIHZtYXAgZmJcbiIpOwogCQlnb3RvIG91dF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzOwog CX0KKwl2YWRkciA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24g cHJvcGVybHkgKi8KIAogCXVyYiA9IHVkbF9nZXRfdXJiKGRldik7CiAJaWYgKCF1cmIpCkBAIC0z MzMsNyArMzM1LDcgQEAgc3RhdGljIGludCB1ZGxfaGFuZGxlX2RhbWFnZShzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwgaW50IHgsIGludCB5LAogCXJldCA9IDA7CiAKIG91dF9kcm1fZ2VtX3No bWVtX3Z1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCB2YWRkcik7CisJ ZHJtX2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgJm1hcCk7CiBvdXRfZG1hX2J1Zl9lbmRf Y3B1X2FjY2VzczoKIAlpZiAoaW1wb3J0X2F0dGFjaCkgewogCQl0bXBfcmV0ID0gZG1hX2J1Zl9l bmRfY3B1X2FjY2VzcyhpbXBvcnRfYXR0YWNoLT5kbWFidWYsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRl by92Ym94X21vZGUuYwppbmRleCA5MzFjNTUxMjYxNDguLmYyNjhmYjI1OGM4MyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21vZGUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jCkBAIC05LDYgKzksOCBAQAogICogICAgICAgICAg TWljaGFlbCBUaGF5ZXIgPG1pY2hhZWwudGhheWVyQG9yYWNsZS5jb20sCiAgKiAgICAgICAgICBI YW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgogICovCisKKyNpbmNsdWRlIDxsaW51 eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgogCiAjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWMuaD4KQEAgLTM4NCw2ICszODYsOCBAQCBzdGF0aWMgdm9pZCB2Ym94X2N1 cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXUzMiBoZWlnaHQg PSBwbGFuZS0+c3RhdGUtPmNydGNfaDsKIAlzaXplX3QgZGF0YV9zaXplLCBtYXNrX3NpemU7CiAJ dTMyIGZsYWdzOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CisJaW50IHJldDsKIAl1OCAqc3Jj OwogCiAJLyoKQEAgLTM5Nyw4ICs0MDEsOCBAQCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9t aWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCiAJdmJveF9jcnRjLT5jdXJzb3Jf ZW5hYmxlZCA9IHRydWU7CiAKLQlzcmMgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8pOwotCWlmIChJ U19FUlIoc3JjKSkgeworCXJldCA9IGRybV9nZW1fdnJhbV92bWFwKGdibywgJm1hcCk7CisJaWYg KHJldCkgewogCQkvKgogCQkgKiBCVUc6IHdlIHNob3VsZCBoYXZlIHBpbm5lZCB0aGUgQk8gaW4g cHJlcGFyZV9mYigpLgogCQkgKi8KQEAgLTQwNiw2ICs0MTAsNyBAQCBzdGF0aWMgdm9pZCB2Ym94 X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlEUk1fV0FS TigiQ291bGQgbm90IG1hcCBjdXJzb3IgYm8sIHNraXBwaW5nIHVwZGF0ZVxuIik7CiAJCXJldHVy bjsKIAl9CisJc3JjID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBVc2UgbWFwcGluZyBhYnN0cmFjdGlv biBwcm9wZXJseSAqLwogCiAJLyoKIAkgKiBUaGUgbWFzayBtdXN0IGJlIGNhbGN1bGF0ZWQgYmFz ZWQgb24gdGhlIGFscGhhCkBAIC00MTYsNyArNDIxLDcgQEAgc3RhdGljIHZvaWQgdmJveF9jdXJz b3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlkYXRhX3NpemUgPSB3 aWR0aCAqIGhlaWdodCAqIDQgKyBtYXNrX3NpemU7CiAKIAljb3B5X2N1cnNvcl9pbWFnZShzcmMs IHZib3gtPmN1cnNvcl9kYXRhLCB3aWR0aCwgaGVpZ2h0LCBtYXNrX3NpemUpOwotCWRybV9nZW1f dnJhbV92dW5tYXAoZ2JvLCBzcmMpOworCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCAmbWFwKTsK IAogCWZsYWdzID0gVkJPWF9NT1VTRV9QT0lOVEVSX1ZJU0lCTEUgfCBWQk9YX01PVVNFX1BPSU5U RVJfU0hBUEUgfAogCQlWQk9YX01PVVNFX1BPSU5URVJfQUxQSEE7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYwpp bmRleCA1NTdmMGQxZTY0MzcuLmYyOTBhOWE5NDJkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfYm8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCkBAIC03 ODUsMTYgKzc4NSwxNiBAQCBpbnQgdmM0X3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCXJldHVybiBkcm1fZ2VtX2NtYV9w cmltZV9tbWFwKG9iaiwgdm1hKTsKIH0KIAotdm9pZCAqdmM0X3ByaW1lX3ZtYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCitpbnQgdmM0X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCB2YzRfYm8gKmJv ID0gdG9fdmM0X2JvKG9iaik7CiAKIAlpZiAoYm8tPnZhbGlkYXRlZF9zaGFkZXIpIHsKIAkJRFJN X0RFQlVHKCJtbWFwaW5nIG9mIHNoYWRlciBCT3Mgbm90IGFsbG93ZWQuXG4iKTsKLQkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCXJldHVybiBkcm1f Z2VtX2NtYV9wcmltZV92bWFwKG9iaik7CisJcmV0dXJuIGRybV9nZW1fY21hX3ByaW1lX3ZtYXAo b2JqLCBtYXApOwogfQogCiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYu aAppbmRleCBjYzc5YjFhYWE4NzguLjkwNGYyYzM2Yzk2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgK QEAgLTgwNiw3ICs4MDYsNyBAQCBpbnQgdmM0X3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqdmM0X3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAkJCQkJCSBzdHJ1Y3Qg c2dfdGFibGUgKnNndCk7Ci12b2lkICp2YzRfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7CitpbnQgdmM0X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIGludCB2YzRfYm9fY2FjaGVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgdmM0X2JvX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CiBpbnQgdmM0X2JvX2luY191c2VjbnQoc3RydWN0IHZjNF9ibyAqYm8pOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS92Z2VtL3ZnZW1fZHJ2LmMKaW5kZXggZmE1NGE2ZDE0MDNkLi5iMmFhMjZlMWU0YTIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwpAQCAtMzYxLDI0ICszNjEsMzAgQEAgc3RhdGljIHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqdmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlyZXR1cm4gJm9iai0+YmFzZTsKIH0KIAotc3RhdGljIHZvaWQgKnZnZW1f cHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBpbnQgdmdlbV9w cmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAg Km1hcCkKIHsKIAlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqYm8gPSB0b192Z2VtX2JvKG9i aik7CiAJbG9uZyBuX3BhZ2VzID0gb2JqLT5zaXplID4+IFBBR0VfU0hJRlQ7CiAJc3RydWN0IHBh Z2UgKipwYWdlczsKKwl2b2lkICp2YWRkcjsKIAogCXBhZ2VzID0gdmdlbV9waW5fcGFnZXMoYm8p OwogCWlmIChJU19FUlIocGFnZXMpKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIFBUUl9FUlIo cGFnZXMpOworCisJdmFkZHIgPSB2bWFwKHBhZ2VzLCBuX3BhZ2VzLCAwLCBwZ3Byb3Rfd3JpdGVj b21iaW5lKFBBR0VfS0VSTkVMKSk7CisJaWYgKCF2YWRkcikKKwkJcmV0dXJuIC1FTk9NRU07CisJ ZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOwogCi0JcmV0dXJuIHZtYXAocGFnZXMs IG5fcGFnZXMsIDAsIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKKwlyZXR1cm4g MDsKIH0KIAotc3RhdGljIHZvaWQgdmdlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHZvaWQgKnZhZGRyKQorc3RhdGljIHZvaWQgdmdlbV9wcmltZV92dW5tYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0 cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpibyA9IHRvX3ZnZW1fYm8ob2JqKTsKIAotCXZ1bm1h cCh2YWRkcik7CisJdnVubWFwKG1hcC0+dmFkZHIpOwogCXZnZW1fdW5waW5fcGFnZXMoYm8pOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMKaW5kZXggNGYzNGVmMzRi YTYwLi43NGRiNWE4NDBiZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udF9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2Vt LmMKQEAgLTI5MCwyMiArMjkwLDI4IEBAIGludCB4ZW5fZHJtX2Zyb250X2dlbV9tbWFwKHN0cnVj dCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAlyZXR1cm4gZ2VtX21t YXBfb2JqKHhlbl9vYmosIHZtYSk7CiB9CiAKLXZvaWQgKnhlbl9kcm1fZnJvbnRfZ2VtX3ByaW1l X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQoraW50IHhlbl9kcm1fZnJvbnRf Z2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLCBzdHJ1Y3QgZG1h X2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhlbl9vYmogPSB0b194 ZW5fZ2VtX29iaihnZW1fb2JqKTsKKwl2b2lkICp2YWRkcjsKIAogCWlmICgheGVuX29iai0+cGFn ZXMpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qIFBsZWFzZSBzZWUg Y29tbWVudCBpbiBnZW1fbW1hcF9vYmogb24gbWFwcGluZyBhbmQgYXR0cmlidXRlcy4gKi8KLQly ZXR1cm4gdm1hcCh4ZW5fb2JqLT5wYWdlcywgeGVuX29iai0+bnVtX3BhZ2VzLAotCQkgICAgVk1f TUFQLCBQQUdFX0tFUk5FTCk7CisJdmFkZHIgPSB2bWFwKHhlbl9vYmotPnBhZ2VzLCB4ZW5fb2Jq LT5udW1fcGFnZXMsCisJCSAgICAgVk1fTUFQLCBQQUdFX0tFUk5FTCk7CisJaWYgKCF2YWRkcikK KwkJcmV0dXJuIC1FTk9NRU07CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOwor CisJcmV0dXJuIDA7CiB9CiAKIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdnVubWFwKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKLQkJCQkgICAgdm9pZCAqdmFkZHIpCisJCQkJ ICAgIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewotCXZ1bm1hcCh2YWRkcik7CisJdnVubWFw KG1hcC0+dmFkZHIpOwogfQogCiBpbnQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfbW1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v eGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJv bnRfZ2VtLmgKaW5kZXggYTM5Njc1ZmEzMWIyLi5hNGU2N2QwYTE0OWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNkZWZpbmUgX19Y RU5fRFJNX0ZST05UX0dFTV9ICiAKIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQ7CitzdHJ1Y3Qg ZG1hX2J1Zl9tYXA7CiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsK IHN0cnVjdCBmaWxlOwpAQCAtMzQsMTAgKzM1LDExIEBAIHZvaWQgeGVuX2RybV9mcm9udF9nZW1f ZnJlZV9vYmplY3RfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKTsKIAog aW50IHhlbl9kcm1fZnJvbnRfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKTsKIAotdm9pZCAqeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdm1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopOworaW50IHhlbl9kcm1fZnJvbnRfZ2VtX3By aW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLAorCQkJCSBzdHJ1Y3QgZG1h X2J1Zl9tYXAgKm1hcCk7CiAKIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdnVubWFwKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKLQkJCQkgICAgdm9pZCAqdmFkZHIpOworCQkJ CSAgICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCB4ZW5fZHJtX2Zyb250X2dlbV9w cmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKIAkJCQkgc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oIGIv aW5jbHVkZS9kcm0vZHJtX2dlbS5oCmluZGV4IGMzOGRkMzVkYTAwYi4uNWU2ZGFhMWM5ODJmIDEw MDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dl bS5oCkBAIC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5hZ2VyLmg+ CiAKK3N0cnVjdCBkbWFfYnVmX21hcDsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKIAogLyoqCkBA IC0xMzgsNyArMTM5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHsKIAkgKgogCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCiAJICovCi0Jdm9pZCAqKCp2bWFwKShzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaik7CisJaW50ICgqdm1hcCkoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogCS8qKgogCSAqIEB2dW5tYXA6CkBA IC0xNDgsNyArMTQ5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHsKIAkgKgogCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCiAJICovCi0Jdm9pZCAoKnZ1bm1hcCkoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKKwl2b2lkICgqdnVubWFwKShzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwogCiAJLyoq CiAJICogQG1tYXA6CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aCBiL2luY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oCmluZGV4IGEwNjRiMGQxYzQ4MC4u Y2FmOThiOWNmNGI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaApAQCAtMTAzLDcgKzEwMyw3 IEBAIGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJCSAgc3RydWN0IHNnX3RhYmxlICpzZ3QpOwogaW50IGRybV9nZW1fY21hX3ByaW1l X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSk7Ci12b2lkICpkcm1fZ2VtX2NtYV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKTsKK2ludCBkcm1fZ2VtX2NtYV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqCiBkcm1fZ2VtX2NtYV9jcmVhdGVfb2JqZWN0X2RlZmF1bHRfZnVuY3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2dlbV9zaG1lbV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9nZW1fc2htZW1faGVscGVy LmgKaW5kZXggNTM4MWYwYzhjZjZmLi4zNDQ5YTAzNTNmZTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1l bV9oZWxwZXIuaApAQCAtMTEzLDggKzExMyw4IEBAIGludCBkcm1fZ2VtX3NobWVtX2dldF9wYWdl cyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsKIHZvaWQgZHJtX2dlbV9zaG1l bV9wdXRfcGFnZXMoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7CiBpbnQgZHJt X2dlbV9zaG1lbV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBkcm1fZ2Vt X3NobWVtX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgKmRybV9nZW1f c2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIGRybV9nZW1fc2ht ZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7CitpbnQg ZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1h X2J1Zl9tYXAgKm1hcCk7Cit2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCBkcm1fZ2VtX3No bWVtX21hZHZpc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBtYWR2KTsKIApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0v ZHJtX2dlbV92cmFtX2hlbHBlci5oCmluZGV4IDEyOGY4ODE3NGQzMi4uYzBkMjhiYTBmNWM5IDEw MDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgKKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSA8 ZHJtL3R0bS90dG1fYm9fYXBpLmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+ CiAKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPiAvKiBmb3IgY29udGFpbmVyX29mKCkgKi8KIAogc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9k dW1iOwpAQCAtMjksOSArMzAsOCBAQCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CiAKIC8qKgogICog c3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgLSBHRU0gb2JqZWN0IGJhY2tlZCBieSBWUkFNCi0g KiBAZ2VtOglHRU0gb2JqZWN0CiAgKiBAYm86CQlUVE0gYnVmZmVyIG9iamVjdAotICogQGttYXA6 CU1hcHBpbmcgaW5mb3JtYXRpb24gZm9yIEBibworICogQG1hcDoJTWFwcGluZyBpbmZvcm1hdGlv biBmb3IgQGJvCiAgKiBAcGxhY2VtZW50OglUVE0gcGxhY2VtZW50IGluZm9ybWF0aW9uLiBTdXBw b3J0ZWQgcGxhY2VtZW50cyBhcmUgXAogCSVUVE1fUExfVlJBTSBhbmQgJVRUTV9QTF9TWVNURU0K ICAqIEBwbGFjZW1lbnRzOglUVE0gcGxhY2VtZW50IGluZm9ybWF0aW9uLgpAQCAtNTAsMTUgKzUw LDE1IEBAIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKICAqLwogc3RydWN0IGRybV9nZW1fdnJhbV9v YmplY3QgewogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCBibzsKLQlzdHJ1Y3QgdHRtX2JvX2tt YXBfb2JqIGttYXA7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAogCS8qKgotCSAqIEBrbWFw X3VzZV9jb3VudDoKKwkgKiBAdm1hcF91c2VfY291bnQ6CiAJICoKIAkgKiBSZWZlcmVuY2UgY291 bnQgb24gdGhlIHZpcnR1YWwgYWRkcmVzcy4KIAkgKiBUaGUgYWRkcmVzcyBhcmUgdW4tbWFwcGVk IHdoZW4gdGhlIGNvdW50IHJlYWNoZXMgemVyby4KIAkgKi8KLQl1bnNpZ25lZCBpbnQga21hcF91 c2VfY291bnQ7CisJdW5zaWduZWQgaW50IHZtYXBfdXNlX2NvdW50OwogCiAJLyogU3VwcG9ydGVk IHBsYWNlbWVudHMgYXJlICVUVE1fUExfVlJBTSBhbmQgJVRUTV9QTF9TWVNURU0gKi8KIAlzdHJ1 Y3QgdHRtX3BsYWNlbWVudCBwbGFjZW1lbnQ7CkBAIC05Nyw4ICs5Nyw4IEBAIHU2NCBkcm1fZ2Vt X3ZyYW1fbW1hcF9vZmZzZXQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyk7CiBzNjQg ZHJtX2dlbV92cmFtX29mZnNldChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKTsKIGlu dCBkcm1fZ2VtX3ZyYW1fcGluKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHVuc2ln bmVkIGxvbmcgcGxfZmxhZyk7CiBpbnQgZHJtX2dlbV92cmFtX3VucGluKHN0cnVjdCBkcm1fZ2Vt X3ZyYW1fb2JqZWN0ICpnYm8pOwotdm9pZCAqZHJtX2dlbV92cmFtX3ZtYXAoc3RydWN0IGRybV9n ZW1fdnJhbV9vYmplY3QgKmdibyk7Ci12b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRy bV9nZW1fdnJhbV9vYmplY3QgKmdibywgdm9pZCAqdmFkZHIpOworaW50IGRybV9nZW1fdnJhbV92 bWFwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAq bWFwKTsKK3ZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCBkcm1fZ2VtX3ZyYW1fZmls bF9jcmVhdGVfZHVtYihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCQkJICBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotLSAKMi4yOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25A bGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24u b3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=