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,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable 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 A8583C43457 for ; Tue, 20 Oct 2020 12:21:50 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 E46032222F for ; Tue, 20 Oct 2020 12:21:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QikpsjYt" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E46032222F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=sPxkdZj32S9+UWA9UIEVGpQspO08ISsmMivzhRXmfrk=; b=QikpsjYtdS1ZucSaRCh61ipKf 7jojDlVGE0ifmzwOOHEj/zl03Gao0GZZR6sZUppAXyALyERPtKki6ejZhBqmcqy/gbDNF4RYOLO6Y X2Nr5e71NbqDyrvf/humqVzdjpHs8N/fSQFcyJDI7HUVCOB52xx3sI9CmFYiE+5jfM7HGLy1ez7VT x8XNCC7fmfZGFCuSuFXiNBbBAcQTvAOHx6l1eEw2FzVrcYF0qrmceoMOuVvLg/snCUATPhJQbdaDX pDwfpPi4XTkTiMeLWOKZu5GdfD++Agr4BzZSgydlgRyH+LuWmhtncTGK4UAFmC0zlkWtlLJJgMIg3 qtysVvVyw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kUqe8-0004gI-Pe; Tue, 20 Oct 2020 12:21:44 +0000 Received: from mx2.suse.de ([195.135.220.15]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kUqdM-0004Cc-RR; Tue, 20 Oct 2020 12:21:15 +0000 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 D8EB1B1DC; Tue, 20 Oct 2020 12:20:53 +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 v5 06/10] drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends Date: Tue, 20 Oct 2020 14:20:42 +0200 Message-Id: <20201020122046.31167-7-tzimmermann@suse.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020122046.31167-1-tzimmermann@suse.de> References: <20201020122046.31167-1-tzimmermann@suse.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201020_082057_381829_C089E4FA X-CRM114-Status: GOOD ( 28.66 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org VGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgdm1hcC92dW5tYXAncyB1c2Ugb2YgcmF3IHBvaW50ZXJz IGluIEdFTSBvYmplY3QKZnVuY3Rpb25zIHdpdGggaW5zdGFuY2VzIG9mIHN0cnVjdCBkbWFfYnVm X21hcC4gR0VNIGJhY2tlbmRzIGFyZQpjb252ZXJ0ZWQgYXMgd2VsbC4gRm9yIG1vc3Qgb2YgdGhl bSwgdGhpcyBzaW1wbHkgY2hhbmdlcyB0aGUgcmV0dXJuZWQgdHlwZS4KClRUTS1iYXNlZCBkcml2 ZXJzIG5vdyByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZW1v cnksCmVpdGhlciBzeXN0ZW0gb3IgSS9PIG1lbW9yeS4gR0VNIFZSQU0gaGVscGVycyBhbmQgcXhs IG5vdyB1c2UgdHRtX2JvX3ZtYXAoKQpldCBhbC4gQW1kZ3B1LCBub3V2ZWF1IGFuZCByYWRlb24g dXNlIGRybV9nZW1fdHRtX3ZtYXAoKSBldCBhbCBpbnN0ZWFkIG9mCmltcGxlbWVudGluZyB0aGVp ciBvd24gdm1hcCBjYWxsYmFja3MuCgp2NToKCSogdXBkYXRlIHZrbXMgYWZ0ZXIgc3dpdGNoIHRv IHNobWVtCnY0OgoJKiB1c2UgdHRtX2JvX3ZtYXAoKSwgZHJtX2dlbV90dG1fdm1hcCgpLCBldCBh bC4gKERhbmllbCwgQ2hyaXN0aWFuKQoJKiBmaXggYSB0cmFpbGluZyB7IGluIGRybV9nZW1fdm1h cCgpCgkqIHJlbW92ZSBzZXZlcmFsIGVtcHR5IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNvbnZlcnRp bmcgdGhlbSAoRGFuaWVsKQoJKiBjb21tZW50IHVzZXMgb2YgcmF3IHBvaW50ZXJzIHdpdGggYSBU T0RPIChEYW5pZWwpCgkqIFRPRE8gbGlzdDogY29udmVydCBtb3JlIGhlbHBlcnMgdG8gdXNlIHN0 cnVjdCBkbWFfYnVmX21hcAoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1t ZXJtYW5uQHN1c2UuZGU+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29l bmlnQGFtZC5jb20+ClRlc3RlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJvcmcub3JnPgot LS0KIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0ICAgICAgICAgICAgICAgICAgfCAgMTggKysr KwogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIHwgIDM2IC0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmggfCAgIDIgLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jICAgICB8ICAgNSArLQogZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICB8ICAgMSAtCiBkcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9jdXJzb3IuYyAgICAgICAgICAgIHwgIDI3ICsrKy0tCiBkcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcnYuaCAgICAgICAgICAgICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2dlbS5jICAgICAgICAgICAgICAgICAgIHwgIDIzICsrKy0tCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2dlbV9jbWFfaGVscGVyLmMgICAgICAgIHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyAgICAgIHwgIDQ4ICsrKysrLS0tLQogZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYyAgICAgICB8IDEwNyArKysrKysrKysrLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaCAgICAgICB8ICAgMiArLQog ZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYyB8ICAgOSArLQogZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYyAgICAgICAgICAgICB8ICAgNiArLQogZHJpdmVy cy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jICAgICAgICAgICB8ICAxMSArLQogZHJpdmVycy9n cHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUv ZHJtL25vdXZlYXUvS2NvbmZpZyAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9ub3V2ZWF1X2JvLmggICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfZ2VtLmMgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfZ2VtLmggICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV9wcmltZS5jICAgICB8ICAyMCAtLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfcGVyZmNudC5jIHwgIDE0ICstLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxh eS5jICAgICAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jICAg ICAgICAgICAgICB8ICAxNCArKy0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oICAgICAg ICAgICAgICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5jICAgICAg ICAgICAgfCAgMzEgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuaCAgICAg ICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9wcmltZS5jICAgICAgICAg ICAgIHwgIDEyICstLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCAgICAgICAgICAg ICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyAgICAgICAgIHwg ICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jICAgICAgIHwgIDIw IC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgfCAgMjIg KystLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uaCB8ICAgNCAr LQogZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLmMgICAgICAgICAgICAgICB8ICAxMCArLQog ZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20xMnUzMjAuYyAgICAgICAgICAgICB8ICAxMCArLQogZHJp dmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jICAgICAgICAgICB8ICAgOCArLQogZHJpdmVy cy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21vZGUuYyAgICAgICB8ICAxMSArLQogZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfYm8uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZHJ2LmggICAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L3ZnZW0vdmdlbV9kcnYuYyAgICAgICAgICAgICB8ICAxNiArKy0KIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyAgICAgICAgICAgfCAgMTUgKystCiBkcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX3dyaXRlYmFjay5jICAgICAgIHwgIDIyICsrLS0KIGRyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9nZW0uYyAgICAgfCAgMTggKystLQogZHJpdmVycy9ncHUvZHJtL3hlbi94 ZW5fZHJtX2Zyb250X2dlbS5oICAgICB8ICAgNiArLQogaW5jbHVkZS9kcm0vZHJtX2dlbS5oICAg ICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogaW5jbHVkZS9kcm0vZHJtX2dlbV9jbWFfaGVs cGVyLmggICAgICAgICAgICB8ICAgMiArLQogaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxw ZXIuaCAgICAgICAgICB8ICAgNCArLQogaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5o ICAgICAgICAgICB8ICAxNCArLS0KIDQ5IGZpbGVzIGNoYW5nZWQsIDM0NSBpbnNlcnRpb25zKCsp LCAzMDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5y c3QgYi9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdAppbmRleCA3MDA2MzdlMjVlY2QuLjdlNmZj M2MwNGFkZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKKysrIGIvRG9j dW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKQEAgLTQ0Niw2ICs0NDYsMjQgQEAgQ29udGFjdDogVmls bGUgU3lyasOkbMOkLCBEYW5pZWwgVmV0dGVyCiAKIExldmVsOiBJbnRlcm1lZGlhdGUKIAorVXNl IHN0cnVjdCBkbWFfYnVmX21hcCB0aHJvdWdob3V0IGNvZGViYXNlCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUG9pbnRlcnMgdG8gc2hhcmVkIGRldmljZSBt ZW1vcnkgYXJlIHN0b3JlZCBpbiBzdHJ1Y3QgZG1hX2J1Zl9tYXAuIEVhY2gKK2luc3RhbmNlIGtu b3dzIHdoZXRoZXIgaXQgcmVmZXJzIHRvIHN5c3RlbSBvciBJL08gbWVtb3J5LiBNb3N0IG9mIHRo ZSBEUk0td2lkZQoraW50ZXJmYWNlIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gdXNlIHN0cnVjdCBk bWFfYnVmX21hcCwgYnV0IGltcGxlbWVudGF0aW9ucworb2Z0ZW4gc3RpbGwgdXNlIHJhdyBwb2lu dGVycy4KKworVGhlIHRhc2sgaXMgdG8gdXNlIHN0cnVjdCBkbWFfYnVmX21hcCB3aGVyZSBpdCBt YWtlcyBzZW5zZS4KKworKiBNZW1vcnkgbWFuYWdlcnMgc2hvdWxkIHVzZSBzdHJ1Y3QgZG1hX2J1 Zl9tYXAgZm9yIGRtYS1idWYtaW1wb3J0ZWQgYnVmZmVycy4KKyogVFRNIG1pZ2h0IGJlbmVmaXQg ZnJvbSB1c2luZyBzdHJ1Y3QgZG1hX2J1Zl9tYXAgaW50ZXJuYWxseS4KKyogRnJhbWVidWZmZXIg Y29weWluZyBhbmQgYmxpdHRpbmcgaGVscGVycyBzaG91bGQgb3BlcmF0ZSBvbiBzdHJ1Y3QgZG1h X2J1Zl9tYXAuCisKK0NvbnRhY3Q6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNl LmRlPiwgQ2hyaXN0aWFuIEvDtm5pZywgRGFuaWVsIFZldHRlcgorCitMZXZlbDogSW50ZXJtZWRp YXRlCisKIAogQ29yZSByZWZhY3RvcmluZ3MKID09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4 IDMyMjU3MTg5ZTA5Yi4uZTQ3OWIwNGU5NTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v S2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMjM5LDYgKzIzOSw3IEBA IGNvbmZpZyBEUk1fUkFERU9OCiAJc2VsZWN0IEZXX0xPQURFUgogICAgICAgICBzZWxlY3QgRFJN X0tNU19IRUxQRVIKICAgICAgICAgc2VsZWN0IERSTV9UVE0KKwlzZWxlY3QgRFJNX1RUTV9IRUxQ RVIKIAlzZWxlY3QgUE9XRVJfU1VQUExZCiAJc2VsZWN0IEhXTU9OCiAJc2VsZWN0IEJBQ0tMSUdI VF9DTEFTU19ERVZJQ0UKQEAgLTI1OSw2ICsyNjAsNyBAQCBjb25maWcgRFJNX0FNREdQVQogCXNl bGVjdCBEUk1fS01TX0hFTFBFUgogCXNlbGVjdCBEUk1fU0NIRUQKIAlzZWxlY3QgRFJNX1RUTQor CXNlbGVjdCBEUk1fVFRNX0hFTFBFUgogCXNlbGVjdCBQT1dFUl9TVVBQTFkKIAlzZWxlY3QgSFdN T04KIAlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKaW5kZXggNWI0NjVhYjc3NGQxLi5lNTkxOWVmY2E4NzAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwpAQCAtNDEs NDIgKzQxLDYgQEAKICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UtYXJyYXkuaD4KICNpbmNsdWRl IDxsaW51eC9wY2ktcDJwZG1hLmg+CiAKLS8qKgotICogYW1kZ3B1X2dlbV9wcmltZV92bWFwIC0g JmRtYV9idWZfb3BzLnZtYXAgaW1wbGVtZW50YXRpb24KLSAqIEBvYmo6IEdFTSBCTwotICoKLSAq IFNldHMgdXAgYW4gaW4ta2VybmVsIHZpcnR1YWwgbWFwcGluZyBvZiB0aGUgQk8ncyBtZW1vcnku Ci0gKgotICogUmV0dXJuczoKLSAqIFRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIG1hcHBpbmcg b3IgYW4gZXJyb3IgcG9pbnRlci4KLSAqLwotdm9pZCAqYW1kZ3B1X2dlbV9wcmltZV92bWFwKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gZ2Vt X3RvX2FtZGdwdV9ibyhvYmopOwotCWludCByZXQ7Ci0KLQlyZXQgPSB0dG1fYm9fa21hcCgmYm8t PnRibywgMCwgYm8tPnRiby5udW1fcGFnZXMsCi0JCQkgICZiby0+ZG1hX2J1Zl92bWFwKTsKLQlp ZiAocmV0KQotCQlyZXR1cm4gRVJSX1BUUihyZXQpOwotCi0JcmV0dXJuIGJvLT5kbWFfYnVmX3Zt YXAudmlydHVhbDsKLX0KLQotLyoqCi0gKiBhbWRncHVfZ2VtX3ByaW1lX3Z1bm1hcCAtICZkbWFf YnVmX29wcy52dW5tYXAgaW1wbGVtZW50YXRpb24KLSAqIEBvYmo6IEdFTSBCTwotICogQHZhZGRy OiBWaXJ0dWFsIGFkZHJlc3MgKHVudXNlZCkKLSAqCi0gKiBUZWFycyBkb3duIHRoZSBpbi1rZXJu ZWwgdmlydHVhbCBtYXBwaW5nIG9mIHRoZSBCTydzIG1lbW9yeS4KLSAqLwotdm9pZCBhbWRncHVf Z2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIp Ci17Ci0Jc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7Ci0KLQl0 dG1fYm9fa3VubWFwKCZiby0+ZG1hX2J1Zl92bWFwKTsKLX0KLQogLyoqCiAgKiBhbWRncHVfZ2Vt X3ByaW1lX21tYXAgLSAmZHJtX2RyaXZlci5nZW1fcHJpbWVfbW1hcCBpbXBsZW1lbnRhdGlvbgog ICogQG9iajogR0VNIEJPCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZG1hX2J1Zi5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9i dWYuaAppbmRleCAyYzVjODRhMDZiYjkuLjM5YjViOTYxNmZkOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5oCkBAIC0zMSw4ICszMSw2IEBAIHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkJCQkJICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKTsKIGJvb2wgYW1kZ3B1X2Rt YWJ1Zl9pc194Z21pX2FjY2Vzc2libGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJ ICAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8pOwotdm9pZCAqYW1kZ3B1X2dlbV9wcmltZV92bWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgYW1kZ3B1X2dlbV9wcmltZV92dW5t YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKIGludCBhbWRncHVf Z2VtX3ByaW1lX21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dl bS5jCmluZGV4IGJlMDhhNjNlZjU4Yy4uNTc2NjU5ODI3ZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2dlbS5jCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlIDxkcm0v YW1kZ3B1X2RybS5oPgogI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZ2VtX3R0bV9oZWxwZXIuaD4KIAogI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUg ImFtZGdwdV9kaXNwbGF5LmgiCkBAIC0yMjAsOCArMjIxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZ2VtX29iamVjdF9mdW5jcyBhbWRncHVfZ2VtX29iamVjdF9mdW5jcyA9IHsKIAkub3Bl biA9IGFtZGdwdV9nZW1fb2JqZWN0X29wZW4sCiAJLmNsb3NlID0gYW1kZ3B1X2dlbV9vYmplY3Rf Y2xvc2UsCiAJLmV4cG9ydCA9IGFtZGdwdV9nZW1fcHJpbWVfZXhwb3J0LAotCS52bWFwID0gYW1k Z3B1X2dlbV9wcmltZV92bWFwLAotCS52dW5tYXAgPSBhbWRncHVfZ2VtX3ByaW1lX3Z1bm1hcCwK Kwkudm1hcCA9IGRybV9nZW1fdHRtX3ZtYXAsCisJLnZ1bm1hcCA9IGRybV9nZW1fdHRtX3Z1bm1h cCwKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgK aW5kZXggMTMyZTVmOTU1MTgwLi4wMTI5NmVmMGQ2NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKQEAgLTEwMCw3ICsxMDAsNiBAQCBzdHJ1Y3QgYW1kZ3B1 X2JvIHsKIAlzdHJ1Y3QgYW1kZ3B1X2JvCQkqcGFyZW50OwogCXN0cnVjdCBhbWRncHVfYm8JCSpz aGFkb3c7CiAKLQlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqCQlkbWFfYnVmX3ZtYXA7CiAJc3RydWN0 IGFtZGdwdV9tbgkJKm1uOwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X2N1cnNvci5jIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfY3Vyc29yLmMKaW5kZXggZTBmNDYx MzkxOGFkLi43NDJkNDNhN2VkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X2N1cnNvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2N1cnNvci5jCkBAIC0zOSw3 ICszOSw3IEBAIHN0YXRpYyB2b2lkIGFzdF9jdXJzb3JfZmluaShzdHJ1Y3QgYXN0X3ByaXZhdGUg KmFzdCkKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGFzdC0+Y3Vyc29yLmdibyk7ICsr aSkgewogCQlnYm8gPSBhc3QtPmN1cnNvci5nYm9baV07Ci0JCWRybV9nZW1fdnJhbV92dW5tYXAo Z2JvLCBhc3QtPmN1cnNvci52YWRkcltpXSk7CisJCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCAm YXN0LT5jdXJzb3IubWFwW2ldKTsKIAkJZHJtX2dlbV92cmFtX3VucGluKGdibyk7CiAJCWRybV9n ZW1fdnJhbV9wdXQoZ2JvKTsKIAl9CkBAIC02MCw3ICs2MCw3IEBAIGludCBhc3RfY3Vyc29yX2lu aXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZh c3QtPmJhc2U7CiAJc2l6ZV90IHNpemUsIGk7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3Qg KmdibzsKLQl2b2lkIF9faW9tZW0gKnZhZGRyOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJ aW50IHJldDsKIAogCXNpemUgPSByb3VuZHVwKEFTVF9IV0NfU0laRSArIEFTVF9IV0NfU0lHTkFU VVJFX1NJWkUsIFBBR0VfU0laRSk7CkBAIC03NywxNiArNzcsMTUgQEAgaW50IGFzdF9jdXJzb3Jf aW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKIAkJCWRybV9nZW1fdnJhbV9wdXQoZ2JvKTsK IAkJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV9wdXQ7CiAJCX0KLQkJdmFkZHIgPSBkcm1fZ2VtX3Zy YW1fdm1hcChnYm8pOwotCQlpZiAoSVNfRVJSKHZhZGRyKSkgewotCQkJcmV0ID0gUFRSX0VSUih2 YWRkcik7CisJCXJldCA9IGRybV9nZW1fdnJhbV92bWFwKGdibywgJm1hcCk7CisJCWlmIChyZXQp IHsKIAkJCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOwogCQkJZHJtX2dlbV92cmFtX3B1dChnYm8p OwogCQkJZ290byBlcnJfZHJtX2dlbV92cmFtX3B1dDsKIAkJfQogCiAJCWFzdC0+Y3Vyc29yLmdi b1tpXSA9IGdibzsKLQkJYXN0LT5jdXJzb3IudmFkZHJbaV0gPSB2YWRkcjsKKwkJYXN0LT5jdXJz b3IubWFwW2ldID0gbWFwOwogCX0KIAogCXJldHVybiBkcm1tX2FkZF9hY3Rpb25fb3JfcmVzZXQo ZGV2LCBhc3RfY3Vyc29yX3JlbGVhc2UsIE5VTEwpOwpAQCAtOTUsNyArOTQsNyBAQCBpbnQgYXN0 X2N1cnNvcl9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQogCXdoaWxlIChpKSB7CiAJCS0t aTsKIAkJZ2JvID0gYXN0LT5jdXJzb3IuZ2JvW2ldOwotCQlkcm1fZ2VtX3ZyYW1fdnVubWFwKGdi bywgYXN0LT5jdXJzb3IudmFkZHJbaV0pOworCQlkcm1fZ2VtX3ZyYW1fdnVubWFwKGdibywgJmFz dC0+Y3Vyc29yLm1hcFtpXSk7CiAJCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOwogCQlkcm1fZ2Vt X3ZyYW1fcHV0KGdibyk7CiAJfQpAQCAtMTcwLDYgKzE2OSw3IEBAIGludCBhc3RfY3Vyc29yX2Js aXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmYXN0LT5iYXNlOwogCXN0cnVjdCBkcm1fZ2Vt X3ZyYW1fb2JqZWN0ICpnYm87CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAlpbnQgcmV0Owog CXZvaWQgKnNyYzsKIAl2b2lkIF9faW9tZW0gKmRzdDsKQEAgLTE4MywxOCArMTgzLDE3IEBAIGlu dCBhc3RfY3Vyc29yX2JsaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiKQogCXJldCA9IGRybV9nZW1fdnJhbV9waW4oZ2JvLCAwKTsKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwotCXNyYyA9IGRybV9nZW1fdnJhbV92bWFwKGdibyk7Ci0JaWYgKElT X0VSUihzcmMpKSB7Ci0JCXJldCA9IFBUUl9FUlIoc3JjKTsKKwlyZXQgPSBkcm1fZ2VtX3ZyYW1f dm1hcChnYm8sICZtYXApOworCWlmIChyZXQpCiAJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV91bnBp bjsKLQl9CisJc3JjID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBVc2UgbWFwcGluZyBhYnN0cmFjdGlv biBwcm9wZXJseSAqLwogCi0JZHN0ID0gYXN0LT5jdXJzb3IudmFkZHJbYXN0LT5jdXJzb3IubmV4 dF9pbmRleF07CisJZHN0ID0gYXN0LT5jdXJzb3IubWFwW2FzdC0+Y3Vyc29yLm5leHRfaW5kZXhd LnZhZGRyX2lvbWVtOwogCiAJLyogZG8gZGF0YSB0cmFuc2ZlciB0byBjdXJzb3IgQk8gKi8KIAl1 cGRhdGVfY3Vyc29yX2ltYWdlKGRzdCwgc3JjLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQpOwogCi0J ZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8sIHNyYyk7CisJZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8s ICZtYXApOwogCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOwogCiAJcmV0dXJuIDA7CkBAIC0yNTcs NyArMjU2LDcgQEAgdm9pZCBhc3RfY3Vyc29yX3Nob3coc3RydWN0IGFzdF9wcml2YXRlICphc3Qs IGludCB4LCBpbnQgeSwKIAl1OCBfX2lvbWVtICpzaWc7CiAJdTgganJlZzsKIAotCWRzdCA9IGFz dC0+Y3Vyc29yLnZhZGRyW2FzdC0+Y3Vyc29yLm5leHRfaW5kZXhdOworCWRzdCA9IGFzdC0+Y3Vy c29yLm1hcFthc3QtPmN1cnNvci5uZXh0X2luZGV4XS52YWRkcjsKIAogCXNpZyA9IGRzdCArIEFT VF9IV0NfU0laRTsKIAl3cml0ZWwoeCwgc2lnICsgQVNUX0hXQ19TSUdOQVRVUkVfWCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2Rydi5oCmluZGV4IDQ2NzA0OWNhODQzMC4uZjk2MzE0MWRkODUxIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9kcnYuaApAQCAtMjgsMTAgKzI4LDExIEBACiAjaWZuZGVmIF9fQVNUX0RSVl9IX18KICNk ZWZpbmUgX19BU1RfRFJWX0hfXwogCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRl IDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8 bGludXgvaTJjLmg+CiAjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+CisjaW5jbHVkZSA8 bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVkZSA8ZHJtL2Ry bV9jb25uZWN0b3IuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KQEAgLTEzMSw3ICsxMzIs NyBAQCBzdHJ1Y3QgYXN0X3ByaXZhdGUgewogCiAJc3RydWN0IHsKIAkJc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKmdib1tBU1RfREVGQVVMVF9IV0NfTlVNXTsKLQkJdm9pZCBfX2lvbWVtICp2 YWRkcltBU1RfREVGQVVMVF9IV0NfTlVNXTsKKwkJc3RydWN0IGRtYV9idWZfbWFwIG1hcFtBU1Rf REVGQVVMVF9IV0NfTlVNXTsKIAkJdW5zaWduZWQgaW50IG5leHRfaW5kZXg7CiAJfSBjdXJzb3I7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbS5jCmluZGV4IDFkYTY3ZDM0ZTU1ZC4uYTg5YWQ0NTcwZTNjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2Vt LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVk ZSA8bGludXgvc2htZW1fZnMuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVk ZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgog I2luY2x1ZGUgPGxpbnV4L3BhZ2V2ZWMuaD4KIApAQCAtMTIwNywyNiArMTIwOCwzMCBAQCB2b2lk IGRybV9nZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAKIHZvaWQgKmRybV9n ZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIHsKLQl2b2lkICp2YWRkcjsKKwlz dHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOworCWludCByZXQ7CiAKLQlpZiAob2JqLT5mdW5jcy0+dm1h cCkKLQkJdmFkZHIgPSBvYmotPmZ1bmNzLT52bWFwKG9iaik7Ci0JZWxzZQotCQl2YWRkciA9IEVS Ul9QVFIoLUVPUE5PVFNVUFApOworCWlmICghb2JqLT5mdW5jcy0+dm1hcCkKKwkJcmV0dXJuIEVS Ul9QVFIoLUVPUE5PVFNVUFApOwogCi0JaWYgKCF2YWRkcikKLQkJdmFkZHIgPSBFUlJfUFRSKC1F Tk9NRU0pOworCXJldCA9IG9iai0+ZnVuY3MtPnZtYXAob2JqLCAmbWFwKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gRVJSX1BUUihyZXQpOworCWVsc2UgaWYgKGRtYV9idWZfbWFwX2lzX251bGwoJm1h cCkpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JcmV0dXJuIHZhZGRyOworCXJldHVy biBtYXAudmFkZHI7CiB9CiAKIHZvaWQgZHJtX2dlbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHZvaWQgKnZhZGRyKQogeworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFf QlVGX01BUF9JTklUX1ZBRERSKHZhZGRyKTsKKwogCWlmICghdmFkZHIpCiAJCXJldHVybjsKIAog CWlmIChvYmotPmZ1bmNzLT52dW5tYXApCi0JCW9iai0+ZnVuY3MtPnZ1bm1hcChvYmosIHZhZGRy KTsKKwkJb2JqLT5mdW5jcy0+dnVubWFwKG9iaiwgJm1hcCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9nZW1fY21hX2hlbHBlci5jCmluZGV4IGQ1Mjc0ODVlYTBiNy4uYjU3ZTNlOTIyMmYwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jCkBAIC01MTksNiArNTE5LDggQEAgRVhQ T1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCk7CiAgKiBkcm1fZ2VtX2NtYV9w cmltZV92bWFwIC0gbWFwIGEgQ01BIEdFTSBvYmplY3QgaW50byB0aGUga2VybmVsJ3MgdmlydHVh bAogICogICAgIGFkZHJlc3Mgc3BhY2UKICAqIEBvYmo6IEdFTSBvYmplY3QKKyAqIEBtYXA6IFJl dHVybnMgdGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIENNQSBHRU0gb2JqZWN0J3Mg YmFja2luZworICogICAgICAgc3RvcmUuCiAgKgogICogVGhpcyBmdW5jdGlvbiBtYXBzIGEgYnVm ZmVyIGV4cG9ydGVkIHZpYSBEUk0gUFJJTUUgaW50byB0aGUga2VybmVsJ3MKICAqIHZpcnR1YWwg YWRkcmVzcyBzcGFjZS4gU2luY2UgdGhlIENNQSBidWZmZXJzIGFyZSBhbHJlYWR5IG1hcHBlZCBp bnRvIHRoZQpAQCAtNTI3LDEzICs1MjksMTUgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9j bWFfcHJpbWVfbW1hcCk7CiAgKiBkcml2ZXIncyAmZHJtX2dlbV9vYmplY3RfZnVuY3Mudm1hcCBj YWxsYmFjay4KICAqCiAgKiBSZXR1cm5zOgotICogVGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mg b2YgdGhlIENNQSBHRU0gb2JqZWN0J3MgYmFja2luZyBzdG9yZS4KKyAqIDAgb24gc3VjY2Vzcywg b3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotdm9pZCAqZHJtX2dlbV9j bWFfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCBkcm1fZ2VtX2Nt YV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpjbWFfb2JqID0gdG9fZHJt X2dlbV9jbWFfb2JqKG9iaik7CiAKLQlyZXR1cm4gY21hX29iai0+dmFkZHI7CisJZG1hX2J1Zl9t YXBfc2V0X3ZhZGRyKG1hcCwgY21hX29iai0+dmFkZHIpOworCisJcmV0dXJuIDA7CiB9CiBFWFBP UlRfU1lNQk9MX0dQTChkcm1fZ2VtX2NtYV9wcmltZV92bWFwKTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2dlbV9zaG1lbV9oZWxwZXIuYwppbmRleCBmYjExZGY3YWNlZDUuLjU1NTNmNThmNjhmMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKQEAgLTI1OCwxOSArMjU4LDI1IEBA IHZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIH0K IEVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV91bnBpbik7CiAKLXN0YXRpYyB2b2lkICpkcm1f Z2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0p CitzdGF0aWMgaW50IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2ht ZW1fb2JqZWN0ICpzaG1lbSwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7Ci0Jc3RydWN0IGRtYV9idWZfbWFwIG1h cDsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChzaG1lbS0+dm1hcF91c2VfY291bnQrKyA+IDApCi0J CXJldHVybiBzaG1lbS0+dmFkZHI7CisJaWYgKHNobWVtLT52bWFwX3VzZV9jb3VudCsrID4gMCkg eworCQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBzaG1lbS0+dmFkZHIpOworCQlyZXR1cm4g MDsKKwl9CiAKIAlpZiAob2JqLT5pbXBvcnRfYXR0YWNoKSB7Ci0JCXJldCA9IGRtYV9idWZfdm1h cChvYmotPmltcG9ydF9hdHRhY2gtPmRtYWJ1ZiwgJm1hcCk7Ci0JCWlmICghcmV0KQotCQkJc2ht ZW0tPnZhZGRyID0gbWFwLnZhZGRyOworCQlyZXQgPSBkbWFfYnVmX3ZtYXAob2JqLT5pbXBvcnRf YXR0YWNoLT5kbWFidWYsIG1hcCk7CisJCWlmICghcmV0KSB7CisJCQlpZiAoV0FSTl9PTihtYXAt PmlzX2lvbWVtKSkgeworCQkJCXJldCA9IC1FSU87CisJCQkJZ290byBlcnJfcHV0X3BhZ2VzOwor CQkJfQorCQkJc2htZW0tPnZhZGRyID0gbWFwLT52YWRkcjsKKwkJfQogCX0gZWxzZSB7CiAJCXBn cHJvdF90IHByb3QgPSBQQUdFX0tFUk5FTDsKIApAQCAtMjg0LDYgKzI5MCw4IEBAIHN0YXRpYyB2 b2lkICpkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqc2htZW0pCiAJCQkJICAgIFZNX01BUCwgcHJvdCk7CiAJCWlmICghc2htZW0tPnZhZGRyKQog CQkJcmV0ID0gLUVOT01FTTsKKwkJZWxzZQorCQkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwg c2htZW0tPnZhZGRyKTsKIAl9CiAKIAlpZiAocmV0KSB7CkBAIC0yOTEsNyArMjk5LDcgQEAgc3Rh dGljIHZvaWQgKmRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1f b2JqZWN0ICpzaG1lbSkKIAkJZ290byBlcnJfcHV0X3BhZ2VzOwogCX0KIAotCXJldHVybiBzaG1l bS0+dmFkZHI7CisJcmV0dXJuIDA7CiAKIGVycl9wdXRfcGFnZXM6CiAJaWYgKCFvYmotPmltcG9y dF9hdHRhY2gpCkBAIC0yOTksMTIgKzMwNywxNCBAQCBzdGF0aWMgdm9pZCAqZHJtX2dlbV9zaG1l bV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQogZXJyX3pl cm9fdXNlOgogCXNobWVtLT52bWFwX3VzZV9jb3VudCA9IDA7CiAKLQlyZXR1cm4gRVJSX1BUUihy ZXQpOworCXJldHVybiByZXQ7CiB9CiAKIC8qCiAgKiBkcm1fZ2VtX3NobWVtX3ZtYXAgLSBDcmVh dGUgYSB2aXJ0dWFsIG1hcHBpbmcgZm9yIGEgc2htZW0gR0VNIG9iamVjdAogICogQHNobWVtOiBz aG1lbSBHRU0gb2JqZWN0CisgKiBAbWFwOiBSZXR1cm5zIHRoZSBrZXJuZWwgdmlydHVhbCBhZGRy ZXNzIG9mIHRoZSBTSE1FTSBHRU0gb2JqZWN0J3MgYmFja2luZworICogICAgICAgc3RvcmUuCiAg KgogICogVGhpcyBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoYXQgYSBjb250aWd1b3VzIGtlcm5lbCB2 aXJ0dWFsIGFkZHJlc3MgbWFwcGluZwogICogZXhpc3RzIGZvciB0aGUgYnVmZmVyIGJhY2tpbmcg dGhlIHNobWVtIEdFTSBvYmplY3QuCkBAIC0zMTgsMjYgKzMyOCwyNSBAQCBzdGF0aWMgdm9pZCAq ZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNo bWVtKQogICogUmV0dXJuczoKICAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KICAqLwotdm9pZCAqZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQoraW50IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1f c2htZW1fb2JqZWN0ICpzaG1lbSA9IHRvX2RybV9nZW1fc2htZW1fb2JqKG9iaik7Ci0Jdm9pZCAq dmFkZHI7CiAJaW50IHJldDsKIAogCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmc2ht ZW0tPnZtYXBfbG9jayk7CiAJaWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQl2YWRk ciA9IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc2htZW0pOworCQlyZXR1cm4gcmV0OworCXJl dCA9IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc2htZW0sIG1hcCk7CiAJbXV0ZXhfdW5sb2Nr KCZzaG1lbS0+dm1hcF9sb2NrKTsKIAotCXJldHVybiB2YWRkcjsKKwlyZXR1cm4gcmV0OwogfQog RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3ZtYXApOwogCi1zdGF0aWMgdm9pZCBkcm1fZ2Vt X3NobWVtX3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkK K3N0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9z aG1lbV9vYmplY3QgKnNobWVtLAorCQkJCQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZzaG1lbS0+YmFzZTsKLQlzdHJ1Y3QgZG1hX2J1 Zl9tYXAgbWFwID0gRE1BX0JVRl9NQVBfSU5JVF9WQUREUihzaG1lbS0+dmFkZHIpOwogCiAJaWYg KFdBUk5fT05fT05DRSghc2htZW0tPnZtYXBfdXNlX2NvdW50KSkKIAkJcmV0dXJuOwpAQCAtMzQ2 LDcgKzM1NSw3IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1 Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQogCQlyZXR1cm47CiAKIAlpZiAob2JqLT5p bXBvcnRfYXR0YWNoKQotCQlkbWFfYnVmX3Z1bm1hcChvYmotPmltcG9ydF9hdHRhY2gtPmRtYWJ1 ZiwgJm1hcCk7CisJCWRtYV9idWZfdnVubWFwKG9iai0+aW1wb3J0X2F0dGFjaC0+ZG1hYnVmLCBt YXApOwogCWVsc2UKIAkJdnVubWFwKHNobWVtLT52YWRkcik7CiAKQEAgLTM1Nyw2ICszNjYsNyBA QCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1f c2htZW1fb2JqZWN0ICpzaG1lbSkKIC8qCiAgKiBkcm1fZ2VtX3NobWVtX3Z1bm1hcCAtIFVubWFw IGEgdmlydHVhbCBtYXBwaW5nIGZvIGEgc2htZW0gR0VNIG9iamVjdAogICogQHNobWVtOiBzaG1l bSBHRU0gb2JqZWN0CisgKiBAbWFwOiBLZXJuZWwgdmlydHVhbCBhZGRyZXNzIHdoZXJlIHRoZSBT SE1FTSBHRU0gb2JqZWN0IHdhcyBtYXBwZWQKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGNsZWFucyB1 cCBhIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3MgbWFwcGluZyBhY3F1aXJlZCBieQogICogZHJtX2dl bV9zaG1lbV92bWFwKCkuIFRoZSBtYXBwaW5nIGlzIG9ubHkgcmVtb3ZlZCB3aGVuIHRoZSB1c2Ug Y291bnQgZHJvcHMgdG8KQEAgLTM2NiwxMiArMzc2LDEyIEBAIHN0YXRpYyB2b2lkIGRybV9nZW1f c2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQog ICogYWxzbyBiZSBjYWxsZWQgYnkgZHJpdmVycyBkaXJlY3RseSwgaW4gd2hpY2ggY2FzZSBpdCB3 aWxsIGhpZGUgdGhlCiAgKiBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRtYS1idWYgaW1wb3J0ZWQgYW5k IG5hdGl2ZWx5IGFsbG9jYXRlZCBvYmplY3RzLgogICovCi12b2lkIGRybV9nZW1fc2htZW1fdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKK3ZvaWQgZHJtX2dl bV9zaG1lbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVm X21hcCAqbWFwKQogewogCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0gPSB0b19k cm1fZ2VtX3NobWVtX29iaihvYmopOwogCiAJbXV0ZXhfbG9jaygmc2htZW0tPnZtYXBfbG9jayk7 Ci0JZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHNobWVtKTsKKwlkcm1fZ2VtX3NobWVtX3Z1 bm1hcF9sb2NrZWQoc2htZW0sIG1hcCk7CiAJbXV0ZXhfdW5sb2NrKCZzaG1lbS0+dm1hcF9sb2Nr KTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV92dW5tYXApOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZ2VtX3ZyYW1faGVscGVyLmMKaW5kZXggYmZjMDU5OTQ1ZTMxLi45NmZiY2E2YzJlNWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYwpAQCAtMSw1ICsxLDYgQEAKIC8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCiAKKyNpbmNsdWRlIDxsaW51 eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogCiAjaW5jbHVkZSA8 ZHJtL2RybV9kZWJ1Z2ZzLmg+CkBAIC0xMTMsOCArMTE0LDggQEAgc3RhdGljIHZvaWQgZHJtX2dl bV92cmFtX2NsZWFudXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKIAkgKiB1cDsg b25seSByZWxlYXNlIHRoZSBHRU0gb2JqZWN0LgogCSAqLwogCi0JV0FSTl9PTihnYm8tPmttYXBf dXNlX2NvdW50KTsKLQlXQVJOX09OKGdiby0+a21hcC52aXJ0dWFsKTsKKwlXQVJOX09OKGdiby0+ dm1hcF91c2VfY291bnQpOworCVdBUk5fT04oZG1hX2J1Zl9tYXBfaXNfc2V0KCZnYm8tPm1hcCkp OwogCiAJZHJtX2dlbV9vYmplY3RfcmVsZWFzZSgmZ2JvLT5iby5iYXNlKTsKIH0KQEAgLTM3OSwy OSArMzgwLDM3IEBAIGludCBkcm1fZ2VtX3ZyYW1fdW5waW4oc3RydWN0IGRybV9nZW1fdnJhbV9v YmplY3QgKmdibykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2dlbV92cmFtX3VucGluKTsKIAotc3Rh dGljIHZvaWQgKmRybV9nZW1fdnJhbV9rbWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqZ2JvKQorc3RhdGljIGludCBkcm1fZ2VtX3ZyYW1fa21hcF9sb2NrZWQoc3RydWN0IGRy bV9nZW1fdnJhbV9vYmplY3QgKmdibywKKwkJCQkgICAgc3RydWN0IGRtYV9idWZfbWFwICptYXAp CiB7CiAJaW50IHJldDsKLQlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2JqICprbWFwID0gJmdiby0+a21h cDsKLQlib29sIGlzX2lvbWVtOwogCi0JaWYgKGdiby0+a21hcF91c2VfY291bnQgPiAwKQorCWlm IChnYm8tPnZtYXBfdXNlX2NvdW50ID4gMCkKIAkJZ290byBvdXQ7CiAKLQlyZXQgPSB0dG1fYm9f a21hcCgmZ2JvLT5ibywgMCwgZ2JvLT5iby5udW1fcGFnZXMsIGttYXApOworCXJldCA9IHR0bV9i b192bWFwKCZnYm8tPmJvLCAmZ2JvLT5tYXApOwogCWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRS KHJldCk7CisJCXJldHVybiByZXQ7CiAKIG91dDoKLQkrK2diby0+a21hcF91c2VfY291bnQ7Ci0J cmV0dXJuIHR0bV9rbWFwX29ial92aXJ0dWFsKGttYXAsICZpc19pb21lbSk7CisJKytnYm8tPnZt YXBfdXNlX2NvdW50OworCSptYXAgPSBnYm8tPm1hcDsKKworCXJldHVybiAwOwogfQogCi1zdGF0 aWMgdm9pZCBkcm1fZ2VtX3ZyYW1fa3VubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqZ2JvKQorc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywKKwkJCQkgICAgICAgc3RydWN0IGRtYV9idWZfbWFw ICptYXApCiB7Ci0JaWYgKFdBUk5fT05fT05DRSghZ2JvLT5rbWFwX3VzZV9jb3VudCkpCisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGdiby0+Ym8uYmFzZS5kZXY7CisKKwlpZiAoZHJtX1dBUk5f T05fT05DRShkZXYsICFnYm8tPnZtYXBfdXNlX2NvdW50KSkKIAkJcmV0dXJuOwotCWlmICgtLWdi by0+a21hcF91c2VfY291bnQgPiAwKQorCisJaWYgKGRybV9XQVJOX09OX09OQ0UoZGV2LCAhZG1h X2J1Zl9tYXBfaXNfZXF1YWwoJmdiby0+bWFwLCBtYXApKSkKKwkJcmV0dXJuOyAvKiBCVUc6IG1h cCBub3QgbWFwcGVkIGZyb20gdGhpcyBCTyAqLworCisJaWYgKC0tZ2JvLT52bWFwX3VzZV9jb3Vu dCA+IDApCiAJCXJldHVybjsKIAogCS8qCkBAIC00MTUsNyArNDI0LDkgQEAgc3RhdGljIHZvaWQg ZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdi bykKIC8qKgogICogZHJtX2dlbV92cmFtX3ZtYXAoKSAtIFBpbnMgYW5kIG1hcHMgYSBHRU0gVlJB TSBvYmplY3QgaW50byBrZXJuZWwgYWRkcmVzcwogICogICAgICAgICAgICAgICAgICAgICAgIHNw YWNlCi0gKiBAZ2JvOglUaGUgR0VNIFZSQU0gb2JqZWN0IHRvIG1hcAorICogQGdibzogVGhlIEdF TSBWUkFNIG9iamVjdCB0byBtYXAKKyAqIEBtYXA6IFJldHVybnMgdGhlIGtlcm5lbCB2aXJ0dWFs IGFkZHJlc3Mgb2YgdGhlIFZSQU0gR0VNIG9iamVjdCdzIGJhY2tpbmcKKyAqICAgICAgIHN0b3Jl LgogICoKICAqIFRoZSB2bWFwIGZ1bmN0aW9uIHBpbnMgYSBHRU0gVlJBTSBvYmplY3QgdG8gaXRz IGN1cnJlbnQgbG9jYXRpb24sIGVpdGhlcgogICogc3lzdGVtIG9yIHZpZGVvIG1lbW9yeSwgYW5k IG1hcHMgaXRzIGJ1ZmZlciBpbnRvIGtlcm5lbCBhZGRyZXNzIHNwYWNlLgpAQCAtNDI0LDQ4ICs0 MzUsNDQgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0IGRy bV9nZW1fdnJhbV9vYmplY3QgKmdibykKICAqIHVubWFwIGFuZCB1bnBpbiB0aGUgR0VNIFZSQU0g b2JqZWN0LgogICoKICAqIFJldHVybnM6Ci0gKiBUaGUgYnVmZmVyJ3MgdmlydHVhbCBhZGRyZXNz IG9uIHN1Y2Nlc3MsIG9yCi0gKiBhbiBFUlJfUFRSKCktZW5jb2RlZCBlcnJvciBjb2RlIG90aGVy d2lzZS4KKyAqIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lz ZS4KICAqLwotdm9pZCAqZHJtX2dlbV92cmFtX3ZtYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmpl Y3QgKmdibykKK2ludCBkcm1fZ2VtX3ZyYW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlpbnQgcmV0OwotCXZvaWQgKmJh c2U7CiAKIAlyZXQgPSB0dG1fYm9fcmVzZXJ2ZSgmZ2JvLT5ibywgdHJ1ZSwgZmFsc2UsIE5VTEwp OwogCWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7CisJCXJldHVybiByZXQ7CiAKIAly ZXQgPSBkcm1fZ2VtX3ZyYW1fcGluX2xvY2tlZChnYm8sIDApOwogCWlmIChyZXQpCiAJCWdvdG8g ZXJyX3R0bV9ib191bnJlc2VydmU7Ci0JYmFzZSA9IGRybV9nZW1fdnJhbV9rbWFwX2xvY2tlZChn Ym8pOwotCWlmIChJU19FUlIoYmFzZSkpIHsKLQkJcmV0ID0gUFRSX0VSUihiYXNlKTsKKwlyZXQg PSBkcm1fZ2VtX3ZyYW1fa21hcF9sb2NrZWQoZ2JvLCBtYXApOworCWlmIChyZXQpCiAJCWdvdG8g ZXJyX2RybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQ7Ci0JfQogCiAJdHRtX2JvX3VucmVzZXJ2ZSgm Z2JvLT5ibyk7CiAKLQlyZXR1cm4gYmFzZTsKKwlyZXR1cm4gMDsKIAogZXJyX2RybV9nZW1fdnJh bV91bnBpbl9sb2NrZWQ6CiAJZHJtX2dlbV92cmFtX3VucGluX2xvY2tlZChnYm8pOwogZXJyX3R0 bV9ib191bnJlc2VydmU6CiAJdHRtX2JvX3VucmVzZXJ2ZSgmZ2JvLT5ibyk7Ci0JcmV0dXJuIEVS Ul9QVFIocmV0KTsKKwlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZyYW1f dm1hcCk7CiAKIC8qKgogICogZHJtX2dlbV92cmFtX3Z1bm1hcCgpIC0gVW5tYXBzIGFuZCB1bnBp bnMgYSBHRU0gVlJBTSBvYmplY3QKLSAqIEBnYm86CVRoZSBHRU0gVlJBTSBvYmplY3QgdG8gdW5t YXAKLSAqIEB2YWRkcjoJVGhlIG1hcHBpbmcncyBiYXNlIGFkZHJlc3MgYXMgcmV0dXJuZWQgYnkg ZHJtX2dlbV92cmFtX3ZtYXAoKQorICogQGdibzogVGhlIEdFTSBWUkFNIG9iamVjdCB0byB1bm1h cAorICogQG1hcDogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVyZSB0aGUgVlJBTSBHRU0gb2Jq ZWN0IHdhcyBtYXBwZWQKICAqCiAgKiBBIGNhbGwgdG8gZHJtX2dlbV92cmFtX3Z1bm1hcCgpIHVu bWFwcyBhbmQgdW5waW5zIGEgR0VNIFZSQU0gYnVmZmVyLiBTZWUKICAqIHRoZSBkb2N1bWVudGF0 aW9uIGZvciBkcm1fZ2VtX3ZyYW1fdm1hcCgpIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICovCi12 b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywg dm9pZCAqdmFkZHIpCit2b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibywgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJaW50IHJldDsKIApA QCAtNDczLDcgKzQ4MCw3IEBAIHZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dl bV92cmFtX29iamVjdCAqZ2JvLCB2b2lkICp2YWRkcikKIAlpZiAoV0FSTl9PTkNFKHJldCwgInR0 bV9ib19yZXNlcnZlX2ZhaWxlZCgpOiByZXQ9JWRcbiIsIHJldCkpCiAJCXJldHVybjsKIAotCWRy bV9nZW1fdnJhbV9rdW5tYXBfbG9ja2VkKGdibyk7CisJZHJtX2dlbV92cmFtX2t1bm1hcF9sb2Nr ZWQoZ2JvLCBtYXApOwogCWRybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQoZ2JvKTsKIAogCXR0bV9i b191bnJlc2VydmUoJmdiby0+Ym8pOwpAQCAtNTY0LDE1ICs1NzEsMTMgQEAgc3RhdGljIHZvaWQg ZHJtX2dlbV92cmFtX2JvX2RyaXZlcl9tb3ZlX25vdGlmeShzdHJ1Y3QgZHJtX2dlbV92cmFtX29i amVjdCAqZ2JvLAogCQkJCQkgICAgICAgYm9vbCBldmljdCwKIAkJCQkJICAgICAgIHN0cnVjdCB0 dG1fcmVzb3VyY2UgKm5ld19tZW0pCiB7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiAqa21hcCA9 ICZnYm8tPmttYXA7CisJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9ICZnYm8tPmJvOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBiby0+YmFzZS5kZXY7CiAKLQlpZiAoV0FSTl9PTl9P TkNFKGdiby0+a21hcF91c2VfY291bnQpKQorCWlmIChkcm1fV0FSTl9PTl9PTkNFKGRldiwgZ2Jv LT52bWFwX3VzZV9jb3VudCkpCiAJCXJldHVybjsKIAotCWlmICgha21hcC0+dmlydHVhbCkKLQkJ cmV0dXJuOwotCXR0bV9ib19rdW5tYXAoa21hcCk7Ci0Ja21hcC0+dmlydHVhbCA9IE5VTEw7CisJ dHRtX2JvX3Z1bm1hcChibywgJmdiby0+bWFwKTsKIH0KIAogc3RhdGljIGludCBkcm1fZ2VtX3Zy YW1fYm9fZHJpdmVyX21vdmUoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywKQEAgLTgy OSwzNyArODM0LDMzIEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9vYmplY3RfdW5waW4oc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pCiB9CiAKIC8qKgotICogZHJtX2dlbV92cmFtX29iamVj dF92bWFwKCkgLSBcCi0JSW1wbGVtZW50cyAmc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzLnZt YXAKLSAqIEBnZW06CVRoZSBHRU0gb2JqZWN0IHRvIG1hcAorICogZHJtX2dlbV92cmFtX29iamVj dF92bWFwKCkgLQorICoJSW1wbGVtZW50cyAmc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzLnZt YXAKKyAqIEBnZW06IFRoZSBHRU0gb2JqZWN0IHRvIG1hcAorICogQG1hcDogUmV0dXJucyB0aGUg a2VybmVsIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgVlJBTSBHRU0gb2JqZWN0J3MgYmFja2luZwor ICogICAgICAgc3RvcmUuCiAgKgogICogUmV0dXJuczoKLSAqIFRoZSBidWZmZXJzIHZpcnR1YWwg YWRkcmVzcyBvbiBzdWNjZXNzLCBvcgotICogTlVMTCBvdGhlcndpc2UuCisgKiAwIG9uIHN1Y2Nl c3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyB2b2lk ICpkcm1fZ2VtX3ZyYW1fb2JqZWN0X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pCitz dGF0aWMgaW50IGRybV9nZW1fdnJhbV9vYmplY3Rfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbSwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fdnJhbV9v YmplY3QgKmdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0oZ2VtKTsKLQl2b2lkICpiYXNlOwogCi0J YmFzZSA9IGRybV9nZW1fdnJhbV92bWFwKGdibyk7Ci0JaWYgKElTX0VSUihiYXNlKSkKLQkJcmV0 dXJuIE5VTEw7Ci0JcmV0dXJuIGJhc2U7CisJcmV0dXJuIGRybV9nZW1fdnJhbV92bWFwKGdibywg bWFwKTsKIH0KIAogLyoqCi0gKiBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcCgpIC0gXAotCUlt cGxlbWVudHMgJnN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcy52dW5tYXAKLSAqIEBnZW06CVRo ZSBHRU0gb2JqZWN0IHRvIHVubWFwCi0gKiBAdmFkZHI6CVRoZSBtYXBwaW5nJ3MgYmFzZSBhZGRy ZXNzCisgKiBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcCgpIC0KKyAqCUltcGxlbWVudHMgJnN0 cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcy52dW5tYXAKKyAqIEBnZW06IFRoZSBHRU0gb2JqZWN0 IHRvIHVubWFwCisgKiBAbWFwOiBLZXJuZWwgdmlydHVhbCBhZGRyZXNzIHdoZXJlIHRoZSBWUkFN IEdFTSBvYmplY3Qgd2FzIG1hcHBlZAogICovCi1zdGF0aWMgdm9pZCBkcm1fZ2VtX3ZyYW1fb2Jq ZWN0X3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwKLQkJCQkgICAgICAgdm9pZCAq dmFkZHIpCitzdGF0aWMgdm9pZCBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3Z1bm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbSwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRy bV9nZW1fdnJhbV9vYmplY3QgKmdibyA9IGRybV9nZW1fdnJhbV9vZl9nZW0oZ2VtKTsKIAotCWRy bV9nZW1fdnJhbV92dW5tYXAoZ2JvLCB2YWRkcik7CisJZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8s IG1hcCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAppbmRleCA5 NjgyYzI2ZDg5YmIuLmY1YmU2MjdlMWRlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0 bmF2aXYvZXRuYXZpdl9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2 X2Rydi5oCkBAIC01MSw3ICs1MSw3IEBAIGludCBldG5hdml2X2lvY3RsX2dlbV9zdWJtaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIGludCBldG5hdml2X2dlbV9tbWFwKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiBpbnQgZXRuYXZp dl9nZW1fbW1hcF9vZmZzZXQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHU2NCAqb2Zmc2V0 KTsKIHN0cnVjdCBzZ190YWJsZSAqZXRuYXZpdl9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgKmV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOworaW50IGV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIGludCBl dG5hdml2X2dlbV9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAogCQkJICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogc3RydWN0IGRybV9nZW1fb2JqZWN0ICpldG5h dml2X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1lLmMgYi9k cml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbV9wcmltZS5jCmluZGV4IGE2ZDk5MzJh MzJhZS4uYmMyNTQzZGQ5ODdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X2dlbV9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf Z2VtX3ByaW1lLmMKQEAgLTIyLDkgKzIyLDE0IEBAIHN0cnVjdCBzZ190YWJsZSAqZXRuYXZpdl9n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCXJldHVy biBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYsIGV0bmF2aXZfb2JqLT5wYWdlcywgbnBh Z2VzKTsKIH0KIAotdm9pZCAqZXRuYXZpdl9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaikKK2ludCBldG5hdml2X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKLQlyZXR1cm4gZXRuYXZpdl9n ZW1fdm1hcChvYmopOworCXZvaWQgKnZhZGRyID0gZXRuYXZpdl9nZW1fdm1hcChvYmopOworCWlm ICghdmFkZHIpCisJCXJldHVybiAtRU5PTUVNOworCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAs IHZhZGRyKTsKKworCXJldHVybiAwOwogfQogCiBpbnQgZXRuYXZpdl9nZW1fcHJpbWVfbW1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jCmluZGV4IDEx MjIzZmUzNDhkZi4uODMyZTUyODBhNmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGlt YS9saW1hX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMKQEAgLTE4 MiwxNCArMTgyLDE0IEBAIHN0YXRpYyBpbnQgbGltYV9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKQogCXJldHVybiBkcm1fZ2VtX3NobWVtX3BpbihvYmopOwogfQogCi1zdGF0aWMg dm9pZCAqbGltYV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBp bnQgbGltYV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9i dWZfbWFwICptYXApCiB7CiAJc3RydWN0IGxpbWFfYm8gKmJvID0gdG9fbGltYV9ibyhvYmopOwog CiAJaWYgKGJvLT5oZWFwX3NpemUpCi0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCQlyZXR1 cm4gLUVJTlZBTDsKIAotCXJldHVybiBkcm1fZ2VtX3NobWVtX3ZtYXAob2JqKTsKKwlyZXR1cm4g ZHJtX2dlbV9zaG1lbV92bWFwKG9iaiwgbWFwKTsKIH0KIAogc3RhdGljIGludCBsaW1hX2dlbV9t bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYyBiL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYwppbmRleCBkYzZkZjllOWE0MGQuLmEwNzBhODVm OGYzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYwpAQCAtMSw2ICsxLDcgQEAKIC8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIE1JVAogLyogQ29weXJpZ2h0IDIwMTct MjAxOSBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4gKi8KIAorI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgogI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CkBAIC0zMDMsNiArMzA0LDggQEAg c3RhdGljIHZvaWQgbGltYV9zY2hlZF9idWlsZF9lcnJvcl90YXNrX2xpc3Qoc3RydWN0IGxpbWFf c2NoZWRfdGFzayAqdGFzaykKIAlzdHJ1Y3QgbGltYV9kdW1wX2NodW5rX2J1ZmZlciAqYnVmZmVy X2NodW5rOwogCXUzMiBzaXplLCB0YXNrX3NpemUsIG1lbV9zaXplOwogCWludCBpOworCXN0cnVj dCBkbWFfYnVmX21hcCBtYXA7CisJaW50IHJldDsKIAogCW11dGV4X2xvY2soJmRldi0+ZXJyb3Jf dGFza19saXN0X2xvY2spOwogCkBAIC0zODgsMTUgKzM5MSwxNSBAQCBzdGF0aWMgdm9pZCBsaW1h X3NjaGVkX2J1aWxkX2Vycm9yX3Rhc2tfbGlzdChzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNr KQogCQl9IGVsc2UgewogCQkJYnVmZmVyX2NodW5rLT5zaXplID0gbGltYV9ib19zaXplKGJvKTsK IAotCQkJZGF0YSA9IGRybV9nZW1fc2htZW1fdm1hcCgmYm8tPmJhc2UuYmFzZSk7Ci0JCQlpZiAo SVNfRVJSX09SX05VTEwoZGF0YSkpIHsKKwkJCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcCgmYm8t PmJhc2UuYmFzZSwgJm1hcCk7CisJCQlpZiAocmV0KSB7CiAJCQkJa3ZmcmVlKGV0KTsKIAkJCQln b3RvIG91dDsKIAkJCX0KIAotCQkJbWVtY3B5KGJ1ZmZlcl9jaHVuayArIDEsIGRhdGEsIGJ1ZmZl cl9jaHVuay0+c2l6ZSk7CisJCQltZW1jcHkoYnVmZmVyX2NodW5rICsgMSwgbWFwLnZhZGRyLCBi dWZmZXJfY2h1bmstPnNpemUpOwogCi0JCQlkcm1fZ2VtX3NobWVtX3Z1bm1hcCgmYm8tPmJhc2Uu YmFzZSwgZGF0YSk7CisJCQlkcm1fZ2VtX3NobWVtX3Z1bm1hcCgmYm8tPmJhc2UuYmFzZSwgJm1h cCk7CiAJCX0KIAogCQlidWZmZXJfY2h1bmsgPSAodm9pZCAqKShidWZmZXJfY2h1bmsgKyAxKSAr IGJ1ZmZlcl9jaHVuay0+c2l6ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMK aW5kZXggMzg2NzJmOWU1YzRmLi44ZWY3Njc2OWI5N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfbW9kZS5jCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9k ZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAKICNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxw ZXIuaD4KQEAgLTE1NTYsMTUgKzE1NTcsMTggQEAgbWdhZzIwMF9oYW5kbGVfZGFtYWdlKHN0cnVj dCBtZ2FfZGV2aWNlICptZGV2LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJICAgICAg c3RydWN0IGRybV9yZWN0ICpjbGlwKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmbWRl di0+YmFzZTsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCXZvaWQgKnZtYXA7CisJaW50IHJl dDsKIAotCXZtYXAgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZmItPm9ialswXSk7Ci0JaWYgKGRybV9X QVJOX09OKGRldiwgIXZtYXApKQorCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBd LCAmbWFwKTsKKwlpZiAoZHJtX1dBUk5fT04oZGV2LCByZXQpKQogCQlyZXR1cm47IC8qIEJVRzog U0hNRU0gQk8gc2hvdWxkIGFsd2F5cyBiZSB2bWFwcGVkICovCisJdm1hcCA9IG1hcC52YWRkcjsg LyogVE9ETzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCWRybV9mYl9t ZW1jcHlfZHN0Y2xpcChtZGV2LT52cmFtLCB2bWFwLCBmYiwgY2xpcCk7CiAKLQlkcm1fZ2VtX3No bWVtX3Z1bm1hcChmYi0+b2JqWzBdLCB2bWFwKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+ b2JqWzBdLCAmbWFwKTsKIAogCS8qIEFsd2F5cyBzY2Fub3V0IGltYWdlIGF0IFZSQU0gb2Zmc2V0 IDAgKi8KIAltZ2FnMjAwX3NldF9zdGFydGFkZChtZGV2LCAodTMyKTApOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L0tjb25maWcKaW5kZXggNWRlYzFlNTY5NGI3Li45NDM2MzEwZDA4NTQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvS2NvbmZpZwpAQCAtNiw2ICs2LDcgQEAgY29uZmlnIERSTV9OT1VWRUFVCiAJc2VsZWN0IEZX X0xPQURFUgogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgogCXNlbGVjdCBEUk1fVFRNCisJc2VsZWN0 IERSTV9UVE1fSEVMUEVSCiAJc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgaWYgRFJNX05P VVZFQVVfQkFDS0xJR0hUCiAJc2VsZWN0IEFDUElfVklERU8gaWYgQUNQSSAmJiBYODYgJiYgQkFD S0xJR0hUX0NMQVNTX0RFVklDRSAmJiBJTlBVVAogCXNlbGVjdCBYODZfUExBVEZPUk1fREVWSUNF UyBpZiBBQ1BJICYmIFg4NgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91 dmVhdV9iby5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9iby5oCmluZGV4IDY0 MWVmNjI5OGEwZS4uNjA0NWI4NWE3NjJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9ub3V2ZWF1X2JvLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9i by5oCkBAIC0zOSw4ICszOSw2IEBAIHN0cnVjdCBub3V2ZWF1X2JvIHsKIAl1bnNpZ25lZCBtb2Rl OwogCiAJc3RydWN0IG5vdXZlYXVfZHJtX3RpbGUgKnRpbGU7Ci0KLQlzdHJ1Y3QgdHRtX2JvX2tt YXBfb2JqIGRtYV9idWZfdm1hcDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5vdXZlYXVf Ym8gKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMKaW5kZXggOWE0MjFjMzk0OWRl Li5mOTQyYjUyNmIwYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYwpAQCAt MjQsNiArMjQsOCBAQAogICoKICAqLwogCisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fdHRtX2hlbHBl ci5oPgorCiAjaW5jbHVkZSAibm91dmVhdV9kcnYuaCIKICNpbmNsdWRlICJub3V2ZWF1X2RtYS5o IgogI2luY2x1ZGUgIm5vdXZlYXVfZmVuY2UuaCIKQEAgLTE3Niw4ICsxNzgsOCBAQCBjb25zdCBz dHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3Mgbm91dmVhdV9nZW1fb2JqZWN0X2Z1bmNzID0gewog CS5waW4gPSBub3V2ZWF1X2dlbV9wcmltZV9waW4sCiAJLnVucGluID0gbm91dmVhdV9nZW1fcHJp bWVfdW5waW4sCiAJLmdldF9zZ190YWJsZSA9IG5vdXZlYXVfZ2VtX3ByaW1lX2dldF9zZ190YWJs ZSwKLQkudm1hcCA9IG5vdXZlYXVfZ2VtX3ByaW1lX3ZtYXAsCi0JLnZ1bm1hcCA9IG5vdXZlYXVf Z2VtX3ByaW1lX3Z1bm1hcCwKKwkudm1hcCA9IGRybV9nZW1fdHRtX3ZtYXAsCisJLnZ1bm1hcCA9 IGRybV9nZW1fdHRtX3Z1bm1hcCwKIH07CiAKIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfZ2VtLmgKaW5kZXggYjM1YzE4MDMyMmUyLi4zYjkxOWM3YzkzMWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbm91dmVhdV9nZW0uaApAQCAtMzcsNyArMzcsNSBAQCBleHRlcm4gdm9pZCBub3V2 ZWF1X2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKik7CiBleHRlcm4gc3Ry dWN0IHNnX3RhYmxlICpub3V2ZWF1X2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICopOwogZXh0ZXJuIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbm91dmVhdV9nZW1f cHJpbWVfaW1wb3J0X3NnX3RhYmxlKAogCXN0cnVjdCBkcm1fZGV2aWNlICosIHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKiwgc3RydWN0IHNnX3RhYmxlICopOwotZXh0ZXJuIHZvaWQgKm5vdXZl YXVfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICopOwotZXh0ZXJuIHZvaWQg bm91dmVhdV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqLCB2b2lkICop OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVf cHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYwppbmRleCBh ODI2NGFlYmYzZDQuLjJmMTZiNTI0OTI4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfcHJpbWUuYwpAQCAtMzUsMjYgKzM1LDYgQEAgc3RydWN0IHNnX3RhYmxlICpub3V2ZWF1X2dl bV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJu IGRybV9wcmltZV9wYWdlc190b19zZyhvYmotPmRldiwgbnZiby0+Ym8udHRtLT5wYWdlcywgbnBh Z2VzKTsKIH0KIAotdm9pZCAqbm91dmVhdV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaikKLXsKLQlzdHJ1Y3Qgbm91dmVhdV9ibyAqbnZibyA9IG5vdXZlYXVfZ2VtX29i amVjdChvYmopOwotCWludCByZXQ7Ci0KLQlyZXQgPSB0dG1fYm9fa21hcCgmbnZiby0+Ym8sIDAs IG52Ym8tPmJvLm51bV9wYWdlcywKLQkJCSAgJm52Ym8tPmRtYV9idWZfdm1hcCk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQotCXJldHVybiBudmJvLT5kbWFfYnVmX3ZtYXAu dmlydHVhbDsKLX0KLQotdm9pZCBub3V2ZWF1X2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQotewotCXN0cnVjdCBub3V2ZWF1X2JvICpudmJv ID0gbm91dmVhdV9nZW1fb2JqZWN0KG9iaik7Ci0KLQl0dG1fYm9fa3VubWFwKCZudmJvLT5kbWFf YnVmX3ZtYXApOwotfQotCiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm5vdXZlYXVfZ2VtX3ByaW1l X2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJCSBzdHJ1Y3Qg ZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCiAJCQkJCQkJIHN0cnVjdCBzZ190YWJsZSAqc2cp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfcGVyZmNudC5j IGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYwppbmRleCBmZGJj OGQ5NDkxMzUuLjVhYjAzZDYwNWY1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X3BlcmZjbnQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfcGVyZmNudC5jCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3No bWVtX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9wYW5mcm9zdF9kcm0uaD4KICNpbmNsdWRlIDxs aW51eC9jb21wbGV0aW9uLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNs dWRlIDxsaW51eC9pb3BvbGwuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CiAjaW5j bHVkZSA8bGludXgvc2xhYi5oPgpAQCAtNzIsNiArNzMsNyBAQCBzdGF0aWMgaW50IHBhbmZyb3N0 X3BlcmZjbnRfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKIHsK IAlzdHJ1Y3QgcGFuZnJvc3RfZmlsZV9wcml2ICp1c2VyID0gZmlsZV9wcml2LT5kcml2ZXJfcHJp djsKIAlzdHJ1Y3QgcGFuZnJvc3RfcGVyZmNudCAqcGVyZmNudCA9IHBmZGV2LT5wZXJmY250Owor CXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpi bzsKIAl1MzIgY2ZnLCBhczsKIAlpbnQgcmV0OwpAQCAtMTAzLDExICsxMDUsMTAgQEAgc3RhdGlj IGludCBwYW5mcm9zdF9wZXJmY250X2VuYWJsZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2Rldmlj ZSAqcGZkZXYsCiAJCWdvdG8gZXJyX2Nsb3NlX2JvOwogCX0KIAotCXBlcmZjbnQtPmJ1ZiA9IGRy bV9nZW1fc2htZW1fdm1hcCgmYm8tPmJhc2UpOwotCWlmIChJU19FUlIocGVyZmNudC0+YnVmKSkg ewotCQlyZXQgPSBQVFJfRVJSKHBlcmZjbnQtPmJ1Zik7CisJcmV0ID0gZHJtX2dlbV9zaG1lbV92 bWFwKCZiby0+YmFzZSwgJm1hcCk7CisJaWYgKHJldCkKIAkJZ290byBlcnJfcHV0X21hcHBpbmc7 Ci0JfQorCXBlcmZjbnQtPmJ1ZiA9IG1hcC52YWRkcjsKIAogCS8qCiAJICogSW52YWxpZGF0ZSB0 aGUgY2FjaGUgYW5kIGNsZWFyIHRoZSBjb3VudGVycyB0byBzdGFydCBmcm9tIGEgZnJlc2gKQEAg LTE2Myw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X3BlcmZjbnRfZW5hYmxlX2xvY2tl ZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKIAlyZXR1cm4gMDsKIAogZXJyX3Z1bm1h cDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcCgmYm8tPmJhc2UsIHBlcmZjbnQtPmJ1Zik7CisJZHJt X2dlbV9zaG1lbV92dW5tYXAoJmJvLT5iYXNlLCAmbWFwKTsKIGVycl9wdXRfbWFwcGluZzoKIAlw YW5mcm9zdF9nZW1fbWFwcGluZ19wdXQocGVyZmNudC0+bWFwcGluZyk7CiBlcnJfY2xvc2VfYm86 CkBAIC0xODAsNiArMTgxLDcgQEAgc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2Rpc2FibGVf bG9ja2VkKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LAogewogCXN0cnVjdCBwYW5mcm9z dF9maWxlX3ByaXYgKnVzZXIgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBwYW5m cm9zdF9wZXJmY250ICpwZXJmY250ID0gcGZkZXYtPnBlcmZjbnQ7CisJc3RydWN0IGRtYV9idWZf bWFwIG1hcCA9IERNQV9CVUZfTUFQX0lOSVRfVkFERFIocGVyZmNudC0+YnVmKTsKIAogCWlmICh1 c2VyICE9IHBlcmZjbnQtPnVzZXIpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTkyLDcgKzE5NCw3 IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QgcGFu ZnJvc3RfZGV2aWNlICpwZmRldiwKIAkJICBHUFVfUEVSRkNOVF9DRkdfTU9ERShHUFVfUEVSRkNO VF9DRkdfTU9ERV9PRkYpKTsKIAogCXBlcmZjbnQtPnVzZXIgPSBOVUxMOwotCWRybV9nZW1fc2ht ZW1fdnVubWFwKCZwZXJmY250LT5tYXBwaW5nLT5vYmotPmJhc2UuYmFzZSwgcGVyZmNudC0+YnVm KTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcCgmcGVyZmNudC0+bWFwcGluZy0+b2JqLT5iYXNlLmJh c2UsICZtYXApOwogCXBlcmZjbnQtPmJ1ZiA9IE5VTEw7CiAJcGFuZnJvc3RfZ2VtX2Nsb3NlKCZw ZXJmY250LT5tYXBwaW5nLT5vYmotPmJhc2UuYmFzZSwgZmlsZV9wcml2KTsKIAlwYW5mcm9zdF9t bXVfYXNfcHV0KHBmZGV2LCBwZXJmY250LT5tYXBwaW5nLT5tbXUpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZGlzcGxheS5jCmluZGV4IDQ1ZmQ3NmUwNGJkYy4uZTE2NWZhOWIyMDg5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfZGlzcGxheS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9jcmMz Mi5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1t YXAuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWMuaD4KQEAgLTU4MSw2ICs1ODIsOCBAQCBzdGF0aWMgdm9pZCBxeGxfY3Vyc29yX2F0b21pY191 cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv Ymo7CiAJc3RydWN0IHF4bF9ibyAqY3Vyc29yX2JvID0gTlVMTCwgKnVzZXJfYm8gPSBOVUxMLCAq b2xkX2N1cnNvcl9ibyA9IE5VTEw7CiAJaW50IHJldDsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgdXNl cl9tYXA7CisJc3RydWN0IGRtYV9idWZfbWFwIGN1cnNvcl9tYXA7CiAJdm9pZCAqdXNlcl9wdHI7 CiAJaW50IHNpemUgPSA2NCo2NCo0OwogCkBAIC01OTUsOSArNTk4LDEwIEBAIHN0YXRpYyB2b2lk IHF4bF9jdXJzb3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJdXNl cl9ibyA9IGdlbV90b19xeGxfYm8ob2JqKTsKIAogCQkvKiBwaW5uaW5nIGlzIGRvbmUgaW4gdGhl IHByZXBhcmUvY2xlYW51cCBmcmFtZXZidWZmZXIgKi8KLQkJcmV0ID0gcXhsX2JvX2ttYXAodXNl cl9ibywgJnVzZXJfcHRyKTsKKwkJcmV0ID0gcXhsX2JvX2ttYXAodXNlcl9ibywgJnVzZXJfbWFw KTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gb3V0X2ZyZWVfcmVsZWFzZTsKKwkJdXNlcl9wdHIgPSB1 c2VyX21hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkg Ki8KIAogCQlyZXQgPSBxeGxfYWxsb2NfYm9fcmVzZXJ2ZWQocWRldiwgcmVsZWFzZSwKIAkJCQkJ ICAgIHNpemVvZihzdHJ1Y3QgcXhsX2N1cnNvcikgKyBzaXplLApAQCAtNjEzLDcgKzYxNyw3IEBA IHN0YXRpYyB2b2lkIHF4bF9jdXJzb3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAkJaWYgKHJldCkKIAkJCWdvdG8gb3V0X3VucGluOwogCi0JCXJldCA9IHF4bF9ib19r bWFwKGN1cnNvcl9ibywgKHZvaWQgKiopJmN1cnNvcik7CisJCXJldCA9IHF4bF9ib19rbWFwKGN1 cnNvcl9ibywgJmN1cnNvcl9tYXApOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfYmFja29mZjsK IApAQCAtMTEzMyw2ICsxMTM3LDcgQEAgaW50IHF4bF9jcmVhdGVfbW9uaXRvcnNfb2JqZWN0KHN0 cnVjdCBxeGxfZGV2aWNlICpxZGV2KQogewogCWludCByZXQ7CiAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnb2JqOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJaW50IG1vbml0b3JzX2NvbmZp Z19zaXplID0gc2l6ZW9mKHN0cnVjdCBxeGxfbW9uaXRvcnNfY29uZmlnKSArCiAJCXF4bF9udW1f Y3J0YyAqIHNpemVvZihzdHJ1Y3QgcXhsX2hlYWQpOwogCkBAIC0xMTQ5LDcgKzExNTQsNyBAQCBp bnQgcXhsX2NyZWF0ZV9tb25pdG9yc19vYmplY3Qoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXF4bF9ib19rbWFwKHFkZXYtPm1vbml0b3JzX2Nv bmZpZ19ibywgTlVMTCk7CisJcXhsX2JvX2ttYXAocWRldi0+bW9uaXRvcnNfY29uZmlnX2JvLCAm bWFwKTsKIAogCXFkZXYtPm1vbml0b3JzX2NvbmZpZyA9IHFkZXYtPm1vbml0b3JzX2NvbmZpZ19i by0+a3B0cjsKIAlxZGV2LT5yYW1faGVhZGVyLT5tb25pdG9yc19jb25maWcgPQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZHJhdy5jCmluZGV4IDM1OTlkYjA5Njk3My4uN2I3YWNiOTEwNzgwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcmF3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZHJhdy5jCkBAIC0yMCw2ICsyMCw4IEBACiAgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICovCiAK KyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgorCiAjaW5jbHVkZSA8ZHJtL2RybV9mb3Vy Y2MuaD4KIAogI2luY2x1ZGUgInF4bF9kcnYuaCIKQEAgLTQyLDEzICs0NCwxNSBAQCBzdGF0aWMg c3RydWN0IHF4bF9yZWN0ICpkcmF3YWJsZV9zZXRfY2xpcHBpbmcoc3RydWN0IHF4bF9kZXZpY2Ug KnFkZXYsCiAJCQkJCSAgICAgIHVuc2lnbmVkIGludCBudW1fY2xpcHMsCiAJCQkJCSAgICAgIHN0 cnVjdCBxeGxfYm8gKmNsaXBzX2JvKQogeworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJc3Ry dWN0IHF4bF9jbGlwX3JlY3RzICpkZXZfY2xpcHM7CiAJaW50IHJldDsKIAotCXJldCA9IHF4bF9i b19rbWFwKGNsaXBzX2JvLCAodm9pZCAqKikmZGV2X2NsaXBzKTsKLQlpZiAocmV0KSB7CisJcmV0 ID0gcXhsX2JvX2ttYXAoY2xpcHNfYm8sICZtYXApOworCWlmIChyZXQpCiAJCXJldHVybiBOVUxM OwotCX0KKwlkZXZfY2xpcHMgPSBtYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3Ry YWN0aW9uIHByb3Blcmx5ICovCisKIAlkZXZfY2xpcHMtPm51bV9yZWN0cyA9IG51bV9jbGlwczsK IAlkZXZfY2xpcHMtPmNodW5rLm5leHRfY2h1bmsgPSAwOwogCWRldl9jbGlwcy0+Y2h1bmsucHJl dl9jaHVuayA9IDA7CkBAIC0xNDIsNiArMTQ2LDcgQEAgdm9pZCBxeGxfZHJhd19kaXJ0eV9mYihz dHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKIAlpbnQgc3RyaWRlID0gZmItPnBpdGNoZXNbMF07CiAJ LyogZGVwdGggaXMgbm90IGFjdHVhbGx5IGludGVyZXN0aW5nLCB3ZSBkb24ndCBtYXNrIHdpdGgg aXQgKi8KIAlpbnQgZGVwdGggPSBmYi0+Zm9ybWF0LT5jcHBbMF0gKiA4OworCXN0cnVjdCBkbWFf YnVmX21hcCBzdXJmYWNlX21hcDsKIAl1aW50OF90ICpzdXJmYWNlX2Jhc2U7CiAJc3RydWN0IHF4 bF9yZWxlYXNlICpyZWxlYXNlOwogCXN0cnVjdCBxeGxfYm8gKmNsaXBzX2JvOwpAQCAtMTk3LDkg KzIwMiwxMCBAQCB2b2lkIHF4bF9kcmF3X2RpcnR5X2ZiKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 LAogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3JlbGVhc2VfYmFja29mZjsKIAotCXJldCA9IHF4bF9i b19rbWFwKGJvLCAodm9pZCAqKikmc3VyZmFjZV9iYXNlKTsKKwlyZXQgPSBxeGxfYm9fa21hcChi bywgJnN1cmZhY2VfbWFwKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF9yZWxlYXNlX2JhY2tvZmY7 CisJc3VyZmFjZV9iYXNlID0gc3VyZmFjZV9tYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5n IGFic3RyYWN0aW9uIHByb3Blcmx5ICovCiAKIAlyZXQgPSBxeGxfaW1hZ2VfaW5pdChxZGV2LCBy ZWxlYXNlLCBkaW1hZ2UsIHN1cmZhY2VfYmFzZSwKIAkJCSAgICAgbGVmdCAtIGR1bWJfc2hhZG93 X29mZnNldCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmgKaW5kZXggMzYwMmU4YjM0MTg5Li5lYjQzN2ZlYTVk OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCkBAIC0zMCw2ICszMCw3IEBACiAgKiBEZWZpbml0aW9u cyB0YWtlbiBmcm9tIHNwaWNlLXByb3RvY29sLCBwbHVzIGtlcm5lbCBkcml2ZXIgc3BlY2lmaWMg Yml0cy4KICAqLwogCisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxs aW51eC9kbWEtZmVuY2UuaD4KICNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgogI2luY2x1ZGUg PGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgpAQCAtNTAsNiArNTEsOCBAQAogCiAjaW5jbHVkZSAi cXhsX2Rldi5oIgogCitzdHJ1Y3QgZG1hX2J1Zl9tYXA7CisKICNkZWZpbmUgRFJJVkVSX0FVVEhP UgkJIkRhdmUgQWlybGllIgogCiAjZGVmaW5lIERSSVZFUl9OQU1FCQkicXhsIgpAQCAtNzksNyAr ODIsNyBAQCBzdHJ1Y3QgcXhsX2JvIHsKIAkvKiBQcm90ZWN0ZWQgYnkgdGJvLnJlc2VydmVkICov CiAJc3RydWN0IHR0bV9wbGFjZQkJcGxhY2VtZW50c1szXTsKIAlzdHJ1Y3QgdHRtX3BsYWNlbWVu dAkJcGxhY2VtZW50OwotCXN0cnVjdCB0dG1fYm9fa21hcF9vYmoJCWttYXA7CisJc3RydWN0IGRt YV9idWZfbWFwCQltYXA7CiAJdm9pZAkJCQkqa3B0cjsKIAl1bnNpZ25lZCBpbnQgICAgICAgICAg ICAgICAgICAgIG1hcF9jb3VudDsKIAlpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU7CkBAIC0zMzUsNyArMzM4LDYgQEAgaW50IHF4bF9nZW1fb2JqZWN0X29wZW4oc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIHZvaWQgcXhs X2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIHZvaWQgcXhsX2JvX2ZvcmNlX2RlbGV0ZShzdHJ1Y3Qg cXhsX2RldmljZSAqcWRldik7Ci1pbnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHZv aWQgKipwdHIpOwogCiAvKiBxeGxfZHVtYi5jICovCiBpbnQgcXhsX21vZGVfZHVtYl9jcmVhdGUo c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCkBAIC00NDUsOCArNDQ3LDkgQEAgc3RydWN0IHNn X3RhYmxlICpxeGxfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7CiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnF4bF9nZW1fcHJpbWVfaW1wb3J0X3NnX3Rh YmxlKAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQg KmF0dGFjaCwKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7Ci12b2lkICpxeGxfZ2VtX3ByaW1lX3Zt YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotdm9pZCBxeGxfZ2VtX3ByaW1lX3Z1bm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpOworaW50IHF4bF9nZW1f cHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFw ICptYXApOwordm9pZCBxeGxfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwKKwkJCSAgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwogaW50IHF4bF9nZW1fcHJpbWVf bW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAkJCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5j IGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmMKaW5kZXggNTQ3ZDQ2YzE0ZDU2Li5j ZWViYzU4ODFmNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5jCkBAIC0yMywxMCArMjMsMTIg QEAKICAqICAgICAgICAgIEFsb24gTGV2eQogICovCiAKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVm LW1hcC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLW1hcHBpbmcuaD4KKwogI2luY2x1ZGUgInF4bF9k cnYuaCIKICNpbmNsdWRlICJxeGxfb2JqZWN0LmgiCiAKLSNpbmNsdWRlIDxsaW51eC9pby1tYXBw aW5nLmg+CiBzdGF0aWMgdm9pZCBxeGxfdHRtX2JvX2Rlc3Ryb3koc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICp0Ym8pCiB7CiAJc3RydWN0IHF4bF9ibyAqYm87CkBAIC0xNTIsMjQgKzE1NCwyNyBA QCBpbnQgcXhsX2JvX2NyZWF0ZShzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKIAlyZXR1cm4gMDsK IH0KIAotaW50IHF4bF9ib19rbWFwKHN0cnVjdCBxeGxfYm8gKmJvLCB2b2lkICoqcHRyKQoraW50 IHF4bF9ib19rbWFwKHN0cnVjdCBxeGxfYm8gKmJvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkK IHsKLQlib29sIGlzX2lvbWVtOwogCWludCByOwogCiAJaWYgKGJvLT5rcHRyKSB7Ci0JCWlmIChw dHIpCi0JCQkqcHRyID0gYm8tPmtwdHI7CiAJCWJvLT5tYXBfY291bnQrKzsKLQkJcmV0dXJuIDA7 CisJCWdvdG8gb3V0OwogCX0KLQlyID0gdHRtX2JvX2ttYXAoJmJvLT50Ym8sIDAsIGJvLT50Ym8u bnVtX3BhZ2VzLCAmYm8tPmttYXApOworCXIgPSB0dG1fYm9fdm1hcCgmYm8tPnRibywgJmJvLT5t YXApOwogCWlmIChyKQogCQlyZXR1cm4gcjsKLQliby0+a3B0ciA9IHR0bV9rbWFwX29ial92aXJ0 dWFsKCZiby0+a21hcCwgJmlzX2lvbWVtKTsKLQlpZiAocHRyKQotCQkqcHRyID0gYm8tPmtwdHI7 CiAJYm8tPm1hcF9jb3VudCA9IDE7CisKKwkvKiBUT0RPOiBSZW1vdmUga3B0ciBpbiBmYXZvciBv ZiBtYXAgZXZlcnl3aGVyZS4gKi8KKwlpZiAoYm8tPm1hcC5pc19pb21lbSkKKwkJYm8tPmtwdHIg PSAodm9pZCAqKWJvLT5tYXAudmFkZHJfaW9tZW07CisJZWxzZQorCQliby0+a3B0ciA9IGJvLT5t YXAudmFkZHI7CisKK291dDoKKwkqbWFwID0gYm8tPm1hcDsKIAlyZXR1cm4gMDsKIH0KIApAQCAt MTgwLDYgKzE4NSw3IEBAIHZvaWQgKnF4bF9ib19rbWFwX2F0b21pY19wYWdlKHN0cnVjdCBxeGxf ZGV2aWNlICpxZGV2LAogCXZvaWQgKnJwdHI7CiAJaW50IHJldDsKIAlzdHJ1Y3QgaW9fbWFwcGlu ZyAqbWFwOworCXN0cnVjdCBkbWFfYnVmX21hcCBib19tYXA7CiAKIAlpZiAoYm8tPnRiby5tZW0u bWVtX3R5cGUgPT0gVFRNX1BMX1ZSQU0pCiAJCW1hcCA9IHFkZXYtPnZyYW1fbWFwcGluZzsKQEAg LTE5Niw5ICsyMDIsMTAgQEAgdm9pZCAqcXhsX2JvX2ttYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4 bF9kZXZpY2UgKnFkZXYsCiAJCXJldHVybiBycHRyOwogCX0KIAotCXJldCA9IHF4bF9ib19rbWFw KGJvLCAmcnB0cik7CisJcmV0ID0gcXhsX2JvX2ttYXAoYm8sICZib19tYXApOwogCWlmIChyZXQp CiAJCXJldHVybiBOVUxMOworCXJwdHIgPSBib19tYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBw aW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovCiAKIAlycHRyICs9IHBhZ2Vfb2Zmc2V0ICogUEFH RV9TSVpFOwogCXJldHVybiBycHRyOwpAQCAtMjEyLDcgKzIxOSw3IEBAIHZvaWQgcXhsX2JvX2t1 bm1hcChzdHJ1Y3QgcXhsX2JvICpibykKIAlpZiAoYm8tPm1hcF9jb3VudCA+IDApCiAJCXJldHVy bjsKIAliby0+a3B0ciA9IE5VTEw7Ci0JdHRtX2JvX2t1bm1hcCgmYm8tPmttYXApOworCXR0bV9i b192dW5tYXAoJmJvLT50Ym8sICZiby0+bWFwKTsKIH0KIAogdm9pZCBxeGxfYm9fa3VubWFwX2F0 b21pY19wYWdlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3F4bC9xeGxfb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3Qu aAppbmRleCAwOWE1YzgxODMyNGQuLmViZjI0YzlkMmJmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3F4bC9xeGxfb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2Jq ZWN0LmgKQEAgLTYzLDcgKzYzLDcgQEAgZXh0ZXJuIGludCBxeGxfYm9fY3JlYXRlKHN0cnVjdCBx eGxfZGV2aWNlICpxZGV2LAogCQkJIGJvb2wga2VybmVsLCBib29sIHBpbm5lZCwgdTMyIGRvbWFp biwKIAkJCSBzdHJ1Y3QgcXhsX3N1cmZhY2UgKnN1cmYsCiAJCQkgc3RydWN0IHF4bF9ibyAqKmJv X3B0cik7Ci1leHRlcm4gaW50IHF4bF9ib19rbWFwKHN0cnVjdCBxeGxfYm8gKmJvLCB2b2lkICoq cHRyKTsKK2V4dGVybiBpbnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHN0cnVjdCBk bWFfYnVmX21hcCAqbWFwKTsKIGV4dGVybiB2b2lkIHF4bF9ib19rdW5tYXAoc3RydWN0IHF4bF9i byAqYm8pOwogdm9pZCAqcXhsX2JvX2ttYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4bF9kZXZpY2Ug KnFkZXYsIHN0cnVjdCBxeGxfYm8gKmJvLCBpbnQgcGFnZV9vZmZzZXQpOwogdm9pZCBxeGxfYm9f a3VubWFwX2F0b21pY19wYWdlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LCBzdHJ1Y3QgcXhsX2Jv ICpibywgdm9pZCAqbWFwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3By aW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9wcmltZS5jCmluZGV4IDdkMzgxNmZjYTVh OC4uNGFhOTQ5Nzk5NDQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9wcmlt ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3ByaW1lLmMKQEAgLTU0LDIwICs1NCwy MCBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnF4bF9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxl KAogCXJldHVybiBFUlJfUFRSKC1FTk9TWVMpOwogfQogCi12b2lkICpxeGxfZ2VtX3ByaW1lX3Zt YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCitpbnQgcXhsX2dlbV9wcmltZV92bWFwKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlz dHJ1Y3QgcXhsX2JvICpibyA9IGdlbV90b19xeGxfYm8ob2JqKTsKLQl2b2lkICpwdHI7CiAJaW50 IHJldDsKIAotCXJldCA9IHF4bF9ib19rbWFwKGJvLCAmcHRyKTsKKwlyZXQgPSBxeGxfYm9fa21h cChibywgbWFwKTsKIAlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwkJcmV0 dXJuIHJldDsKIAotCXJldHVybiBwdHI7CisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgcXhsX2dlbV9w cmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQordm9p ZCBxeGxfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKKwkJCSAg c3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IHF4bF9ibyAqYm8gPSBnZW1fdG9f cXhsX2JvKG9iaik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u LmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCmluZGV4IDVkNTRiY2NlYmQ0ZC4u NDRjYjVlZTZmYzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTUwOSw3ICs1MDksNiBA QCBzdHJ1Y3QgcmFkZW9uX2JvIHsKIAkvKiBDb25zdGFudCBhZnRlciBpbml0aWFsaXphdGlvbiAq LwogCXN0cnVjdCByYWRlb25fZGV2aWNlCQkqcmRldjsKIAotCXN0cnVjdCB0dG1fYm9fa21hcF9v YmoJCWRtYV9idWZfdm1hcDsKIAlwaWRfdAkJCQlwaWQ7CiAKICNpZmRlZiBDT05GSUdfTU1VX05P VElGSUVSCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jCmluZGV4IDBjY2Q3MjEzZTQxZi4u ZDI4NzZjZTNiYzllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9n ZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwpAQCAtMzEsNiAr MzEsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgogI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9n ZW1fdHRtX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9yYWRlb25fZHJtLmg+CiAKICNpbmNsdWRl ICJyYWRlb24uaCIKQEAgLTQwLDggKzQxLDYgQEAgc3RydWN0IGRtYV9idWYgKnJhZGVvbl9nZW1f cHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iaiwKIHN0cnVjdCBzZ190YWJs ZSAqcmFkZW9uX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOwogaW50IHJhZGVvbl9nZW1fcHJpbWVfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KTsKIHZvaWQgcmFkZW9uX2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aik7Ci12b2lkICpyYWRlb25fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOwotdm9pZCByYWRlb25fZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgdm9pZCAqdmFkZHIpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0 X2Z1bmNzIHJhZGVvbl9nZW1fb2JqZWN0X2Z1bmNzOwogCkBAIC0yMzUsOCArMjM0LDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyByYWRlb25fZ2VtX29iamVjdF9m dW5jcyA9IHsKIAkucGluID0gcmFkZW9uX2dlbV9wcmltZV9waW4sCiAJLnVucGluID0gcmFkZW9u X2dlbV9wcmltZV91bnBpbiwKIAkuZ2V0X3NnX3RhYmxlID0gcmFkZW9uX2dlbV9wcmltZV9nZXRf c2dfdGFibGUsCi0JLnZtYXAgPSByYWRlb25fZ2VtX3ByaW1lX3ZtYXAsCi0JLnZ1bm1hcCA9IHJh ZGVvbl9nZW1fcHJpbWVfdnVubWFwLAorCS52bWFwID0gZHJtX2dlbV90dG1fdm1hcCwKKwkudnVu bWFwID0gZHJtX2dlbV90dG1fdnVubWFwLAogfTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9wcmltZS5jCmluZGV4IGI5ZGUwZTUxYzBiZS4uMDg4ZDM5YTUxYzBkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMKQEAgLTM5LDI2ICszOSw2IEBAIHN0cnVjdCBzZ190 YWJsZSAqcmFkZW9uX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmopCiAJcmV0dXJuIGRybV9wcmltZV9wYWdlc190b19zZyhvYmotPmRldiwgYm8tPnRiby50 dG0tPnBhZ2VzLCBucGFnZXMpOwogfQogCi12b2lkICpyYWRlb25fZ2VtX3ByaW1lX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IHJhZGVvbl9ibyAqYm8gPSBnZW1f dG9fcmFkZW9uX2JvKG9iaik7Ci0JaW50IHJldDsKLQotCXJldCA9IHR0bV9ib19rbWFwKCZiby0+ dGJvLCAwLCBiby0+dGJvLm51bV9wYWdlcywKLQkJCSAgJmJvLT5kbWFfYnVmX3ZtYXApOwotCWlm IChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7Ci0KLQlyZXR1cm4gYm8tPmRtYV9idWZfdm1h cC52aXJ0dWFsOwotfQotCi12b2lkIHJhZGVvbl9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKLXsKLQlzdHJ1Y3QgcmFkZW9uX2JvICpibyA9 IGdlbV90b19yYWRlb25fYm8ob2JqKTsKLQotCXR0bV9ib19rdW5tYXAoJmJvLT5kbWFfYnVmX3Zt YXApOwotfQotCiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnJhZGVvbl9nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCQkJc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoLAogCQkJCQkJCXN0cnVjdCBzZ190YWJsZSAqc2cpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYwppbmRleCA3ZDVlYmIxMDMyM2Iu Ljc5NzFmNTc0MzZkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X2dlbS5jCkBAIC01MzIsMjYgKzUzMiwzMiBAQCByb2NrY2hpcF9nZW1fcHJpbWVfaW1wb3J0X3Nn X3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAotdm9pZCAqcm9ja2NoaXBfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopCitpbnQgcm9ja2NoaXBfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCByb2NrY2hpcF9nZW1fb2Jq ZWN0ICpya19vYmogPSB0b19yb2NrY2hpcF9vYmoob2JqKTsKIAotCWlmIChya19vYmotPnBhZ2Vz KQotCQlyZXR1cm4gdm1hcChya19vYmotPnBhZ2VzLCBya19vYmotPm51bV9wYWdlcywgVk1fTUFQ LAotCQkJICAgIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKKwlpZiAocmtfb2Jq LT5wYWdlcykgeworCQl2b2lkICp2YWRkciA9IHZtYXAocmtfb2JqLT5wYWdlcywgcmtfb2JqLT5u dW1fcGFnZXMsIFZNX01BUCwKKwkJCQkgIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwp KTsKKwkJaWYgKCF2YWRkcikKKwkJCXJldHVybiAtRU5PTUVNOworCQlkbWFfYnVmX21hcF9zZXRf dmFkZHIobWFwLCB2YWRkcik7CisJCXJldHVybiAwOworCX0KIAogCWlmIChya19vYmotPmRtYV9h dHRycyAmIERNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0 dXJuIC1FTk9NRU07CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgcmtfb2JqLT5rdmFkZHIp OwogCi0JcmV0dXJuIHJrX29iai0+a3ZhZGRyOworCXJldHVybiAwOwogfQogCi12b2lkIHJvY2tj aGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZh ZGRyKQordm9pZCByb2NrY2hpcF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3Qgcm9ja2NoaXBfZ2Vt X29iamVjdCAqcmtfb2JqID0gdG9fcm9ja2NoaXBfb2JqKG9iaik7CiAKIAlpZiAocmtfb2JqLT5w YWdlcykgewotCQl2dW5tYXAodmFkZHIpOworCQl2dW5tYXAobWFwLT52YWRkcik7CiAJCXJldHVy bjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oCmlu ZGV4IDdmZmM1NDFiZWEwNy4uNWE3MGE1NmNkNDA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmgKQEAgLTMxLDggKzMxLDggQEAgc3RydWN0IGRybV9nZW1f b2JqZWN0ICoKIHJvY2tjaGlwX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJCQkgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCiAJ CQkJICAgc3RydWN0IHNnX3RhYmxlICpzZyk7Ci12b2lkICpyb2NrY2hpcF9nZW1fcHJpbWVfdm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92 dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKK2ludCByb2Nr Y2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRt YV9idWZfbWFwICptYXApOwordm9pZCByb2NrY2hpcF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIC8qIGRybSBk cml2ZXIgbW1hcCBmaWxlIG9wZXJhdGlvbnMgKi8KIGludCByb2NrY2hpcF9nZW1fbW1hcChzdHJ1 Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJy dXMuYwppbmRleCA3NDRhOGUzMzdlNDEuLmMwMmUzNWVkNmU3NiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3RpbnkvY2lycnVzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVz LmMKQEAgLTE3LDYgKzE3LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgor I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAKQEAgLTMxNCw2ICszMTUsNyBAQCBzdGF0aWMgaW50 IGNpcnJ1c19mYl9ibGl0X3JlY3Qoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQkgICAg ICAgc3RydWN0IGRybV9yZWN0ICpyZWN0KQogewogCXN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJy dXMgPSB0b19jaXJydXMoZmItPmRldik7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAl2b2lk ICp2bWFwOwogCWludCBpZHgsIHJldDsKIApAQCAtMzIxLDEwICszMjMsMTAgQEAgc3RhdGljIGlu dCBjaXJydXNfZmJfYmxpdF9yZWN0KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCWlmICgh ZHJtX2Rldl9lbnRlcigmY2lycnVzLT5kZXYsICZpZHgpKQogCQlnb3RvIG91dDsKIAotCXJldCA9 IC1FTk9NRU07Ci0Jdm1hcCA9IGRybV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdKTsKLQlpZiAo IXZtYXApCisJcmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0sICZtYXApOworCWlm IChyZXQpCiAJCWdvdG8gb3V0X2Rldl9leGl0OworCXZtYXAgPSBtYXAudmFkZHI7IC8qIFRPRE86 IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovCiAKIAlpZiAoY2lycnVzLT5jcHAg PT0gZmItPmZvcm1hdC0+Y3BwWzBdKQogCQlkcm1fZmJfbWVtY3B5X2RzdGNsaXAoY2lycnVzLT52 cmFtLApAQCAtMzQzLDcgKzM0NSw3IEBAIHN0YXRpYyBpbnQgY2lycnVzX2ZiX2JsaXRfcmVjdChz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAllbHNlCiAJCVdBUk5fT05fT05DRSgiY3BwIG1p c21hdGNoIik7CiAKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCB2bWFwKTsKKwlk cm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCAmbWFwKTsKIAlyZXQgPSAwOwogCiBvdXRf ZGV2X2V4aXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jIGIv ZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20xMnUzMjAuYwppbmRleCBjYzM5NzY3MWY2ODkuLjEyYTg5 MGNlYTZlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20xMnUzMjAuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jCkBAIC0yNDgsNiArMjQ4LDcgQEAgc3Rh dGljIHZvaWQgZ20xMnUzMjBfY29weV9mYl90b19ibG9ja3Moc3RydWN0IGdtMTJ1MzIwX2Rldmlj ZSAqZ20xMnUzMjApCiB7CiAJaW50IGJsb2NrLCBkc3Rfb2Zmc2V0LCBsZW4sIHJlbWFpbiwgcmV0 LCB4MSwgeDIsIHkxLCB5MjsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwlzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgbWFwOwogCXZvaWQgKnZhZGRyOwogCXU4ICpzcmM7CiAKQEAgLTI2MiwxMSAr MjYzLDEyIEBAIHN0YXRpYyB2b2lkIGdtMTJ1MzIwX2NvcHlfZmJfdG9fYmxvY2tzKHN0cnVjdCBn bTEydTMyMF9kZXZpY2UgKmdtMTJ1MzIwKQogCXkxID0gZ20xMnUzMjAtPmZiX3VwZGF0ZS5yZWN0 LnkxOwogCXkyID0gZ20xMnUzMjAtPmZiX3VwZGF0ZS5yZWN0LnkyOwogCi0JdmFkZHIgPSBkcm1f Z2VtX3NobWVtX3ZtYXAoZmItPm9ialswXSk7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJR00x MlUzMjBfRVJSKCJmYWlsZWQgdG8gdm1hcCBmYjogJWxkXG4iLCBQVFJfRVJSKHZhZGRyKSk7CisJ cmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0sICZtYXApOworCWlmIChyZXQpIHsK KwkJR00xMlUzMjBfRVJSKCJmYWlsZWQgdG8gdm1hcCBmYjogJWRcbiIsIHJldCk7CiAJCWdvdG8g cHV0X2ZiOwogCX0KKwl2YWRkciA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJz dHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCWlmIChmYi0+b2JqWzBdLT5pbXBvcnRfYXR0YWNoKSB7 CiAJCXJldCA9IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcygKQEAgLTMxOCw3ICszMjAsNyBAQCBz dGF0aWMgdm9pZCBnbTEydTMyMF9jb3B5X2ZiX3RvX2Jsb2NrcyhzdHJ1Y3QgZ20xMnUzMjBfZGV2 aWNlICpnbTEydTMyMCkKIAkJCUdNMTJVMzIwX0VSUigiZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyBl cnI6ICVkXG4iLCByZXQpOwogCX0KIHZ1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+ b2JqWzBdLCB2YWRkcik7CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgJm1hcCk7 CiBwdXRfZmI6CiAJZHJtX2ZyYW1lYnVmZmVyX3B1dChmYik7CiAJZ20xMnUzMjAtPmZiX3VwZGF0 ZS5mYiA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKaW5kZXggZmVmNDNmNGUzYmFj Li40MmVlYmExZGZkYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVz ZXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKQEAgLTI3Niw2ICsy NzYsNyBAQCBzdGF0aWMgaW50IHVkbF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLCBpbnQgeCwgaW50IHksCiAJc3RydWN0IHVyYiAqdXJiOwogCXN0cnVjdCBkcm1fcmVj dCBjbGlwOwogCWludCBsb2dfYnBwOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJdm9pZCAq dmFkZHI7CiAKIAlyZXQgPSB1ZGxfbG9nX2NwcChmYi0+Zm9ybWF0LT5jcHBbMF0pOwpAQCAtMjk2 LDExICsyOTcsMTIgQEAgc3RhdGljIGludCB1ZGxfaGFuZGxlX2RhbWFnZShzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwgaW50IHgsIGludCB5LAogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQl2YWRk ciA9IGRybV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkg eworCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdLCAmbWFwKTsKKwlpZiAocmV0 KSB7CiAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHZtYXAgZmJcbiIpOwogCQlnb3RvIG91dF9kbWFf YnVmX2VuZF9jcHVfYWNjZXNzOwogCX0KKwl2YWRkciA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNl IG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCXVyYiA9IHVkbF9nZXRfdXJiKGRl dik7CiAJaWYgKCF1cmIpCkBAIC0zMzMsNyArMzM1LDcgQEAgc3RhdGljIGludCB1ZGxfaGFuZGxl X2RhbWFnZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHgsIGludCB5LAogCXJldCA9 IDA7CiAKIG91dF9kcm1fZ2VtX3NobWVtX3Z1bm1hcDoKLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChm Yi0+b2JqWzBdLCB2YWRkcik7CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgJm1h cCk7CiBvdXRfZG1hX2J1Zl9lbmRfY3B1X2FjY2VzczoKIAlpZiAoaW1wb3J0X2F0dGFjaCkgewog CQl0bXBfcmV0ID0gZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhpbXBvcnRfYXR0YWNoLT5kbWFidWYs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jIGIvZHJp dmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21vZGUuYwppbmRleCA5MzFjNTUxMjYxNDguLmYy NjhmYjI1OGM4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21v ZGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jCkBAIC05LDYg KzksOCBAQAogICogICAgICAgICAgTWljaGFlbCBUaGF5ZXIgPG1pY2hhZWwudGhheWVyQG9yYWNs ZS5jb20sCiAgKiAgICAgICAgICBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgog ICovCisKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2V4 cG9ydC5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KQEAgLTM4NCw2ICszODYsOCBA QCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCXUzMiBoZWlnaHQgPSBwbGFuZS0+c3RhdGUtPmNydGNfaDsKIAlzaXplX3QgZGF0 YV9zaXplLCBtYXNrX3NpemU7CiAJdTMyIGZsYWdzOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7 CisJaW50IHJldDsKIAl1OCAqc3JjOwogCiAJLyoKQEAgLTM5Nyw4ICs0MDEsOCBAQCBzdGF0aWMg dm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAog CiAJdmJveF9jcnRjLT5jdXJzb3JfZW5hYmxlZCA9IHRydWU7CiAKLQlzcmMgPSBkcm1fZ2VtX3Zy YW1fdm1hcChnYm8pOwotCWlmIChJU19FUlIoc3JjKSkgeworCXJldCA9IGRybV9nZW1fdnJhbV92 bWFwKGdibywgJm1hcCk7CisJaWYgKHJldCkgewogCQkvKgogCQkgKiBCVUc6IHdlIHNob3VsZCBo YXZlIHBpbm5lZCB0aGUgQk8gaW4gcHJlcGFyZV9mYigpLgogCQkgKi8KQEAgLTQwNiw2ICs0MTAs NyBAQCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCQlEUk1fV0FSTigiQ291bGQgbm90IG1hcCBjdXJzb3IgYm8sIHNraXBwaW5n IHVwZGF0ZVxuIik7CiAJCXJldHVybjsKIAl9CisJc3JjID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBV c2UgbWFwcGluZyBhYnN0cmFjdGlvbiBwcm9wZXJseSAqLwogCiAJLyoKIAkgKiBUaGUgbWFzayBt dXN0IGJlIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGFscGhhCkBAIC00MTYsNyArNDIxLDcgQEAg c3RhdGljIHZvaWQgdmJveF9jdXJzb3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAlkYXRhX3NpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQgKyBtYXNrX3NpemU7CiAKIAlj b3B5X2N1cnNvcl9pbWFnZShzcmMsIHZib3gtPmN1cnNvcl9kYXRhLCB3aWR0aCwgaGVpZ2h0LCBt YXNrX3NpemUpOwotCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCBzcmMpOworCWRybV9nZW1fdnJh bV92dW5tYXAoZ2JvLCAmbWFwKTsKIAogCWZsYWdzID0gVkJPWF9NT1VTRV9QT0lOVEVSX1ZJU0lC TEUgfCBWQk9YX01PVVNFX1BPSU5URVJfU0hBUEUgfAogCQlWQk9YX01PVVNFX1BPSU5URVJfQUxQ SEE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jIGIvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfYm8uYwppbmRleCA1NTdmMGQxZTY0MzcuLmYyOTBhOWE5NDJkYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9iby5jCkBAIC03ODUsMTYgKzc4NSwxNiBAQCBpbnQgdmM0X3ByaW1lX21tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQog CXJldHVybiBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwKG9iaiwgdm1hKTsKIH0KIAotdm9pZCAqdmM0 X3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCitpbnQgdmM0X3ByaW1lX3Zt YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQog ewogCXN0cnVjdCB2YzRfYm8gKmJvID0gdG9fdmM0X2JvKG9iaik7CiAKIAlpZiAoYm8tPnZhbGlk YXRlZF9zaGFkZXIpIHsKIAkJRFJNX0RFQlVHKCJtbWFwaW5nIG9mIHNoYWRlciBCT3Mgbm90IGFs bG93ZWQuXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJCXJldHVybiAtRUlOVkFM OwogCX0KIAotCXJldHVybiBkcm1fZ2VtX2NtYV9wcmltZV92bWFwKG9iaik7CisJcmV0dXJuIGRy bV9nZW1fY21hX3ByaW1lX3ZtYXAob2JqLCBtYXApOwogfQogCiBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAppbmRleCBjYzc5YjFhYWE4NzguLjkwNGYyYzM2Yzk2MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHJ2LmgKQEAgLTgwNiw3ICs4MDYsNyBAQCBpbnQgdmM0X3ByaW1lX21t YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KTsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqdmM0X3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaCwKIAkJCQkJCSBzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7Ci12b2lkICp2YzRfcHJpbWVfdm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitpbnQgdmM0X3ByaW1lX3ZtYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIGludCB2YzRf Ym9fY2FjaGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgdmM0X2JvX2NhY2hl X2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgdmM0X2JvX2luY191c2VjbnQo c3RydWN0IHZjNF9ibyAqYm8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdl bV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMKaW5kZXggZmE1NGE2ZDE0 MDNkLi5iMmFhMjZlMWU0YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1f ZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwpAQCAtMzYxLDI0ICsz NjEsMzAgQEAgc3RhdGljIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqdmdlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gJm9iai0+YmFzZTsKIH0K IAotc3RhdGljIHZvaWQgKnZnZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aikKK3N0YXRpYyBpbnQgdmdlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq LCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVj dCAqYm8gPSB0b192Z2VtX2JvKG9iaik7CiAJbG9uZyBuX3BhZ2VzID0gb2JqLT5zaXplID4+IFBB R0VfU0hJRlQ7CiAJc3RydWN0IHBhZ2UgKipwYWdlczsKKwl2b2lkICp2YWRkcjsKIAogCXBhZ2Vz ID0gdmdlbV9waW5fcGFnZXMoYm8pOwogCWlmIChJU19FUlIocGFnZXMpKQotCQlyZXR1cm4gTlVM TDsKKwkJcmV0dXJuIFBUUl9FUlIocGFnZXMpOworCisJdmFkZHIgPSB2bWFwKHBhZ2VzLCBuX3Bh Z2VzLCAwLCBwZ3Byb3Rfd3JpdGVjb21iaW5lKFBBR0VfS0VSTkVMKSk7CisJaWYgKCF2YWRkcikK KwkJcmV0dXJuIC1FTk9NRU07CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOwog Ci0JcmV0dXJuIHZtYXAocGFnZXMsIG5fcGFnZXMsIDAsIHBncHJvdF93cml0ZWNvbWJpbmUoUEFH RV9LRVJORUwpKTsKKwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgdmdlbV9wcmltZV92dW5t YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQorc3RhdGljIHZvaWQg dmdlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFf YnVmX21hcCAqbWFwKQogewogCXN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICpibyA9IHRvX3Zn ZW1fYm8ob2JqKTsKIAotCXZ1bm1hcCh2YWRkcik7CisJdnVubWFwKG1hcC0+dmFkZHIpOwogCXZn ZW1fdW5waW5fcGFnZXMoYm8pOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKaW5kZXgg OTg5MDEzN2JjYjhkLi4wODI0MzI3Y2M4NjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMK QEAgLTEsNSArMSw3IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKIAor I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CisKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Yy5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9k cm1fZm91cmNjLmg+CkBAIC0xNDYsMTUgKzE0OCwxNiBAQCBzdGF0aWMgaW50IHZrbXNfcHJlcGFy ZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKLQl2b2lkICp2 YWRkcjsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOworCWludCByZXQ7CiAKIAlpZiAoIXN0YXRl LT5mYikKIAkJcmV0dXJuIDA7CiAKIAlnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRfb2JqKHN0YXRl LT5mYiwgMCk7Ci0JdmFkZHIgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZ2VtX29iaik7Ci0JaWYgKElT X0VSUih2YWRkcikpCi0JCURSTV9FUlJPUigidm1hcCBmYWlsZWQ6ICVsaVxuIiwgUFRSX0VSUih2 YWRkcikpOworCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcChnZW1fb2JqLCAmbWFwKTsKKwlpZiAo cmV0KQorCQlEUk1fRVJST1IoInZtYXAgZmFpbGVkOiAlZFxuIiwgcmV0KTsKIAogCXJldHVybiBk cm1fZ2VtX2ZiX3ByZXBhcmVfZmIocGxhbmUsIHN0YXRlKTsKIH0KQEAgLTE2NCwxMyArMTY3LDE1 IEBAIHN0YXRpYyB2b2lkIHZrbXNfY2xlYW51cF9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7CiAJc3RydWN0IGRybV9nZW1fc2ht ZW1fb2JqZWN0ICpzaG1lbV9vYmo7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAogCWlmICgh b2xkX3N0YXRlLT5mYikKIAkJcmV0dXJuOwogCiAJZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29i aihvbGRfc3RhdGUtPmZiLCAwKTsKIAlzaG1lbV9vYmogPSB0b19kcm1fZ2VtX3NobWVtX29iaihk cm1fZ2VtX2ZiX2dldF9vYmoob2xkX3N0YXRlLT5mYiwgMCkpOwotCWRybV9nZW1fc2htZW1fdnVu bWFwKGdlbV9vYmosIHNobWVtX29iai0+dmFkZHIpOworCWRtYV9idWZfbWFwX3NldF92YWRkcigm bWFwLCBzaG1lbV9vYmotPnZhZGRyKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChnZW1fb2JqLCAm bWFwKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHZr bXNfcHJpbWFyeV9oZWxwZXJfZnVuY3MgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX3dyaXRlYmFjay5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc193cml0ZWJh Y2suYwppbmRleCAyNmI5MDM5MjY4NzIuLjY3ZjgwYWIxZTg1ZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc193cml0ZWJhY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX3dyaXRlYmFjay5jCkBAIC0xLDYgKzEsNyBAQAogLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjArCiAKLSNpbmNsdWRlICJ2a21zX2Rydi5oIgorI2luY2x1ZGUgPGxpbnV4 L2RtYS1idWYtbWFwLmg+CisKICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgogI2luY2x1ZGUg PGRybS9kcm1fd3JpdGViYWNrLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4K QEAgLTgsNiArOSw4IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVy Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmg+CiAKKyNpbmNsdWRlICJ2 a21zX2Rydi5oIgorCiBzdGF0aWMgY29uc3QgdTMyIHZrbXNfd2JfZm9ybWF0c1tdID0gewogCURS TV9GT1JNQVRfWFJHQjg4ODgsCiB9OwpAQCAtNjUsMTkgKzY4LDIwIEBAIHN0YXRpYyBpbnQgdmtt c193Yl9wcmVwYXJlX2pvYihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5l Y3RvciwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKIHsKIAlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7Ci0Jdm9pZCAqdmFkZHI7CisJc3RydWN0IGRtYV9i dWZfbWFwIG1hcDsKKwlpbnQgcmV0OwogCiAJaWYgKCFqb2ItPmZiKQogCQlyZXR1cm4gMDsKIAog CWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooam9iLT5mYiwgMCk7Ci0JdmFkZHIgPSBkcm1f Z2VtX3NobWVtX3ZtYXAoZ2VtX29iaik7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJRFJNX0VS Uk9SKCJ2bWFwIGZhaWxlZDogJWxpXG4iLCBQVFJfRVJSKHZhZGRyKSk7Ci0JCXJldHVybiBQVFJf RVJSKHZhZGRyKTsKKwlyZXQgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZ2VtX29iaiwgJm1hcCk7CisJ aWYgKHJldCkgeworCQlEUk1fRVJST1IoInZtYXAgZmFpbGVkOiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKIAl9CiAKLQlqb2ItPnByaXYgPSB2YWRkcjsKKwlqb2ItPnByaXYgPSBtYXAudmFk ZHI7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTg3LDEyICs5MSwxNCBAQCBzdGF0aWMgdm9pZCB2a21z X3diX2NsZWFudXBfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqY29ubmVjdG9y LAogewogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKIAlzdHJ1Y3Qgdmttc19kZXZp Y2UgKnZrbXNkZXY7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAogCWlmICgham9iLT5mYikK IAkJcmV0dXJuOwogCiAJZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihqb2ItPmZiLCAwKTsK LQlkcm1fZ2VtX3NobWVtX3Z1bm1hcChnZW1fb2JqLCBqb2ItPnByaXYpOworCWRtYV9idWZfbWFw X3NldF92YWRkcigmbWFwLCBqb2ItPnByaXYpOworCWRybV9nZW1fc2htZW1fdnVubWFwKGdlbV9v YmosICZtYXApOwogCiAJdmttc2RldiA9IGRybV9kZXZpY2VfdG9fdmttc19kZXZpY2UoZ2VtX29i ai0+ZGV2KTsKIAl2a21zX3NldF9jb21wb3Nlcigmdmttc2Rldi0+b3V0cHV0LCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMKaW5kZXggNGYzNGVmMzRiYTYwLi43 NGRiNWE4NDBiZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMKQEAg LTI5MCwyMiArMjkwLDI4IEBAIGludCB4ZW5fZHJtX2Zyb250X2dlbV9tbWFwKHN0cnVjdCBmaWxl ICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAlyZXR1cm4gZ2VtX21tYXBfb2Jq KHhlbl9vYmosIHZtYSk7CiB9CiAKLXZvaWQgKnhlbl9kcm1fZnJvbnRfZ2VtX3ByaW1lX3ZtYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQoraW50IHhlbl9kcm1fZnJvbnRfZ2VtX3By aW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCkKIHsKIAlzdHJ1Y3QgeGVuX2dlbV9vYmplY3QgKnhlbl9vYmogPSB0b194ZW5fZ2Vt X29iaihnZW1fb2JqKTsKKwl2b2lkICp2YWRkcjsKIAogCWlmICgheGVuX29iai0+cGFnZXMpCi0J CXJldHVybiBOVUxMOworCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qIFBsZWFzZSBzZWUgY29tbWVu dCBpbiBnZW1fbW1hcF9vYmogb24gbWFwcGluZyBhbmQgYXR0cmlidXRlcy4gKi8KLQlyZXR1cm4g dm1hcCh4ZW5fb2JqLT5wYWdlcywgeGVuX29iai0+bnVtX3BhZ2VzLAotCQkgICAgVk1fTUFQLCBQ QUdFX0tFUk5FTCk7CisJdmFkZHIgPSB2bWFwKHhlbl9vYmotPnBhZ2VzLCB4ZW5fb2JqLT5udW1f cGFnZXMsCisJCSAgICAgVk1fTUFQLCBQQUdFX0tFUk5FTCk7CisJaWYgKCF2YWRkcikKKwkJcmV0 dXJuIC1FTk9NRU07CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOworCisJcmV0 dXJuIDA7CiB9CiAKIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKLQkJCQkgICAgdm9pZCAqdmFkZHIpCisJCQkJICAgIHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewotCXZ1bm1hcCh2YWRkcik7CisJdnVubWFwKG1hcC0+ dmFkZHIpOwogfQogCiBpbnQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbV9vYmosCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hl bl9kcm1fZnJvbnRfZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2Vt LmgKaW5kZXggYTM5Njc1ZmEzMWIyLi5hNGU2N2QwYTE0OWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnRfZ2VtLmgKQEAgLTEyLDYgKzEyLDcgQEAKICNkZWZpbmUgX19YRU5fRFJN X0ZST05UX0dFTV9ICiAKIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQ7CitzdHJ1Y3QgZG1hX2J1 Zl9tYXA7CiBzdHJ1Y3QgZHJtX2RldmljZTsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKIHN0cnVj dCBmaWxlOwpAQCAtMzQsMTAgKzM1LDExIEBAIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fZnJlZV9v YmplY3RfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKTsKIAogaW50IHhl bl9kcm1fZnJvbnRfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hKTsKIAotdm9pZCAqeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopOworaW50IHhlbl9kcm1fZnJvbnRfZ2VtX3ByaW1lX3Zt YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLAorCQkJCSBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCk7CiAKIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKLQkJCQkgICAgdm9pZCAqdmFkZHIpOworCQkJCSAgICBz dHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCB4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV9t bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKIAkJCQkgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oIGIvaW5jbHVk ZS9kcm0vZHJtX2dlbS5oCmluZGV4IGMzOGRkMzVkYTAwYi4uNWU2ZGFhMWM5ODJmIDEwMDY0NAot LS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbS5oCkBA IC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5hZ2VyLmg+CiAKK3N0 cnVjdCBkbWFfYnVmX21hcDsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdDsKIAogLyoqCkBAIC0xMzgs NyArMTM5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHsKIAkgKgogCSAqIFRoaXMg Y2FsbGJhY2sgaXMgb3B0aW9uYWwuCiAJICovCi0Jdm9pZCAqKCp2bWFwKShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaik7CisJaW50ICgqdm1hcCkoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogCS8qKgogCSAqIEB2dW5tYXA6CkBAIC0xNDgs NyArMTQ5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHsKIAkgKgogCSAqIFRoaXMg Y2FsbGJhY2sgaXMgb3B0aW9uYWwuCiAJICovCi0Jdm9pZCAoKnZ1bm1hcCkoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKKwl2b2lkICgqdnVubWFwKShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwogCiAJLyoqCiAJICog QG1tYXA6CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oCmluZGV4IGEwNjRiMGQxYzQ4MC4uY2FmOThi OWNmNGI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaAorKysg Yi9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGRy bV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCSAgc3RydWN0IHNnX3RhYmxlICpzZ3QpOwogaW50IGRybV9nZW1fY21hX3ByaW1lX21tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSk7Ci12b2lkICpkcm1fZ2VtX2NtYV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKTsKK2ludCBkcm1fZ2VtX2NtYV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqCiBkcm1fZ2VtX2NtYV9jcmVhdGVfb2JqZWN0X2RlZmF1bHRfZnVuY3Moc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dl bV9zaG1lbV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmgKaW5k ZXggNTM4MWYwYzhjZjZmLi4zNDQ5YTAzNTNmZTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9nZW1fc2htZW1faGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxw ZXIuaApAQCAtMTEzLDggKzExMyw4IEBAIGludCBkcm1fZ2VtX3NobWVtX2dldF9wYWdlcyhzdHJ1 Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsKIHZvaWQgZHJtX2dlbV9zaG1lbV9wdXRf cGFnZXMoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7CiBpbnQgZHJtX2dlbV9z aG1lbV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwogdm9pZCBkcm1fZ2VtX3NobWVt X3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgKmRybV9nZW1fc2htZW1f dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIGRybV9nZW1fc2htZW1fdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7CitpbnQgZHJtX2dl bV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCk7Cit2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCBkcm1fZ2VtX3NobWVtX21h ZHZpc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBtYWR2KTsKIApkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dl bV92cmFtX2hlbHBlci5oCmluZGV4IDEyOGY4ODE3NGQzMi4uYzBkMjhiYTBmNWM5IDEwMDY0NAot LS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2dlbV92cmFtX2hlbHBlci5oCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSA8ZHJtL3R0 bS90dG1fYm9fYXBpLmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CiAKKyNp bmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPiAv KiBmb3IgY29udGFpbmVyX29mKCkgKi8KIAogc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iOwpA QCAtMjksOSArMzAsOCBAQCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CiAKIC8qKgogICogc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgLSBHRU0gb2JqZWN0IGJhY2tlZCBieSBWUkFNCi0gKiBAZ2Vt OglHRU0gb2JqZWN0CiAgKiBAYm86CQlUVE0gYnVmZmVyIG9iamVjdAotICogQGttYXA6CU1hcHBp bmcgaW5mb3JtYXRpb24gZm9yIEBibworICogQG1hcDoJTWFwcGluZyBpbmZvcm1hdGlvbiBmb3Ig QGJvCiAgKiBAcGxhY2VtZW50OglUVE0gcGxhY2VtZW50IGluZm9ybWF0aW9uLiBTdXBwb3J0ZWQg cGxhY2VtZW50cyBhcmUgXAogCSVUVE1fUExfVlJBTSBhbmQgJVRUTV9QTF9TWVNURU0KICAqIEBw bGFjZW1lbnRzOglUVE0gcGxhY2VtZW50IGluZm9ybWF0aW9uLgpAQCAtNTAsMTUgKzUwLDE1IEBA IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKICAqLwogc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3Qg ewogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCBibzsKLQlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2Jq IGttYXA7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAogCS8qKgotCSAqIEBrbWFwX3VzZV9j b3VudDoKKwkgKiBAdm1hcF91c2VfY291bnQ6CiAJICoKIAkgKiBSZWZlcmVuY2UgY291bnQgb24g dGhlIHZpcnR1YWwgYWRkcmVzcy4KIAkgKiBUaGUgYWRkcmVzcyBhcmUgdW4tbWFwcGVkIHdoZW4g dGhlIGNvdW50IHJlYWNoZXMgemVyby4KIAkgKi8KLQl1bnNpZ25lZCBpbnQga21hcF91c2VfY291 bnQ7CisJdW5zaWduZWQgaW50IHZtYXBfdXNlX2NvdW50OwogCiAJLyogU3VwcG9ydGVkIHBsYWNl bWVudHMgYXJlICVUVE1fUExfVlJBTSBhbmQgJVRUTV9QTF9TWVNURU0gKi8KIAlzdHJ1Y3QgdHRt X3BsYWNlbWVudCBwbGFjZW1lbnQ7CkBAIC05Nyw4ICs5Nyw4IEBAIHU2NCBkcm1fZ2VtX3ZyYW1f bW1hcF9vZmZzZXQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyk7CiBzNjQgZHJtX2dl bV92cmFtX29mZnNldChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKTsKIGludCBkcm1f Z2VtX3ZyYW1fcGluKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHVuc2lnbmVkIGxv bmcgcGxfZmxhZyk7CiBpbnQgZHJtX2dlbV92cmFtX3VucGluKHN0cnVjdCBkcm1fZ2VtX3ZyYW1f b2JqZWN0ICpnYm8pOwotdm9pZCAqZHJtX2dlbV92cmFtX3ZtYXAoc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibyk7Ci12b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKmdibywgdm9pZCAqdmFkZHIpOworaW50IGRybV9nZW1fdnJhbV92bWFwKHN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsK K3ZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2Jv LCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIGludCBkcm1fZ2VtX3ZyYW1fZmlsbF9jcmVh dGVfZHVtYihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCQkJICBzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotLSAKMi4yOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1yb2NrY2hpcAo=