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.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=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 F1E7EC63699 for ; Tue, 3 Nov 2020 09:30:44 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8FA7F2242A for ; Tue, 3 Nov 2020 09:30:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8FA7F2242A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8076B6EC5A; Tue, 3 Nov 2020 09:30:25 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTP id 2CD506EC1D; Tue, 3 Nov 2020 09:30:23 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 53345B19D; Tue, 3 Nov 2020 09:30:22 +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 v7 06/10] drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends Date: Tue, 3 Nov 2020 10:30:11 +0100 Message-Id: <20201103093015.1063-7-tzimmermann@suse.de> X-Mailer: git-send-email 2.29.0 In-Reply-To: <20201103093015.1063-1-tzimmermann@suse.de> References: <20201103093015.1063-1-tzimmermann@suse.de> MIME-Version: 1.0 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx 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 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" VGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgdm1hcC92dW5tYXAncyB1c2Ugb2YgcmF3IHBvaW50ZXJz IGluIEdFTSBvYmplY3QKZnVuY3Rpb25zIHdpdGggaW5zdGFuY2VzIG9mIHN0cnVjdCBkbWFfYnVm X21hcC4gR0VNIGJhY2tlbmRzIGFyZQpjb252ZXJ0ZWQgYXMgd2VsbC4gRm9yIG1vc3Qgb2YgdGhl bSwgdGhpcyBzaW1wbHkgY2hhbmdlcyB0aGUgcmV0dXJuZWQgdHlwZS4KClRUTS1iYXNlZCBkcml2 ZXJzIG5vdyByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZW1v cnksCmVpdGhlciBzeXN0ZW0gb3IgSS9PIG1lbW9yeS4gR0VNIFZSQU0gaGVscGVycyBhbmQgcXhs IG5vdyB1c2UgdHRtX2JvX3ZtYXAoKQpldCBhbC4gQW1kZ3B1LCBub3V2ZWF1IGFuZCByYWRlb24g dXNlIGRybV9nZW1fdHRtX3ZtYXAoKSBldCBhbCBpbnN0ZWFkIG9mCmltcGxlbWVudGluZyB0aGVp ciBvd24gdm1hcCBjYWxsYmFja3MuCgp2NzoKCSogaW5pdCBRWEwgY3Vyc29yIHRvIG1hcHBlZCBC TyBidWZmZXIgKGtlcm5lbCB0ZXN0IHJvYm90KQp2NToKCSogdXBkYXRlIHZrbXMgYWZ0ZXIgc3dp dGNoIHRvIHNobWVtCnY0OgoJKiB1c2UgdHRtX2JvX3ZtYXAoKSwgZHJtX2dlbV90dG1fdm1hcCgp LCBldCBhbC4gKERhbmllbCwgQ2hyaXN0aWFuKQoJKiBmaXggYSB0cmFpbGluZyB7IGluIGRybV9n ZW1fdm1hcCgpCgkqIHJlbW92ZSBzZXZlcmFsIGVtcHR5IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGNv bnZlcnRpbmcgdGhlbSAoRGFuaWVsKQoJKiBjb21tZW50IHVzZXMgb2YgcmF3IHBvaW50ZXJzIHdp dGggYSBUT0RPIChEYW5pZWwpCgkqIFRPRE8gbGlzdDogY29udmVydCBtb3JlIGhlbHBlcnMgdG8g dXNlIHN0cnVjdCBkbWFfYnVmX21hcAoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4g PHR6aW1tZXJtYW5uQHN1c2UuZGU+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3Rp YW4ua29lbmlnQGFtZC5jb20+ClRlc3RlZC1ieTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJvcmcu b3JnPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0ICAgICAgICAgICAgICAgICAgfCAg MTggKysrKwogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIHwgIDM2IC0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmggfCAgIDIg LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jICAgICB8ICAgNSArLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oICB8ICAgMSAtCiBkcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9jdXJzb3IuYyAgICAgICAgICAgIHwgIDI3ICsrKy0tCiBkcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCAgICAgICAgICAgICAgIHwgICA3ICstCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2dlbS5jICAgICAgICAgICAgICAgICAgIHwgIDIzICsrKy0tCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMgICAgICAgIHwgIDEwICstCiBkcml2ZXJzL2dw dS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyAgICAgIHwgIDQ4ICsrKysrLS0tLQogZHJpdmVy cy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYyAgICAgICB8IDEwNyArKysrKysrKysrLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kcnYuaCAgICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYyB8ICAgOSAr LQogZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYyAgICAgICAgICAgICB8ICAgNiArLQog ZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jICAgICAgICAgICB8ICAxMSArLQogZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMgICAgICB8ICAxMCArLQogZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmggICAgICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L25vdXZlYXVfZ2VtLmggICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbm91dmVhdV9wcmltZS5jICAgICB8ICAyMCAtLS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZnJv c3QvcGFuZnJvc3RfcGVyZmNudC5jIHwgIDE0ICstLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZGlzcGxheS5jICAgICAgICAgICB8ICAxNSArKy0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Ry YXcuYyAgICAgICAgICAgICAgfCAgMTQgKystCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYu aCAgICAgICAgICAgICAgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3Qu YyAgICAgICAgICAgIHwgIDMxICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0 LmggICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfcHJpbWUuYyAg ICAgICAgICAgICB8ICAxMiArLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmggICAg ICAgICAgICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMgICAg ICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcHJpbWUuYyAgICAg ICB8ICAyMCAtLS0tCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5j IHwgIDIyICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmgg fCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy5jICAgICAgICAgICAgICAgfCAg MTAgKy0KIGRyaXZlcnMvZ3B1L2RybS90aW55L2dtMTJ1MzIwLmMgICAgICAgICAgICAgfCAgMTAg Ky0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYyAgICAgICAgICAgfCAgIDggKy0K IGRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMgICAgICAgfCAgMTEgKy0KIGRy aXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMgICAgICAgICAgICAgICAgfCAgIDYgKy0KIGRyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMgICAgICAgICAgICAgfCAgMTYgKystCiBkcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX3BsYW5lLmMgICAgICAgICAgIHwgIDE1ICsrLQogZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc193cml0ZWJhY2suYyAgICAgICB8ICAyMiArKy0tCiBkcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMgICAgIHwgIDE4ICsrLS0KIGRyaXZlcnMvZ3B1L2Ry bS94ZW4veGVuX2RybV9mcm9udF9nZW0uaCAgICAgfCAgIDYgKy0KIGluY2x1ZGUvZHJtL2RybV9n ZW0uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIGluY2x1ZGUvZHJtL2RybV9nZW1f Y21hX2hlbHBlci5oICAgICAgICAgICAgfCAgIDIgKy0KIGluY2x1ZGUvZHJtL2RybV9nZW1fc2ht ZW1faGVscGVyLmggICAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvZHJtL2RybV9nZW1fdnJhbV9o ZWxwZXIuaCAgICAgICAgICAgfCAgMTQgKy0tCiA0OSBmaWxlcyBjaGFuZ2VkLCAzNDkgaW5zZXJ0 aW9ucygrKSwgMzA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1 L3RvZG8ucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvdG9kby5yc3QKaW5kZXggNmIyMjRlZjE0NDU1 Li41OWY2M2YxZDc2ODAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0Cisr KyBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0CkBAIC00NTAsNiArNDUwLDI0IEBAIENvbnRh Y3Q6IFZpbGxlIFN5cmrDpGzDpCwgRGFuaWVsIFZldHRlcgogCiBMZXZlbDogSW50ZXJtZWRpYXRl CiAKK1VzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgdGhyb3VnaG91dCBjb2RlYmFzZQorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BvaW50ZXJzIHRvIHNoYXJlZCBk ZXZpY2UgbWVtb3J5IGFyZSBzdG9yZWQgaW4gc3RydWN0IGRtYV9idWZfbWFwLiBFYWNoCitpbnN0 YW5jZSBrbm93cyB3aGV0aGVyIGl0IHJlZmVycyB0byBzeXN0ZW0gb3IgSS9PIG1lbW9yeS4gTW9z dCBvZiB0aGUgRFJNLXdpZGUKK2ludGVyZmFjZSBoYXZlIGJlZW4gY29udmVydGVkIHRvIHVzZSBz dHJ1Y3QgZG1hX2J1Zl9tYXAsIGJ1dCBpbXBsZW1lbnRhdGlvbnMKK29mdGVuIHN0aWxsIHVzZSBy YXcgcG9pbnRlcnMuCisKK1RoZSB0YXNrIGlzIHRvIHVzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgd2hl cmUgaXQgbWFrZXMgc2Vuc2UuCisKKyogTWVtb3J5IG1hbmFnZXJzIHNob3VsZCB1c2Ugc3RydWN0 IGRtYV9idWZfbWFwIGZvciBkbWEtYnVmLWltcG9ydGVkIGJ1ZmZlcnMuCisqIFRUTSBtaWdodCBi ZW5lZml0IGZyb20gdXNpbmcgc3RydWN0IGRtYV9idWZfbWFwIGludGVybmFsbHkuCisqIEZyYW1l YnVmZmVyIGNvcHlpbmcgYW5kIGJsaXR0aW5nIGhlbHBlcnMgc2hvdWxkIG9wZXJhdGUgb24gc3Ry dWN0IGRtYV9idWZfbWFwLgorCitDb250YWN0OiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1h bm5Ac3VzZS5kZT4sIENocmlzdGlhbiBLw7ZuaWcsIERhbmllbCBWZXR0ZXIKKworTGV2ZWw6IElu dGVybWVkaWF0ZQorCiAKIENvcmUgcmVmYWN0b3JpbmdzCiA9PT09PT09PT09PT09PT09PQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp ZwppbmRleCA2NDM3NmRkMjk4ZWQuLmY1YzdhYTc4OTRkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTIzMiw2ICsy MzIsNyBAQCBjb25maWcgRFJNX1JBREVPTgogCXNlbGVjdCBGV19MT0FERVIKICAgICAgICAgc2Vs ZWN0IERSTV9LTVNfSEVMUEVSCiAgICAgICAgIHNlbGVjdCBEUk1fVFRNCisJc2VsZWN0IERSTV9U VE1fSEVMUEVSCiAJc2VsZWN0IFBPV0VSX1NVUFBMWQogCXNlbGVjdCBIV01PTgogCXNlbGVjdCBC QUNLTElHSFRfQ0xBU1NfREVWSUNFCkBAIC0yNTIsNiArMjUzLDcgQEAgY29uZmlnIERSTV9BTURH UFUKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKIAlzZWxlY3QgRFJNX1NDSEVECiAJc2VsZWN0IERS TV9UVE0KKwlzZWxlY3QgRFJNX1RUTV9IRUxQRVIKIAlzZWxlY3QgUE9XRVJfU1VQUExZCiAJc2Vs ZWN0IEhXTU9OCiAJc2VsZWN0IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCmluZGV4IDViNDY1YWI3NzRkMS4uZTU5MTll ZmNhODcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1h X2J1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMK QEAgLTQxLDQyICs0MSw2IEBACiAjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLWFycmF5Lmg+CiAj aW5jbHVkZSA8bGludXgvcGNpLXAycGRtYS5oPgogCi0vKioKLSAqIGFtZGdwdV9nZW1fcHJpbWVf dm1hcCAtICZkbWFfYnVmX29wcy52bWFwIGltcGxlbWVudGF0aW9uCi0gKiBAb2JqOiBHRU0gQk8K LSAqCi0gKiBTZXRzIHVwIGFuIGluLWtlcm5lbCB2aXJ0dWFsIG1hcHBpbmcgb2YgdGhlIEJPJ3Mg bWVtb3J5LgotICoKLSAqIFJldHVybnM6Ci0gKiBUaGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBt YXBwaW5nIG9yIGFuIGVycm9yIHBvaW50ZXIuCi0gKi8KLXZvaWQgKmFtZGdwdV9nZW1fcHJpbWVf dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKLXsKLQlzdHJ1Y3QgYW1kZ3B1X2JvICpi byA9IGdlbV90b19hbWRncHVfYm8ob2JqKTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gdHRtX2JvX2tt YXAoJmJvLT50Ym8sIDAsIGJvLT50Ym8ubnVtX3BhZ2VzLAotCQkJICAmYm8tPmRtYV9idWZfdm1h cCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQotCXJldHVybiBiby0+ZG1h X2J1Zl92bWFwLnZpcnR1YWw7Ci19Ci0KLS8qKgotICogYW1kZ3B1X2dlbV9wcmltZV92dW5tYXAg LSAmZG1hX2J1Zl9vcHMudnVubWFwIGltcGxlbWVudGF0aW9uCi0gKiBAb2JqOiBHRU0gQk8KLSAq IEB2YWRkcjogVmlydHVhbCBhZGRyZXNzICh1bnVzZWQpCi0gKgotICogVGVhcnMgZG93biB0aGUg aW4ta2VybmVsIHZpcnR1YWwgbWFwcGluZyBvZiB0aGUgQk8ncyBtZW1vcnkuCi0gKi8KLXZvaWQg YW1kZ3B1X2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQg KnZhZGRyKQotewotCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmop OwotCi0JdHRtX2JvX2t1bm1hcCgmYm8tPmRtYV9idWZfdm1hcCk7Ci19Ci0KIC8qKgogICogYW1k Z3B1X2dlbV9wcmltZV9tbWFwIC0gJmRybV9kcml2ZXIuZ2VtX3ByaW1lX21tYXAgaW1wbGVtZW50 YXRpb24KICAqIEBvYmo6IEdFTSBCTwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RtYV9idWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kbWFfYnVmLmgKaW5kZXggMmM1Yzg0YTA2YmI5Li4zOWI1Yjk2MTZmZDggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuaApAQCAtMzEsOCArMzEsNiBAQCBz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCQkJCSAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7CiBib29sIGFt ZGdwdV9kbWFidWZfaXNfeGdtaV9hY2Nlc3NpYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmJvKTsKLXZvaWQgKmFtZGdwdV9nZW1fcHJp bWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIGFtZGdwdV9nZW1fcHJp bWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7CiBpbnQg YW1kZ3B1X2dlbV9wcmltZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAogCQkJICBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uYwppbmRleCA4ZWE2ZmM3NDU3NjkuLmE2MTQyZWRlNzhmYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk ZSA8ZHJtL2FtZGdwdV9kcm0uaD4KICNpbmNsdWRlIDxkcm0vZHJtX2RlYnVnZnMuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX2dlbV90dG1faGVscGVyLmg+CiAKICNpbmNsdWRlICJhbWRncHUuaCIKICNp bmNsdWRlICJhbWRncHVfZGlzcGxheS5oIgpAQCAtMjIwLDggKzIyMSw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MgYW1kZ3B1X2dlbV9vYmplY3RfZnVuY3MgPSB7 CiAJLm9wZW4gPSBhbWRncHVfZ2VtX29iamVjdF9vcGVuLAogCS5jbG9zZSA9IGFtZGdwdV9nZW1f b2JqZWN0X2Nsb3NlLAogCS5leHBvcnQgPSBhbWRncHVfZ2VtX3ByaW1lX2V4cG9ydCwKLQkudm1h cCA9IGFtZGdwdV9nZW1fcHJpbWVfdm1hcCwKLQkudnVubWFwID0gYW1kZ3B1X2dlbV9wcmltZV92 dW5tYXAsCisJLnZtYXAgPSBkcm1fZ2VtX3R0bV92bWFwLAorCS52dW5tYXAgPSBkcm1fZ2VtX3R0 bV92dW5tYXAsCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29i amVjdC5oCmluZGV4IDEzMmU1Zjk1NTE4MC4uMDEyOTZlZjBkNjczIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCkBAIC0xMDAsNyArMTAwLDYgQEAgc3RydWN0 IGFtZGdwdV9ibyB7CiAJc3RydWN0IGFtZGdwdV9ibwkJKnBhcmVudDsKIAlzdHJ1Y3QgYW1kZ3B1 X2JvCQkqc2hhZG93OwogCi0Jc3RydWN0IHR0bV9ib19rbWFwX29iagkJZG1hX2J1Zl92bWFwOwog CXN0cnVjdCBhbWRncHVfbW4JCSptbjsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9jdXJzb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2N1cnNvci5jCmluZGV4 IGUwZjQ2MTM5MThhZC4uNzQyZDQzYTdlZGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9jdXJzb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9jdXJzb3IuYwpA QCAtMzksNyArMzksNyBAQCBzdGF0aWMgdm9pZCBhc3RfY3Vyc29yX2Zpbmkoc3RydWN0IGFzdF9w cml2YXRlICphc3QpCiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhc3QtPmN1cnNvci5n Ym8pOyArK2kpIHsKIAkJZ2JvID0gYXN0LT5jdXJzb3IuZ2JvW2ldOwotCQlkcm1fZ2VtX3ZyYW1f dnVubWFwKGdibywgYXN0LT5jdXJzb3IudmFkZHJbaV0pOworCQlkcm1fZ2VtX3ZyYW1fdnVubWFw KGdibywgJmFzdC0+Y3Vyc29yLm1hcFtpXSk7CiAJCWRybV9nZW1fdnJhbV91bnBpbihnYm8pOwog CQlkcm1fZ2VtX3ZyYW1fcHV0KGdibyk7CiAJfQpAQCAtNjAsNyArNjAsNyBAQCBpbnQgYXN0X2N1 cnNvcl9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSAmYXN0LT5iYXNlOwogCXNpemVfdCBzaXplLCBpOwogCXN0cnVjdCBkcm1fZ2VtX3ZyYW1f b2JqZWN0ICpnYm87Ci0Jdm9pZCBfX2lvbWVtICp2YWRkcjsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAg bWFwOwogCWludCByZXQ7CiAKIAlzaXplID0gcm91bmR1cChBU1RfSFdDX1NJWkUgKyBBU1RfSFdD X1NJR05BVFVSRV9TSVpFLCBQQUdFX1NJWkUpOwpAQCAtNzcsMTYgKzc3LDE1IEBAIGludCBhc3Rf Y3Vyc29yX2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCiAJCQlkcm1fZ2VtX3ZyYW1fcHV0 KGdibyk7CiAJCQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1fcHV0OwogCQl9Ci0JCXZhZGRyID0gZHJt X2dlbV92cmFtX3ZtYXAoZ2JvKTsKLQkJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJCXJldCA9IFBU Ul9FUlIodmFkZHIpOworCQlyZXQgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8sICZtYXApOworCQlp ZiAocmV0KSB7CiAJCQlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKIAkJCWRybV9nZW1fdnJhbV9w dXQoZ2JvKTsKIAkJCWdvdG8gZXJyX2RybV9nZW1fdnJhbV9wdXQ7CiAJCX0KIAogCQlhc3QtPmN1 cnNvci5nYm9baV0gPSBnYm87Ci0JCWFzdC0+Y3Vyc29yLnZhZGRyW2ldID0gdmFkZHI7CisJCWFz dC0+Y3Vyc29yLm1hcFtpXSA9IG1hcDsKIAl9CiAKIAlyZXR1cm4gZHJtbV9hZGRfYWN0aW9uX29y X3Jlc2V0KGRldiwgYXN0X2N1cnNvcl9yZWxlYXNlLCBOVUxMKTsKQEAgLTk1LDcgKzk0LDcgQEAg aW50IGFzdF9jdXJzb3JfaW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKIAl3aGlsZSAoaSkg ewogCQktLWk7CiAJCWdibyA9IGFzdC0+Y3Vyc29yLmdib1tpXTsKLQkJZHJtX2dlbV92cmFtX3Z1 bm1hcChnYm8sIGFzdC0+Y3Vyc29yLnZhZGRyW2ldKTsKKwkJZHJtX2dlbV92cmFtX3Z1bm1hcChn Ym8sICZhc3QtPmN1cnNvci5tYXBbaV0pOwogCQlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKIAkJ ZHJtX2dlbV92cmFtX3B1dChnYm8pOwogCX0KQEAgLTE3MCw2ICsxNjksNyBAQCBpbnQgYXN0X2N1 cnNvcl9ibGl0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmFzdC0+YmFzZTsKIAlzdHJ1Y3Qg ZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CiAJaW50 IHJldDsKIAl2b2lkICpzcmM7CiAJdm9pZCBfX2lvbWVtICpkc3Q7CkBAIC0xODMsMTggKzE4Mywx NyBAQCBpbnQgYXN0X2N1cnNvcl9ibGl0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYikKIAlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdibywgMCk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKLQlzcmMgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8pOwot CWlmIChJU19FUlIoc3JjKSkgewotCQlyZXQgPSBQVFJfRVJSKHNyYyk7CisJcmV0ID0gZHJtX2dl bV92cmFtX3ZtYXAoZ2JvLCAmbWFwKTsKKwlpZiAocmV0KQogCQlnb3RvIGVycl9kcm1fZ2VtX3Zy YW1fdW5waW47Ci0JfQorCXNyYyA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJz dHJhY3Rpb24gcHJvcGVybHkgKi8KIAotCWRzdCA9IGFzdC0+Y3Vyc29yLnZhZGRyW2FzdC0+Y3Vy c29yLm5leHRfaW5kZXhdOworCWRzdCA9IGFzdC0+Y3Vyc29yLm1hcFthc3QtPmN1cnNvci5uZXh0 X2luZGV4XS52YWRkcl9pb21lbTsKIAogCS8qIGRvIGRhdGEgdHJhbnNmZXIgdG8gY3Vyc29yIEJP ICovCiAJdXBkYXRlX2N1cnNvcl9pbWFnZShkc3QsIHNyYywgZmItPndpZHRoLCBmYi0+aGVpZ2h0 KTsKIAotCWRybV9nZW1fdnJhbV92dW5tYXAoZ2JvLCBzcmMpOworCWRybV9nZW1fdnJhbV92dW5t YXAoZ2JvLCAmbWFwKTsKIAlkcm1fZ2VtX3ZyYW1fdW5waW4oZ2JvKTsKIAogCXJldHVybiAwOwpA QCAtMjU3LDcgKzI1Niw3IEBAIHZvaWQgYXN0X2N1cnNvcl9zaG93KHN0cnVjdCBhc3RfcHJpdmF0 ZSAqYXN0LCBpbnQgeCwgaW50IHksCiAJdTggX19pb21lbSAqc2lnOwogCXU4IGpyZWc7CiAKLQlk c3QgPSBhc3QtPmN1cnNvci52YWRkclthc3QtPmN1cnNvci5uZXh0X2luZGV4XTsKKwlkc3QgPSBh c3QtPmN1cnNvci5tYXBbYXN0LT5jdXJzb3IubmV4dF9pbmRleF0udmFkZHI7CiAKIAlzaWcgPSBk c3QgKyBBU1RfSFdDX1NJWkU7CiAJd3JpdGVsKHgsIHNpZyArIEFTVF9IV0NfU0lHTkFUVVJFX1gp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcnYuaAppbmRleCA0NjcwNDljYTg0MzAuLmY5NjMxNDFkZDg1MSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZHJ2LmgKQEAgLTI4LDEwICsyOCwxMSBAQAogI2lmbmRlZiBfX0FTVF9EUlZf SF9fCiAjZGVmaW5lIF9fQVNUX0RSVl9IX18KIAotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0j aW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWJpdC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1ZGUg PGRybS9kcm1fY29ubmVjdG9yLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CkBAIC0xMzEs NyArMTMyLDcgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsKIAogCXN0cnVjdCB7CiAJCXN0cnVjdCBk cm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm9bQVNUX0RFRkFVTFRfSFdDX05VTV07Ci0JCXZvaWQgX19p b21lbSAqdmFkZHJbQVNUX0RFRkFVTFRfSFdDX05VTV07CisJCXN0cnVjdCBkbWFfYnVmX21hcCBt YXBbQVNUX0RFRkFVTFRfSFdDX05VTV07CiAJCXVuc2lnbmVkIGludCBuZXh0X2luZGV4OwogCX0g Y3Vyc29yOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9nZW0uYwppbmRleCBkNTg2MDY4ZjU1MDkuLjQyMzFmZGEyNmU3MCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgog I2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgor I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvbWVtX2VuY3J5 cHQuaD4KICNpbmNsdWRlIDxsaW51eC9wYWdldmVjLmg+CiAKQEAgLTEyMDcsMjYgKzEyMDgsMzAg QEAgdm9pZCBkcm1fZ2VtX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogCiB2b2lk ICpkcm1fZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0Jdm9pZCAqdmFk ZHI7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKKwlpbnQgcmV0OwogCi0JaWYgKG9iai0+ZnVu Y3MtPnZtYXApCi0JCXZhZGRyID0gb2JqLT5mdW5jcy0+dm1hcChvYmopOwotCWVsc2UKLQkJdmFk ZHIgPSBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKKwlpZiAoIW9iai0+ZnVuY3MtPnZtYXApCisJCXJl dHVybiBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKIAotCWlmICghdmFkZHIpCi0JCXZhZGRyID0gRVJS X1BUUigtRU5PTUVNKTsKKwlyZXQgPSBvYmotPmZ1bmNzLT52bWFwKG9iaiwgJm1hcCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwllbHNlIGlmIChkbWFfYnVmX21hcF9pc19u dWxsKCZtYXApKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXJldHVybiB2YWRkcjsK KwlyZXR1cm4gbWFwLnZhZGRyOwogfQogCiB2b2lkIGRybV9nZW1fdnVubWFwKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKIHsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFw ID0gRE1BX0JVRl9NQVBfSU5JVF9WQUREUih2YWRkcik7CisKIAlpZiAoIXZhZGRyKQogCQlyZXR1 cm47CiAKIAlpZiAob2JqLT5mdW5jcy0+dnVubWFwKQotCQlvYmotPmZ1bmNzLT52dW5tYXAob2Jq LCB2YWRkcik7CisJCW9iai0+ZnVuY3MtPnZ1bm1hcChvYmosICZtYXApOwogfQogCiAvKioKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuYwppbmRleCBkNTI3NDg1ZWEwYjcuLmI1N2UzZTky MjJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuYwpAQCAtNTE5LDYgKzUxOSw4 IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fY21hX3ByaW1lX21tYXApOwogICogZHJtX2dl bV9jbWFfcHJpbWVfdm1hcCAtIG1hcCBhIENNQSBHRU0gb2JqZWN0IGludG8gdGhlIGtlcm5lbCdz IHZpcnR1YWwKICAqICAgICBhZGRyZXNzIHNwYWNlCiAgKiBAb2JqOiBHRU0gb2JqZWN0CisgKiBA bWFwOiBSZXR1cm5zIHRoZSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBDTUEgR0VNIG9i amVjdCdzIGJhY2tpbmcKKyAqICAgICAgIHN0b3JlLgogICoKICAqIFRoaXMgZnVuY3Rpb24gbWFw cyBhIGJ1ZmZlciBleHBvcnRlZCB2aWEgRFJNIFBSSU1FIGludG8gdGhlIGtlcm5lbCdzCiAgKiB2 aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuIFNpbmNlIHRoZSBDTUEgYnVmZmVycyBhcmUgYWxyZWFkeSBt YXBwZWQgaW50byB0aGUKQEAgLTUyNywxMyArNTI5LDE1IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRy bV9nZW1fY21hX3ByaW1lX21tYXApOwogICogZHJpdmVyJ3MgJmRybV9nZW1fb2JqZWN0X2Z1bmNz LnZtYXAgY2FsbGJhY2suCiAgKgogICogUmV0dXJuczoKLSAqIFRoZSBrZXJuZWwgdmlydHVhbCBh ZGRyZXNzIG9mIHRoZSBDTUEgR0VNIG9iamVjdCdzIGJhY2tpbmcgc3RvcmUuCisgKiAwIG9uIHN1 Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLXZvaWQgKmRy bV9nZW1fY21hX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCitpbnQgZHJt X2dlbV9jbWFfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRt YV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iaiA9 IHRvX2RybV9nZW1fY21hX29iaihvYmopOwogCi0JcmV0dXJuIGNtYV9vYmotPnZhZGRyOworCWRt YV9idWZfbWFwX3NldF92YWRkcihtYXAsIGNtYV9vYmotPnZhZGRyKTsKKworCXJldHVybiAwOwog fQogRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9jbWFfcHJpbWVfdm1hcCk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKaW5kZXggODIzM2JkYTQ2OTJmLi40OTkxODljNDhm MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jCkBAIC0yNTgsMTkgKzI1 OCwyNSBAQCB2b2lkIGRybV9nZW1fc2htZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fdW5waW4pOwogCi1zdGF0aWMgdm9p ZCAqZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Qg KnNobWVtKQorc3RhdGljIGludCBkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1f Z2VtX3NobWVtX29iamVjdCAqc2htZW0sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOwotCXN0cnVjdCBkbWFfYnVm X21hcCBtYXA7CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoc2htZW0tPnZtYXBfdXNlX2NvdW50Kysg PiAwKQotCQlyZXR1cm4gc2htZW0tPnZhZGRyOworCWlmIChzaG1lbS0+dm1hcF91c2VfY291bnQr KyA+IDApIHsKKwkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgc2htZW0tPnZhZGRyKTsKKwkJ cmV0dXJuIDA7CisJfQogCiAJaWYgKG9iai0+aW1wb3J0X2F0dGFjaCkgewotCQlyZXQgPSBkbWFf YnVmX3ZtYXAob2JqLT5pbXBvcnRfYXR0YWNoLT5kbWFidWYsICZtYXApOwotCQlpZiAoIXJldCkK LQkJCXNobWVtLT52YWRkciA9IG1hcC52YWRkcjsKKwkJcmV0ID0gZG1hX2J1Zl92bWFwKG9iai0+ aW1wb3J0X2F0dGFjaC0+ZG1hYnVmLCBtYXApOworCQlpZiAoIXJldCkgeworCQkJaWYgKFdBUk5f T04obWFwLT5pc19pb21lbSkpIHsKKwkJCQlyZXQgPSAtRUlPOworCQkJCWdvdG8gZXJyX3B1dF9w YWdlczsKKwkJCX0KKwkJCXNobWVtLT52YWRkciA9IG1hcC0+dmFkZHI7CisJCX0KIAl9IGVsc2Ug ewogCQlwZ3Byb3RfdCBwcm90ID0gUEFHRV9LRVJORUw7CiAKQEAgLTI4NCw2ICsyOTAsOCBAQCBz dGF0aWMgdm9pZCAqZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3QgKnNobWVtKQogCQkJCSAgICBWTV9NQVAsIHByb3QpOwogCQlpZiAoIXNobWVtLT52 YWRkcikKIAkJCXJldCA9IC1FTk9NRU07CisJCWVsc2UKKwkJCWRtYV9idWZfbWFwX3NldF92YWRk cihtYXAsIHNobWVtLT52YWRkcik7CiAJfQogCiAJaWYgKHJldCkgewpAQCAtMjkxLDcgKzI5OSw3 IEBAIHN0YXRpYyB2b2lkICpkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2Vt X3NobWVtX29iamVjdCAqc2htZW0pCiAJCWdvdG8gZXJyX3B1dF9wYWdlczsKIAl9CiAKLQlyZXR1 cm4gc2htZW0tPnZhZGRyOworCXJldHVybiAwOwogCiBlcnJfcHV0X3BhZ2VzOgogCWlmICghb2Jq LT5pbXBvcnRfYXR0YWNoKQpAQCAtMjk5LDEyICszMDcsMTQgQEAgc3RhdGljIHZvaWQgKmRybV9n ZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkK IGVycl96ZXJvX3VzZToKIAlzaG1lbS0+dm1hcF91c2VfY291bnQgPSAwOwogCi0JcmV0dXJuIEVS Ul9QVFIocmV0KTsKKwlyZXR1cm4gcmV0OwogfQogCiAvKgogICogZHJtX2dlbV9zaG1lbV92bWFw IC0gQ3JlYXRlIGEgdmlydHVhbCBtYXBwaW5nIGZvciBhIHNobWVtIEdFTSBvYmplY3QKICAqIEBz aG1lbTogc2htZW0gR0VNIG9iamVjdAorICogQG1hcDogUmV0dXJucyB0aGUga2VybmVsIHZpcnR1 YWwgYWRkcmVzcyBvZiB0aGUgU0hNRU0gR0VNIG9iamVjdCdzIGJhY2tpbmcKKyAqICAgICAgIHN0 b3JlLgogICoKICAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGF0IGEgY29udGlndW91cyBr ZXJuZWwgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcKICAqIGV4aXN0cyBmb3IgdGhlIGJ1ZmZlciBi YWNraW5nIHRoZSBzaG1lbSBHRU0gb2JqZWN0LgpAQCAtMzE4LDI2ICszMjgsMjUgQEAgc3RhdGlj IHZvaWQgKmRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2Jq ZWN0ICpzaG1lbSkKICAqIFJldHVybnM6CiAgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQgKmRybV9nZW1fc2htZW1fdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCBkcm1fZ2VtX3NobWVtX3ZtYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCBk cm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0gPSB0b19kcm1fZ2VtX3NobWVtX29iaihvYmopOwot CXZvaWQgKnZhZGRyOwogCWludCByZXQ7CiAKIAlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGli bGUoJnNobWVtLT52bWFwX2xvY2spOwogCWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7 Ci0JdmFkZHIgPSBkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHNobWVtKTsKKwkJcmV0dXJuIHJl dDsKKwlyZXQgPSBkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHNobWVtLCBtYXApOwogCW11dGV4 X3VubG9jaygmc2htZW0tPnZtYXBfbG9jayk7CiAKLQlyZXR1cm4gdmFkZHI7CisJcmV0dXJuIHJl dDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV92bWFwKTsKIAotc3RhdGljIHZvaWQg ZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAq c2htZW0pCitzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRy bV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwKKwkJCQkJc3RydWN0IGRtYV9idWZfbWFwICptYXAp CiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7Ci0Jc3RydWN0 IGRtYV9idWZfbWFwIG1hcCA9IERNQV9CVUZfTUFQX0lOSVRfVkFERFIoc2htZW0tPnZhZGRyKTsK IAogCWlmIChXQVJOX09OX09OQ0UoIXNobWVtLT52bWFwX3VzZV9jb3VudCkpCiAJCXJldHVybjsK QEAgLTM0Niw3ICszNTUsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2Nr ZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkKIAkJcmV0dXJuOwogCiAJaWYg KG9iai0+aW1wb3J0X2F0dGFjaCkKLQkJZG1hX2J1Zl92dW5tYXAob2JqLT5pbXBvcnRfYXR0YWNo LT5kbWFidWYsICZtYXApOworCQlkbWFfYnVmX3Z1bm1hcChvYmotPmltcG9ydF9hdHRhY2gtPmRt YWJ1ZiwgbWFwKTsKIAllbHNlCiAJCXZ1bm1hcChzaG1lbS0+dmFkZHIpOwogCkBAIC0zNTcsNiAr MzY2LDcgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBk cm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pCiAvKgogICogZHJtX2dlbV9zaG1lbV92dW5tYXAg LSBVbm1hcCBhIHZpcnR1YWwgbWFwcGluZyBmbyBhIHNobWVtIEdFTSBvYmplY3QKICAqIEBzaG1l bTogc2htZW0gR0VNIG9iamVjdAorICogQG1hcDogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVy ZSB0aGUgU0hNRU0gR0VNIG9iamVjdCB3YXMgbWFwcGVkCiAgKgogICogVGhpcyBmdW5jdGlvbiBj bGVhbnMgdXAgYSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgYWNxdWlyZWQgYnkKICAq IGRybV9nZW1fc2htZW1fdm1hcCgpLiBUaGUgbWFwcGluZyBpcyBvbmx5IHJlbW92ZWQgd2hlbiB0 aGUgdXNlIGNvdW50IGRyb3BzIHRvCkBAIC0zNjYsMTIgKzM3NiwxMiBAQCBzdGF0aWMgdm9pZCBk cm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpz aG1lbSkKICAqIGFsc28gYmUgY2FsbGVkIGJ5IGRyaXZlcnMgZGlyZWN0bHksIGluIHdoaWNoIGNh c2UgaXQgd2lsbCBoaWRlIHRoZQogICogZGlmZmVyZW5jZXMgYmV0d2VlbiBkbWEtYnVmIGltcG9y dGVkIGFuZCBuYXRpdmVseSBhbGxvY2F0ZWQgb2JqZWN0cy4KICAqLwotdm9pZCBkcm1fZ2VtX3No bWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCit2b2lk IGRybV9nZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVt ID0gdG9fZHJtX2dlbV9zaG1lbV9vYmoob2JqKTsKIAogCW11dGV4X2xvY2soJnNobWVtLT52bWFw X2xvY2spOwotCWRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzaG1lbSk7CisJZHJtX2dlbV9z aG1lbV92dW5tYXBfbG9ja2VkKHNobWVtLCBtYXApOwogCW11dGV4X3VubG9jaygmc2htZW0tPnZt YXBfbG9jayk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fdnVubWFwKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCmluZGV4IGUzMDVmYWRiOGJjOC4uNWUxYjA5YmE1 ZjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMKQEAgLTEsNSArMSw2IEBA CiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgogCisjaW5jbHVk ZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KIAogI2lu Y2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgpAQCAtMTEyLDggKzExMyw4IEBAIHN0YXRpYyB2b2lk IGRybV9nZW1fdnJhbV9jbGVhbnVwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pCiAJ ICogdXA7IG9ubHkgcmVsZWFzZSB0aGUgR0VNIG9iamVjdC4KIAkgKi8KIAotCVdBUk5fT04oZ2Jv LT5rbWFwX3VzZV9jb3VudCk7Ci0JV0FSTl9PTihnYm8tPmttYXAudmlydHVhbCk7CisJV0FSTl9P TihnYm8tPnZtYXBfdXNlX2NvdW50KTsKKwlXQVJOX09OKGRtYV9idWZfbWFwX2lzX3NldCgmZ2Jv LT5tYXApKTsKIAogCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJmdiby0+Ym8uYmFzZSk7CiB9CkBA IC0zNzgsMjkgKzM3OSwzNyBAQCBpbnQgZHJtX2dlbV92cmFtX3VucGluKHN0cnVjdCBkcm1fZ2Vt X3ZyYW1fb2JqZWN0ICpnYm8pCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdnJhbV91bnBpbik7 CiAKLXN0YXRpYyB2b2lkICpkcm1fZ2VtX3ZyYW1fa21hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKmdibykKK3N0YXRpYyBpbnQgZHJtX2dlbV92cmFtX2ttYXBfbG9ja2VkKHN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sCisJCQkJICAgIHN0cnVjdCBkbWFfYnVmX21h cCAqbWFwKQogewogCWludCByZXQ7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiAqa21hcCA9ICZn Ym8tPmttYXA7Ci0JYm9vbCBpc19pb21lbTsKIAotCWlmIChnYm8tPmttYXBfdXNlX2NvdW50ID4g MCkKKwlpZiAoZ2JvLT52bWFwX3VzZV9jb3VudCA+IDApCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0g dHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCBrbWFwKTsKKwlyZXQg PSB0dG1fYm9fdm1hcCgmZ2JvLT5ibywgJmdiby0+bWFwKTsKIAlpZiAocmV0KQotCQlyZXR1cm4g RVJSX1BUUihyZXQpOworCQlyZXR1cm4gcmV0OwogCiBvdXQ6Ci0JKytnYm8tPmttYXBfdXNlX2Nv dW50OwotCXJldHVybiB0dG1fa21hcF9vYmpfdmlydHVhbChrbWFwLCAmaXNfaW9tZW0pOworCSsr Z2JvLT52bWFwX3VzZV9jb3VudDsKKwkqbWFwID0gZ2JvLT5tYXA7CisKKwlyZXR1cm4gMDsKIH0K IAotc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKmdibykKK3N0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9rdW5tYXBfbG9ja2Vk KHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sCisJCQkJICAgICAgIHN0cnVjdCBkbWFf YnVmX21hcCAqbWFwKQogewotCWlmIChXQVJOX09OX09OQ0UoIWdiby0+a21hcF91c2VfY291bnQp KQorCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBnYm8tPmJvLmJhc2UuZGV2OworCisJaWYgKGRy bV9XQVJOX09OX09OQ0UoZGV2LCAhZ2JvLT52bWFwX3VzZV9jb3VudCkpCiAJCXJldHVybjsKLQlp ZiAoLS1nYm8tPmttYXBfdXNlX2NvdW50ID4gMCkKKworCWlmIChkcm1fV0FSTl9PTl9PTkNFKGRl diwgIWRtYV9idWZfbWFwX2lzX2VxdWFsKCZnYm8tPm1hcCwgbWFwKSkpCisJCXJldHVybjsgLyog QlVHOiBtYXAgbm90IG1hcHBlZCBmcm9tIHRoaXMgQk8gKi8KKworCWlmICgtLWdiby0+dm1hcF91 c2VfY291bnQgPiAwKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNDE0LDcgKzQyMyw5IEBAIHN0YXRp YyB2b2lkIGRybV9nZW1fdnJhbV9rdW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2Jq ZWN0ICpnYm8pCiAvKioKICAqIGRybV9nZW1fdnJhbV92bWFwKCkgLSBQaW5zIGFuZCBtYXBzIGEg R0VNIFZSQU0gb2JqZWN0IGludG8ga2VybmVsIGFkZHJlc3MKICAqICAgICAgICAgICAgICAgICAg ICAgICBzcGFjZQotICogQGdibzoJVGhlIEdFTSBWUkFNIG9iamVjdCB0byBtYXAKKyAqIEBnYm86 IFRoZSBHRU0gVlJBTSBvYmplY3QgdG8gbWFwCisgKiBAbWFwOiBSZXR1cm5zIHRoZSBrZXJuZWwg dmlydHVhbCBhZGRyZXNzIG9mIHRoZSBWUkFNIEdFTSBvYmplY3QncyBiYWNraW5nCisgKiAgICAg ICBzdG9yZS4KICAqCiAgKiBUaGUgdm1hcCBmdW5jdGlvbiBwaW5zIGEgR0VNIFZSQU0gb2JqZWN0 IHRvIGl0cyBjdXJyZW50IGxvY2F0aW9uLCBlaXRoZXIKICAqIHN5c3RlbSBvciB2aWRlbyBtZW1v cnksIGFuZCBtYXBzIGl0cyBidWZmZXIgaW50byBrZXJuZWwgYWRkcmVzcyBzcGFjZS4KQEAgLTQy Myw0OCArNDM0LDQ0IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9rdW5tYXBfbG9ja2VkKHN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pCiAgKiB1bm1hcCBhbmQgdW5waW4gdGhlIEdF TSBWUkFNIG9iamVjdC4KICAqCiAgKiBSZXR1cm5zOgotICogVGhlIGJ1ZmZlcidzIHZpcnR1YWwg YWRkcmVzcyBvbiBzdWNjZXNzLCBvcgotICogYW4gRVJSX1BUUigpLWVuY29kZWQgZXJyb3IgY29k ZSBvdGhlcndpc2UuCisgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBv dGhlcndpc2UuCiAgKi8KLXZvaWQgKmRybV9nZW1fdnJhbV92bWFwKHN0cnVjdCBkcm1fZ2VtX3Zy YW1fb2JqZWN0ICpnYm8pCitpbnQgZHJtX2dlbV92cmFtX3ZtYXAoc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibywgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJaW50IHJldDsKLQl2 b2lkICpiYXNlOwogCiAJcmV0ID0gdHRtX2JvX3Jlc2VydmUoJmdiby0+Ym8sIHRydWUsIGZhbHNl LCBOVUxMKTsKIAlpZiAocmV0KQotCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCQlyZXR1cm4gcmV0 OwogCiAJcmV0ID0gZHJtX2dlbV92cmFtX3Bpbl9sb2NrZWQoZ2JvLCAwKTsKIAlpZiAocmV0KQog CQlnb3RvIGVycl90dG1fYm9fdW5yZXNlcnZlOwotCWJhc2UgPSBkcm1fZ2VtX3ZyYW1fa21hcF9s b2NrZWQoZ2JvKTsKLQlpZiAoSVNfRVJSKGJhc2UpKSB7Ci0JCXJldCA9IFBUUl9FUlIoYmFzZSk7 CisJcmV0ID0gZHJtX2dlbV92cmFtX2ttYXBfbG9ja2VkKGdibywgbWFwKTsKKwlpZiAocmV0KQog CQlnb3RvIGVycl9kcm1fZ2VtX3ZyYW1fdW5waW5fbG9ja2VkOwotCX0KIAogCXR0bV9ib191bnJl c2VydmUoJmdiby0+Ym8pOwogCi0JcmV0dXJuIGJhc2U7CisJcmV0dXJuIDA7CiAKIGVycl9kcm1f Z2VtX3ZyYW1fdW5waW5fbG9ja2VkOgogCWRybV9nZW1fdnJhbV91bnBpbl9sb2NrZWQoZ2JvKTsK IGVycl90dG1fYm9fdW5yZXNlcnZlOgogCXR0bV9ib191bnJlc2VydmUoJmdiby0+Ym8pOwotCXJl dHVybiBFUlJfUFRSKHJldCk7CisJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2dl bV92cmFtX3ZtYXApOwogCiAvKioKICAqIGRybV9nZW1fdnJhbV92dW5tYXAoKSAtIFVubWFwcyBh bmQgdW5waW5zIGEgR0VNIFZSQU0gb2JqZWN0Ci0gKiBAZ2JvOglUaGUgR0VNIFZSQU0gb2JqZWN0 IHRvIHVubWFwCi0gKiBAdmFkZHI6CVRoZSBtYXBwaW5nJ3MgYmFzZSBhZGRyZXNzIGFzIHJldHVy bmVkIGJ5IGRybV9nZW1fdnJhbV92bWFwKCkKKyAqIEBnYm86IFRoZSBHRU0gVlJBTSBvYmplY3Qg dG8gdW5tYXAKKyAqIEBtYXA6IEtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgd2hlcmUgdGhlIFZSQU0g R0VNIG9iamVjdCB3YXMgbWFwcGVkCiAgKgogICogQSBjYWxsIHRvIGRybV9nZW1fdnJhbV92dW5t YXAoKSB1bm1hcHMgYW5kIHVucGlucyBhIEdFTSBWUkFNIGJ1ZmZlci4gU2VlCiAgKiB0aGUgZG9j dW1lbnRhdGlvbiBmb3IgZHJtX2dlbV92cmFtX3ZtYXAoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K ICAqLwotdm9pZCBkcm1fZ2VtX3ZyYW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0 ICpnYm8sIHZvaWQgKnZhZGRyKQordm9pZCBkcm1fZ2VtX3ZyYW1fdnVubWFwKHN0cnVjdCBkcm1f Z2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCWludCBy ZXQ7CiAKQEAgLTQ3Miw3ICs0NzksNyBAQCB2b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgdm9pZCAqdmFkZHIpCiAJaWYgKFdBUk5fT05DRShy ZXQsICJ0dG1fYm9fcmVzZXJ2ZV9mYWlsZWQoKTogcmV0PSVkXG4iLCByZXQpKQogCQlyZXR1cm47 CiAKLQlkcm1fZ2VtX3ZyYW1fa3VubWFwX2xvY2tlZChnYm8pOworCWRybV9nZW1fdnJhbV9rdW5t YXBfbG9ja2VkKGdibywgbWFwKTsKIAlkcm1fZ2VtX3ZyYW1fdW5waW5fbG9ja2VkKGdibyk7CiAK IAl0dG1fYm9fdW5yZXNlcnZlKCZnYm8tPmJvKTsKQEAgLTU2MywxNSArNTcwLDEzIEBAIHN0YXRp YyB2b2lkIGRybV9nZW1fdnJhbV9ib19kcml2ZXJfbW92ZV9ub3RpZnkoc3RydWN0IGRybV9nZW1f dnJhbV9vYmplY3QgKmdibywKIAkJCQkJICAgICAgIGJvb2wgZXZpY3QsCiAJCQkJCSAgICAgICBz dHJ1Y3QgdHRtX3Jlc291cmNlICpuZXdfbWVtKQogewotCXN0cnVjdCB0dG1fYm9fa21hcF9vYmog KmttYXAgPSAmZ2JvLT5rbWFwOworCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAmZ2Jv LT5ibzsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gYm8tPmJhc2UuZGV2OwogCi0JaWYgKFdB Uk5fT05fT05DRShnYm8tPmttYXBfdXNlX2NvdW50KSkKKwlpZiAoZHJtX1dBUk5fT05fT05DRShk ZXYsIGdiby0+dm1hcF91c2VfY291bnQpKQogCQlyZXR1cm47CiAKLQlpZiAoIWttYXAtPnZpcnR1 YWwpCi0JCXJldHVybjsKLQl0dG1fYm9fa3VubWFwKGttYXApOwotCWttYXAtPnZpcnR1YWwgPSBO VUxMOworCXR0bV9ib192dW5tYXAoYm8sICZnYm8tPm1hcCk7CiB9CiAKIHN0YXRpYyBpbnQgZHJt X2dlbV92cmFtX2JvX2RyaXZlcl9tb3ZlKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8s CkBAIC04MzcsMzcgKzg0MiwzMyBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3Vu cGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtKQogfQogCiAvKioKLSAqIGRybV9nZW1fdnJh bV9vYmplY3Rfdm1hcCgpIC0gXAotCUltcGxlbWVudHMgJnN0cnVjdCBkcm1fZ2VtX29iamVjdF9m dW5jcy52bWFwCi0gKiBAZ2VtOglUaGUgR0VNIG9iamVjdCB0byBtYXAKKyAqIGRybV9nZW1fdnJh bV9vYmplY3Rfdm1hcCgpIC0KKyAqCUltcGxlbWVudHMgJnN0cnVjdCBkcm1fZ2VtX29iamVjdF9m dW5jcy52bWFwCisgKiBAZ2VtOiBUaGUgR0VNIG9iamVjdCB0byBtYXAKKyAqIEBtYXA6IFJldHVy bnMgdGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFZSQU0gR0VNIG9iamVjdCdzIGJh Y2tpbmcKKyAqICAgICAgIHN0b3JlLgogICoKICAqIFJldHVybnM6Ci0gKiBUaGUgYnVmZmVycyB2 aXJ0dWFsIGFkZHJlc3Mgb24gc3VjY2Vzcywgb3IKLSAqIE5VTEwgb3RoZXJ3aXNlLgorICogMCBv biBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCi1zdGF0 aWMgdm9pZCAqZHJtX2dlbV92cmFtX29iamVjdF92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq Z2VtKQorc3RhdGljIGludCBkcm1fZ2VtX3ZyYW1fb2JqZWN0X3ZtYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpnZW0sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCBkcm1fZ2Vt X3ZyYW1fb2JqZWN0ICpnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKGdlbSk7Ci0Jdm9pZCAqYmFz ZTsKIAotCWJhc2UgPSBkcm1fZ2VtX3ZyYW1fdm1hcChnYm8pOwotCWlmIChJU19FUlIoYmFzZSkp Ci0JCXJldHVybiBOVUxMOwotCXJldHVybiBiYXNlOworCXJldHVybiBkcm1fZ2VtX3ZyYW1fdm1h cChnYm8sIG1hcCk7CiB9CiAKIC8qKgotICogZHJtX2dlbV92cmFtX29iamVjdF92dW5tYXAoKSAt IFwKLQlJbXBsZW1lbnRzICZzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MudnVubWFwCi0gKiBA Z2VtOglUaGUgR0VNIG9iamVjdCB0byB1bm1hcAotICogQHZhZGRyOglUaGUgbWFwcGluZydzIGJh c2UgYWRkcmVzcworICogZHJtX2dlbV92cmFtX29iamVjdF92dW5tYXAoKSAtCisgKglJbXBsZW1l bnRzICZzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MudnVubWFwCisgKiBAZ2VtOiBUaGUgR0VN IG9iamVjdCB0byB1bm1hcAorICogQG1hcDogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVyZSB0 aGUgVlJBTSBHRU0gb2JqZWN0IHdhcyBtYXBwZWQKICAqLwotc3RhdGljIHZvaWQgZHJtX2dlbV92 cmFtX29iamVjdF92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0sCi0JCQkJICAgICAg IHZvaWQgKnZhZGRyKQorc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX29iamVjdF92dW5tYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpnZW0sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8gPSBkcm1fZ2VtX3ZyYW1fb2ZfZ2VtKGdlbSk7 CiAKLQlkcm1fZ2VtX3ZyYW1fdnVubWFwKGdibywgdmFkZHIpOworCWRybV9nZW1fdnJhbV92dW5t YXAoZ2JvLCBtYXApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmgK aW5kZXggOTY4MmMyNmQ4OWJiLi5mNWJlNjI3ZTFkZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYv ZXRuYXZpdl9kcnYuaApAQCAtNTEsNyArNTEsNyBAQCBpbnQgZXRuYXZpdl9pb2N0bF9nZW1fc3Vi bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiBpbnQgZXRuYXZpdl9nZW1f bW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogaW50 IGV0bmF2aXZfZ2VtX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1NjQg Km9mZnNldCk7CiBzdHJ1Y3Qgc2dfdGFibGUgKmV0bmF2aXZfZ2VtX3ByaW1lX2dldF9zZ190YWJs ZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkICpldG5hdml2X2dlbV9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK2ludCBldG5hdml2X2dlbV9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7 CiBpbnQgZXRuYXZpdl9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwK IAkJCSAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqZXRuYXZpdl9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbV9wcmlt ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYwppbmRleCBh NmQ5OTMyYTMyYWUuLmJjMjU0M2RkOTg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0 bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X2dlbV9wcmltZS5jCkBAIC0yMiw5ICsyMiwxNCBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmV0 bmF2aXZfZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikK IAlyZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBldG5hdml2X29iai0+cGFn ZXMsIG5wYWdlcyk7CiB9CiAKLXZvaWQgKmV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCitpbnQgZXRuYXZpdl9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7Ci0JcmV0dXJuIGV0 bmF2aXZfZ2VtX3ZtYXAob2JqKTsKKwl2b2lkICp2YWRkciA9IGV0bmF2aXZfZ2VtX3ZtYXAob2Jq KTsKKwlpZiAoIXZhZGRyKQorCQlyZXR1cm4gLUVOT01FTTsKKwlkbWFfYnVmX21hcF9zZXRfdmFk ZHIobWFwLCB2YWRkcik7CisKKwlyZXR1cm4gMDsKIH0KIAogaW50IGV0bmF2aXZfZ2VtX3ByaW1l X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbGltYS9saW1hX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYwpp bmRleCAxMTIyM2ZlMzQ4ZGYuLjgzMmU1MjgwYTZlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2xpbWEvbGltYV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5j CkBAIC0xODIsMTQgKzE4MiwxNCBAQCBzdGF0aWMgaW50IGxpbWFfZ2VtX3BpbihzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gZHJtX2dlbV9zaG1lbV9waW4ob2JqKTsKIH0KIAot c3RhdGljIHZvaWQgKmxpbWFfZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCitz dGF0aWMgaW50IGxpbWFfZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVj dCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCBsaW1hX2JvICpibyA9IHRvX2xpbWFfYm8o b2JqKTsKIAogCWlmIChiby0+aGVhcF9zaXplKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK KwkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZHJtX2dlbV9zaG1lbV92bWFwKG9iaik7CisJ cmV0dXJuIGRybV9nZW1fc2htZW1fdm1hcChvYmosIG1hcCk7CiB9CiAKIHN0YXRpYyBpbnQgbGlt YV9nZW1fbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMKaW5kZXggZGM2ZGY5ZTlhNDBkLi5h MDcwYTg1ZjhmMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMKQEAgLTEsNiArMSw3IEBA CiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQKIC8qIENvcHlyaWdo dCAyMDE3LTIwMTkgUWlhbmcgWXUgPHl1cTgyNUBnbWFpbC5jb20+ICovCiAKKyNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgpAQCAtMzAzLDYgKzMw NCw4IEBAIHN0YXRpYyB2b2lkIGxpbWFfc2NoZWRfYnVpbGRfZXJyb3JfdGFza19saXN0KHN0cnVj dCBsaW1hX3NjaGVkX3Rhc2sgKnRhc2spCiAJc3RydWN0IGxpbWFfZHVtcF9jaHVua19idWZmZXIg KmJ1ZmZlcl9jaHVuazsKIAl1MzIgc2l6ZSwgdGFza19zaXplLCBtZW1fc2l6ZTsKIAlpbnQgaTsK KwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOworCWludCByZXQ7CiAKIAltdXRleF9sb2NrKCZkZXYt PmVycm9yX3Rhc2tfbGlzdF9sb2NrKTsKIApAQCAtMzg4LDE1ICszOTEsMTUgQEAgc3RhdGljIHZv aWQgbGltYV9zY2hlZF9idWlsZF9lcnJvcl90YXNrX2xpc3Qoc3RydWN0IGxpbWFfc2NoZWRfdGFz ayAqdGFzaykKIAkJfSBlbHNlIHsKIAkJCWJ1ZmZlcl9jaHVuay0+c2l6ZSA9IGxpbWFfYm9fc2l6 ZShibyk7CiAKLQkJCWRhdGEgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoJmJvLT5iYXNlLmJhc2UpOwot CQkJaWYgKElTX0VSUl9PUl9OVUxMKGRhdGEpKSB7CisJCQlyZXQgPSBkcm1fZ2VtX3NobWVtX3Zt YXAoJmJvLT5iYXNlLmJhc2UsICZtYXApOworCQkJaWYgKHJldCkgewogCQkJCWt2ZnJlZShldCk7 CiAJCQkJZ290byBvdXQ7CiAJCQl9CiAKLQkJCW1lbWNweShidWZmZXJfY2h1bmsgKyAxLCBkYXRh LCBidWZmZXJfY2h1bmstPnNpemUpOworCQkJbWVtY3B5KGJ1ZmZlcl9jaHVuayArIDEsIG1hcC52 YWRkciwgYnVmZmVyX2NodW5rLT5zaXplKTsKIAotCQkJZHJtX2dlbV9zaG1lbV92dW5tYXAoJmJv LT5iYXNlLmJhc2UsIGRhdGEpOworCQkJZHJtX2dlbV9zaG1lbV92dW5tYXAoJmJvLT5iYXNlLmJh c2UsICZtYXApOwogCQl9CiAKIAkJYnVmZmVyX2NodW5rID0gKHZvaWQgKikoYnVmZmVyX2NodW5r ICsgMSkgKyBidWZmZXJfY2h1bmstPnNpemU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBf bW9kZS5jCmluZGV4IDM4NjcyZjllNWM0Zi4uOGVmNzY3NjliOTdmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21vZGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX21vZGUuYwpAQCAtOSw2ICs5LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogCiAjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfc3Rh dGVfaGVscGVyLmg+CkBAIC0xNTU2LDE1ICsxNTU3LDE4IEBAIG1nYWcyMDBfaGFuZGxlX2RhbWFn ZShzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJ CSAgICAgIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gJm1kZXYtPmJhc2U7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAl2b2lkICp2bWFwOwor CWludCByZXQ7CiAKLQl2bWFwID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0pOwotCWlm IChkcm1fV0FSTl9PTihkZXYsICF2bWFwKSkKKwlyZXQgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZmIt Pm9ialswXSwgJm1hcCk7CisJaWYgKGRybV9XQVJOX09OKGRldiwgcmV0KSkKIAkJcmV0dXJuOyAv KiBCVUc6IFNITUVNIEJPIHNob3VsZCBhbHdheXMgYmUgdm1hcHBlZCAqLworCXZtYXAgPSBtYXAu dmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovCiAKIAlk cm1fZmJfbWVtY3B5X2RzdGNsaXAobWRldi0+dnJhbSwgdm1hcCwgZmIsIGNsaXApOwogCi0JZHJt X2dlbV9zaG1lbV92dW5tYXAoZmItPm9ialswXSwgdm1hcCk7CisJZHJtX2dlbV9zaG1lbV92dW5t YXAoZmItPm9ialswXSwgJm1hcCk7CiAKIAkvKiBBbHdheXMgc2Nhbm91dCBpbWFnZSBhdCBWUkFN IG9mZnNldCAwICovCiAJbWdhZzIwMF9zZXRfc3RhcnRhZGQobWRldiwgKHUzMikwKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9LY29uZmlnCmluZGV4IDVkZWMxZTU2OTRiNy4uOTQzNjMxMGQwODU0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L0tjb25maWcKQEAgLTYsNiArNiw3IEBAIGNvbmZpZyBEUk1fTk9VVkVBVQogCXNl bGVjdCBGV19MT0FERVIKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKIAlzZWxlY3QgRFJNX1RUTQor CXNlbGVjdCBEUk1fVFRNX0hFTFBFUgogCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFIGlm IERSTV9OT1VWRUFVX0JBQ0tMSUdIVAogCXNlbGVjdCBBQ1BJX1ZJREVPIGlmIEFDUEkgJiYgWDg2 ICYmIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgJiYgSU5QVVQKIAlzZWxlY3QgWDg2X1BMQVRGT1JN X0RFVklDRVMgaWYgQUNQSSAmJiBYODYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfYm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfYm8uaApp bmRleCA2NDFlZjYyOThhMGUuLjYwNDViODVhNzYyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL25vdXZlYXUvbm91dmVhdV9iby5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25v dXZlYXVfYm8uaApAQCAtMzksOCArMzksNiBAQCBzdHJ1Y3Qgbm91dmVhdV9ibyB7CiAJdW5zaWdu ZWQgbW9kZTsKIAogCXN0cnVjdCBub3V2ZWF1X2RybV90aWxlICp0aWxlOwotCi0Jc3RydWN0IHR0 bV9ib19rbWFwX29iaiBkbWFfYnVmX3ZtYXA7CiB9OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBu b3V2ZWF1X2JvICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5jCmluZGV4IGRkNTFj ZDBhZTIwYy4uNzg3ZDA1ZWVmZDljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2Vt LmMKQEAgLTI0LDYgKzI0LDggQEAKICAqCiAgKi8KIAorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3R0 bV9oZWxwZXIuaD4KKwogI2luY2x1ZGUgIm5vdXZlYXVfZHJ2LmgiCiAjaW5jbHVkZSAibm91dmVh dV9kbWEuaCIKICNpbmNsdWRlICJub3V2ZWF1X2ZlbmNlLmgiCkBAIC0xNzYsOCArMTc4LDggQEAg Y29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIG5vdXZlYXVfZ2VtX29iamVjdF9mdW5j cyA9IHsKIAkucGluID0gbm91dmVhdV9nZW1fcHJpbWVfcGluLAogCS51bnBpbiA9IG5vdXZlYXVf Z2VtX3ByaW1lX3VucGluLAogCS5nZXRfc2dfdGFibGUgPSBub3V2ZWF1X2dlbV9wcmltZV9nZXRf c2dfdGFibGUsCi0JLnZtYXAgPSBub3V2ZWF1X2dlbV9wcmltZV92bWFwLAotCS52dW5tYXAgPSBu b3V2ZWF1X2dlbV9wcmltZV92dW5tYXAsCisJLnZtYXAgPSBkcm1fZ2VtX3R0bV92bWFwLAorCS52 dW5tYXAgPSBkcm1fZ2VtX3R0bV92dW5tYXAsCiB9OwogCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2dlbS5oCmluZGV4IGIzNWMxODAzMjJlMi4uM2I5MTljN2M5MzFjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmgKQEAgLTM3LDcgKzM3LDUgQEAgZXh0ZXJuIHZv aWQgbm91dmVhdV9nZW1fcHJpbWVfdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICopOwogZXh0 ZXJuIHN0cnVjdCBzZ190YWJsZSAqbm91dmVhdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqKTsKIGV4dGVybiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm5vdXZl YXVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSgKIAlzdHJ1Y3QgZHJtX2RldmljZSAqLCBzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosIHN0cnVjdCBzZ190YWJsZSAqKTsKLWV4dGVybiB2b2lk ICpub3V2ZWF1X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKTsKLWV4dGVy biB2b2lkIG5vdXZlYXVfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKiwg dm9pZCAqKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u b3V2ZWF1X3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3ByaW1lLmMK aW5kZXggYTgyNjRhZWJmM2Q0Li4yZjE2YjUyNDkyODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L25vdXZlYXVfcHJpbWUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X3ByaW1lLmMKQEAgLTM1LDI2ICszNSw2IEBAIHN0cnVjdCBzZ190YWJsZSAqbm91 dmVhdV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQog CXJldHVybiBkcm1fcHJpbWVfcGFnZXNfdG9fc2cob2JqLT5kZXYsIG52Ym8tPmJvLnR0bS0+cGFn ZXMsIG5wYWdlcyk7CiB9CiAKLXZvaWQgKm5vdXZlYXVfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8gPSBub3V2ZWF1 X2dlbV9vYmplY3Qob2JqKTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gdHRtX2JvX2ttYXAoJm52Ym8t PmJvLCAwLCBudmJvLT5iby5udW1fcGFnZXMsCi0JCQkgICZudmJvLT5kbWFfYnVmX3ZtYXApOwot CWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7Ci0KLQlyZXR1cm4gbnZiby0+ZG1hX2J1 Zl92bWFwLnZpcnR1YWw7Ci19Ci0KLXZvaWQgbm91dmVhdV9nZW1fcHJpbWVfdnVubWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKLXsKLQlzdHJ1Y3Qgbm91dmVhdV9i byAqbnZibyA9IG5vdXZlYXVfZ2VtX29iamVjdChvYmopOwotCi0JdHRtX2JvX2t1bm1hcCgmbnZi by0+ZG1hX2J1Zl92bWFwKTsKLX0KLQogc3RydWN0IGRybV9nZW1fb2JqZWN0ICpub3V2ZWF1X2dl bV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJCQkg c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAogCQkJCQkJCSBzdHJ1Y3Qgc2dfdGFi bGUgKnNnKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X3Bl cmZjbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmMKaW5k ZXggZmRiYzhkOTQ5MTM1Li41YWIwM2Q2MDVmNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZy b3N0L3BhbmZyb3N0X3BlcmZjbnQuYwpAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJt X2dlbV9zaG1lbV9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vcGFuZnJvc3RfZHJtLmg+CiAjaW5j bHVkZSA8bGludXgvY29tcGxldGlvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+ CiAjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o PgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTcyLDYgKzczLDcgQEAgc3RhdGljIGludCBw YW5mcm9zdF9wZXJmY250X2VuYWJsZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZk ZXYsCiB7CiAJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqdXNlciA9IGZpbGVfcHJpdi0+ZHJp dmVyX3ByaXY7CiAJc3RydWN0IHBhbmZyb3N0X3BlcmZjbnQgKnBlcmZjbnQgPSBwZmRldi0+cGVy ZmNudDsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29i amVjdCAqYm87CiAJdTMyIGNmZywgYXM7CiAJaW50IHJldDsKQEAgLTEwMywxMSArMTA1LDEwIEBA IHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfbG9ja2VkKHN0cnVjdCBwYW5mcm9z dF9kZXZpY2UgKnBmZGV2LAogCQlnb3RvIGVycl9jbG9zZV9ibzsKIAl9CiAKLQlwZXJmY250LT5i dWYgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoJmJvLT5iYXNlKTsKLQlpZiAoSVNfRVJSKHBlcmZjbnQt PmJ1ZikpIHsKLQkJcmV0ID0gUFRSX0VSUihwZXJmY250LT5idWYpOworCXJldCA9IGRybV9nZW1f c2htZW1fdm1hcCgmYm8tPmJhc2UsICZtYXApOworCWlmIChyZXQpCiAJCWdvdG8gZXJyX3B1dF9t YXBwaW5nOwotCX0KKwlwZXJmY250LT5idWYgPSBtYXAudmFkZHI7CiAKIAkvKgogCSAqIEludmFs aWRhdGUgdGhlIGNhY2hlIGFuZCBjbGVhciB0aGUgY291bnRlcnMgdG8gc3RhcnQgZnJvbSBhIGZy ZXNoCkBAIC0xNjMsNyArMTY0LDcgQEAgc3RhdGljIGludCBwYW5mcm9zdF9wZXJmY250X2VuYWJs ZV9sb2NrZWQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJcmV0dXJuIDA7CiAKIGVy cl92dW5tYXA6Ci0JZHJtX2dlbV9zaG1lbV92dW5tYXAoJmJvLT5iYXNlLCBwZXJmY250LT5idWYp OworCWRybV9nZW1fc2htZW1fdnVubWFwKCZiby0+YmFzZSwgJm1hcCk7CiBlcnJfcHV0X21hcHBp bmc6CiAJcGFuZnJvc3RfZ2VtX21hcHBpbmdfcHV0KHBlcmZjbnQtPm1hcHBpbmcpOwogZXJyX2Ns b3NlX2JvOgpAQCAtMTgwLDYgKzE4MSw3IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9k aXNhYmxlX2xvY2tlZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwKIHsKIAlzdHJ1Y3Qg cGFuZnJvc3RfZmlsZV9wcml2ICp1c2VyID0gZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKIAlzdHJ1 Y3QgcGFuZnJvc3RfcGVyZmNudCAqcGVyZmNudCA9IHBmZGV2LT5wZXJmY250OworCXN0cnVjdCBk bWFfYnVmX21hcCBtYXAgPSBETUFfQlVGX01BUF9JTklUX1ZBRERSKHBlcmZjbnQtPmJ1Zik7CiAK IAlpZiAodXNlciAhPSBwZXJmY250LT51c2VyKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE5Miw3 ICsxOTQsNyBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X3BlcmZjbnRfZGlzYWJsZV9sb2NrZWQoc3Ry dWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJCSAgR1BVX1BFUkZDTlRfQ0ZHX01PREUoR1BV X1BFUkZDTlRfQ0ZHX01PREVfT0ZGKSk7CiAKIAlwZXJmY250LT51c2VyID0gTlVMTDsKLQlkcm1f Z2VtX3NobWVtX3Z1bm1hcCgmcGVyZmNudC0+bWFwcGluZy0+b2JqLT5iYXNlLmJhc2UsIHBlcmZj bnQtPmJ1Zik7CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoJnBlcmZjbnQtPm1hcHBpbmctPm9iai0+ YmFzZS5iYXNlLCAmbWFwKTsKIAlwZXJmY250LT5idWYgPSBOVUxMOwogCXBhbmZyb3N0X2dlbV9j bG9zZSgmcGVyZmNudC0+bWFwcGluZy0+b2JqLT5iYXNlLmJhc2UsIGZpbGVfcHJpdik7CiAJcGFu ZnJvc3RfbW11X2FzX3B1dChwZmRldiwgcGVyZmNudC0+bWFwcGluZy0+bW11KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2Rpc3BsYXkuYwppbmRleCA0NWZkNzZlMDRiZGMuLmI3ODNjM2FiZGZjOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9xeGwvcXhsX2Rpc3BsYXkuYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSA8bGlu dXgvY3JjMzIuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYtbWFwLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPgogI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+CkBAIC01ODEsNiArNTgyLDggQEAgc3RhdGljIHZvaWQgcXhsX2N1cnNvcl9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqOwogCXN0cnVjdCBxeGxfYm8gKmN1cnNvcl9ibyA9IE5VTEwsICp1c2VyX2JvID0g TlVMTCwgKm9sZF9jdXJzb3JfYm8gPSBOVUxMOwogCWludCByZXQ7CisJc3RydWN0IGRtYV9idWZf bWFwIHVzZXJfbWFwOworCXN0cnVjdCBkbWFfYnVmX21hcCBjdXJzb3JfbWFwOwogCXZvaWQgKnVz ZXJfcHRyOwogCWludCBzaXplID0gNjQqNjQqNDsKIApAQCAtNTk1LDkgKzU5OCwxMCBAQCBzdGF0 aWMgdm9pZCBxeGxfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJCXVzZXJfYm8gPSBnZW1fdG9fcXhsX2JvKG9iaik7CiAKIAkJLyogcGlubmluZyBpcyBkb25l IGluIHRoZSBwcmVwYXJlL2NsZWFudXAgZnJhbWV2YnVmZmVyICovCi0JCXJldCA9IHF4bF9ib19r bWFwKHVzZXJfYm8sICZ1c2VyX3B0cik7CisJCXJldCA9IHF4bF9ib19rbWFwKHVzZXJfYm8sICZ1 c2VyX21hcCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dF9mcmVlX3JlbGVhc2U7CisJCXVzZXJf cHRyID0gdXNlcl9tYXAudmFkZHI7IC8qIFRPRE86IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHBy b3Blcmx5ICovCiAKIAkJcmV0ID0gcXhsX2FsbG9jX2JvX3Jlc2VydmVkKHFkZXYsIHJlbGVhc2Us CiAJCQkJCSAgICBzaXplb2Yoc3RydWN0IHF4bF9jdXJzb3IpICsgc2l6ZSwKQEAgLTYxMyw5ICs2 MTcsMTMgQEAgc3RhdGljIHZvaWQgcXhsX2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCQlpZiAocmV0KQogCQkJZ290byBvdXRfdW5waW47CiAKLQkJcmV0ID0g cXhsX2JvX2ttYXAoY3Vyc29yX2JvLCAodm9pZCAqKikmY3Vyc29yKTsKKwkJcmV0ID0gcXhsX2Jv X2ttYXAoY3Vyc29yX2JvLCAmY3Vyc29yX21hcCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dF9i YWNrb2ZmOworCQlpZiAoY3Vyc29yX21hcC5pc19pb21lbSkgLyogVE9ETzogVXNlIG1hcHBpbmcg YWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KKwkJCWN1cnNvciA9IChzdHJ1Y3QgcXhsX2N1cnNvciBf X2ZvcmNlICopY3Vyc29yX21hcC52YWRkcl9pb21lbTsKKwkJZWxzZQorCQkJY3Vyc29yID0gKHN0 cnVjdCBxeGxfY3Vyc29yICopY3Vyc29yX21hcC52YWRkcjsKIAogCQljdXJzb3ItPmhlYWRlci51 bmlxdWUgPSAwOwogCQljdXJzb3ItPmhlYWRlci50eXBlID0gU1BJQ0VfQ1VSU09SX1RZUEVfQUxQ SEE7CkBAIC0xMTMzLDYgKzExNDEsNyBAQCBpbnQgcXhsX2NyZWF0ZV9tb25pdG9yc19vYmplY3Qo c3RydWN0IHF4bF9kZXZpY2UgKnFkZXYpCiB7CiAJaW50IHJldDsKIAlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKmdvYmo7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAlpbnQgbW9uaXRvcnNfY29u ZmlnX3NpemUgPSBzaXplb2Yoc3RydWN0IHF4bF9tb25pdG9yc19jb25maWcpICsKIAkJcXhsX251 bV9jcnRjICogc2l6ZW9mKHN0cnVjdCBxeGxfaGVhZCk7CiAKQEAgLTExNDksNyArMTE1OCw3IEBA IGludCBxeGxfY3JlYXRlX21vbml0b3JzX29iamVjdChzdHJ1Y3QgcXhsX2RldmljZSAqcWRldikK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcXhsX2JvX2ttYXAocWRldi0+bW9uaXRvcnNf Y29uZmlnX2JvLCBOVUxMKTsKKwlxeGxfYm9fa21hcChxZGV2LT5tb25pdG9yc19jb25maWdfYm8s ICZtYXApOwogCiAJcWRldi0+bW9uaXRvcnNfY29uZmlnID0gcWRldi0+bW9uaXRvcnNfY29uZmln X2JvLT5rcHRyOwogCXFkZXYtPnJhbV9oZWFkZXItPm1vbml0b3JzX2NvbmZpZyA9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcmF3LmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhs L3F4bF9kcmF3LmMKaW5kZXggMzU5OWRiMDk2OTczLi43YjdhY2I5MTA3ODAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2RyYXcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhs L3F4bF9kcmF3LmMKQEAgLTIwLDYgKzIwLDggQEAKICAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgKi8K IAorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CisKICNpbmNsdWRlIDxkcm0vZHJtX2Zv dXJjYy5oPgogCiAjaW5jbHVkZSAicXhsX2Rydi5oIgpAQCAtNDIsMTMgKzQ0LDE1IEBAIHN0YXRp YyBzdHJ1Y3QgcXhsX3JlY3QgKmRyYXdhYmxlX3NldF9jbGlwcGluZyhzdHJ1Y3QgcXhsX2Rldmlj ZSAqcWRldiwKIAkJCQkJICAgICAgdW5zaWduZWQgaW50IG51bV9jbGlwcywKIAkJCQkJICAgICAg c3RydWN0IHF4bF9ibyAqY2xpcHNfYm8pCiB7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAlz dHJ1Y3QgcXhsX2NsaXBfcmVjdHMgKmRldl9jbGlwczsKIAlpbnQgcmV0OwogCi0JcmV0ID0gcXhs X2JvX2ttYXAoY2xpcHNfYm8sICh2b2lkICoqKSZkZXZfY2xpcHMpOwotCWlmIChyZXQpIHsKKwly ZXQgPSBxeGxfYm9fa21hcChjbGlwc19ibywgJm1hcCk7CisJaWYgKHJldCkKIAkJcmV0dXJuIE5V TEw7Ci0JfQorCWRldl9jbGlwcyA9IG1hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBpbmcgYWJz dHJhY3Rpb24gcHJvcGVybHkgKi8KKwogCWRldl9jbGlwcy0+bnVtX3JlY3RzID0gbnVtX2NsaXBz OwogCWRldl9jbGlwcy0+Y2h1bmsubmV4dF9jaHVuayA9IDA7CiAJZGV2X2NsaXBzLT5jaHVuay5w cmV2X2NodW5rID0gMDsKQEAgLTE0Miw2ICsxNDYsNyBAQCB2b2lkIHF4bF9kcmF3X2RpcnR5X2Zi KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAogCWludCBzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXTsK IAkvKiBkZXB0aCBpcyBub3QgYWN0dWFsbHkgaW50ZXJlc3RpbmcsIHdlIGRvbid0IG1hc2sgd2l0 aCBpdCAqLwogCWludCBkZXB0aCA9IGZiLT5mb3JtYXQtPmNwcFswXSAqIDg7CisJc3RydWN0IGRt YV9idWZfbWFwIHN1cmZhY2VfbWFwOwogCXVpbnQ4X3QgKnN1cmZhY2VfYmFzZTsKIAlzdHJ1Y3Qg cXhsX3JlbGVhc2UgKnJlbGVhc2U7CiAJc3RydWN0IHF4bF9ibyAqY2xpcHNfYm87CkBAIC0xOTcs OSArMjAyLDEwIEBAIHZvaWQgcXhsX2RyYXdfZGlydHlfZmIoc3RydWN0IHF4bF9kZXZpY2UgKnFk ZXYsCiAJaWYgKHJldCkKIAkJZ290byBvdXRfcmVsZWFzZV9iYWNrb2ZmOwogCi0JcmV0ID0gcXhs X2JvX2ttYXAoYm8sICh2b2lkICoqKSZzdXJmYWNlX2Jhc2UpOworCXJldCA9IHF4bF9ib19rbWFw KGJvLCAmc3VyZmFjZV9tYXApOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3JlbGVhc2VfYmFja29m ZjsKKwlzdXJmYWNlX2Jhc2UgPSBzdXJmYWNlX21hcC52YWRkcjsgLyogVE9ETzogVXNlIG1hcHBp bmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCXJldCA9IHF4bF9pbWFnZV9pbml0KHFkZXYs IHJlbGVhc2UsIGRpbWFnZSwgc3VyZmFjZV9iYXNlLAogCQkJICAgICBsZWZ0IC0gZHVtYl9zaGFk b3dfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaAppbmRleCAzNjAyZThiMzQxODkuLmViNDM3ZmVh NWQ5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmgKQEAgLTMwLDYgKzMwLDcgQEAKICAqIERlZmluaXRp b25zIHRha2VuIGZyb20gc3BpY2UtcHJvdG9jb2wsIHBsdXMga2VybmVsIGRyaXZlciBzcGVjaWZp YyBiaXRzLgogICovCiAKKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPgogI2luY2x1ZGUg PGxpbnV4L2RtYS1mZW5jZS5oPgogI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CiAjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CkBAIC01MCw2ICs1MSw4IEBACiAKICNpbmNsdWRl ICJxeGxfZGV2LmgiCiAKK3N0cnVjdCBkbWFfYnVmX21hcDsKKwogI2RlZmluZSBEUklWRVJfQVVU SE9SCQkiRGF2ZSBBaXJsaWUiCiAKICNkZWZpbmUgRFJJVkVSX05BTUUJCSJxeGwiCkBAIC03OSw3 ICs4Miw3IEBAIHN0cnVjdCBxeGxfYm8gewogCS8qIFByb3RlY3RlZCBieSB0Ym8ucmVzZXJ2ZWQg Ki8KIAlzdHJ1Y3QgdHRtX3BsYWNlCQlwbGFjZW1lbnRzWzNdOwogCXN0cnVjdCB0dG1fcGxhY2Vt ZW50CQlwbGFjZW1lbnQ7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iagkJa21hcDsKKwlzdHJ1Y3Qg ZG1hX2J1Zl9tYXAJCW1hcDsKIAl2b2lkCQkJCSprcHRyOwogCXVuc2lnbmVkIGludCAgICAgICAg ICAgICAgICAgICAgbWFwX2NvdW50OwogCWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dHlwZTsKQEAgLTMzNSw3ICszMzgsNiBAQCBpbnQgcXhsX2dlbV9vYmplY3Rfb3BlbihzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogdm9pZCBx eGxfZ2VtX29iamVjdF9jbG9zZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogdm9pZCBxeGxfYm9fZm9yY2VfZGVsZXRlKHN0cnVj dCBxeGxfZGV2aWNlICpxZGV2KTsKLWludCBxeGxfYm9fa21hcChzdHJ1Y3QgcXhsX2JvICpibywg dm9pZCAqKnB0cik7CiAKIC8qIHF4bF9kdW1iLmMgKi8KIGludCBxeGxfbW9kZV9kdW1iX2NyZWF0 ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKQEAgLTQ0NSw4ICs0NDcsOSBAQCBzdHJ1Y3Qg c2dfdGFibGUgKnF4bF9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKTsKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqcXhsX2dlbV9wcmltZV9pbXBvcnRfc2df dGFibGUoCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoLAogCXN0cnVjdCBzZ190YWJsZSAqc2d0KTsKLXZvaWQgKnF4bF9nZW1fcHJpbWVf dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIHF4bF9nZW1fcHJpbWVfdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7CitpbnQgcXhsX2dl bV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCk7Cit2b2lkIHF4bF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLAorCQkJICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiBpbnQgcXhsX2dlbV9wcmlt ZV9tbWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAogCQkJCXN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuYwppbmRleCA1NDdkNDZjMTRkNTYu LmNlZWJjNTg4MWY2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmMKQEAgLTIzLDEwICsyMywx MiBAQAogICogICAgICAgICAgQWxvbiBMZXZ5CiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4L2RtYS1i dWYtbWFwLmg+CisjaW5jbHVkZSA8bGludXgvaW8tbWFwcGluZy5oPgorCiAjaW5jbHVkZSAicXhs X2Rydi5oIgogI2luY2x1ZGUgInF4bF9vYmplY3QuaCIKIAotI2luY2x1ZGUgPGxpbnV4L2lvLW1h cHBpbmcuaD4KIHN0YXRpYyB2b2lkIHF4bF90dG1fYm9fZGVzdHJveShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKnRibykKIHsKIAlzdHJ1Y3QgcXhsX2JvICpibzsKQEAgLTE1MiwyNCArMTU0LDI3 IEBAIGludCBxeGxfYm9fY3JlYXRlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAogCXJldHVybiAw OwogfQogCi1pbnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHZvaWQgKipwdHIpCitp bnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFw KQogewotCWJvb2wgaXNfaW9tZW07CiAJaW50IHI7CiAKIAlpZiAoYm8tPmtwdHIpIHsKLQkJaWYg KHB0cikKLQkJCSpwdHIgPSBiby0+a3B0cjsKIAkJYm8tPm1hcF9jb3VudCsrOwotCQlyZXR1cm4g MDsKKwkJZ290byBvdXQ7CiAJfQotCXIgPSB0dG1fYm9fa21hcCgmYm8tPnRibywgMCwgYm8tPnRi by5udW1fcGFnZXMsICZiby0+a21hcCk7CisJciA9IHR0bV9ib192bWFwKCZiby0+dGJvLCAmYm8t Pm1hcCk7CiAJaWYgKHIpCiAJCXJldHVybiByOwotCWJvLT5rcHRyID0gdHRtX2ttYXBfb2JqX3Zp cnR1YWwoJmJvLT5rbWFwLCAmaXNfaW9tZW0pOwotCWlmIChwdHIpCi0JCSpwdHIgPSBiby0+a3B0 cjsKIAliby0+bWFwX2NvdW50ID0gMTsKKworCS8qIFRPRE86IFJlbW92ZSBrcHRyIGluIGZhdm9y IG9mIG1hcCBldmVyeXdoZXJlLiAqLworCWlmIChiby0+bWFwLmlzX2lvbWVtKQorCQliby0+a3B0 ciA9ICh2b2lkICopYm8tPm1hcC52YWRkcl9pb21lbTsKKwllbHNlCisJCWJvLT5rcHRyID0gYm8t Pm1hcC52YWRkcjsKKworb3V0OgorCSptYXAgPSBiby0+bWFwOwogCXJldHVybiAwOwogfQogCkBA IC0xODAsNiArMTg1LDcgQEAgdm9pZCAqcXhsX2JvX2ttYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4 bF9kZXZpY2UgKnFkZXYsCiAJdm9pZCAqcnB0cjsKIAlpbnQgcmV0OwogCXN0cnVjdCBpb19tYXBw aW5nICptYXA7CisJc3RydWN0IGRtYV9idWZfbWFwIGJvX21hcDsKIAogCWlmIChiby0+dGJvLm1l bS5tZW1fdHlwZSA9PSBUVE1fUExfVlJBTSkKIAkJbWFwID0gcWRldi0+dnJhbV9tYXBwaW5nOwpA QCAtMTk2LDkgKzIwMiwxMCBAQCB2b2lkICpxeGxfYm9fa21hcF9hdG9taWNfcGFnZShzdHJ1Y3Qg cXhsX2RldmljZSAqcWRldiwKIAkJcmV0dXJuIHJwdHI7CiAJfQogCi0JcmV0ID0gcXhsX2JvX2tt YXAoYm8sICZycHRyKTsKKwlyZXQgPSBxeGxfYm9fa21hcChibywgJmJvX21hcCk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIE5VTEw7CisJcnB0ciA9IGJvX21hcC52YWRkcjsgLyogVE9ETzogVXNlIG1h cHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCXJwdHIgKz0gcGFnZV9vZmZzZXQgKiBQ QUdFX1NJWkU7CiAJcmV0dXJuIHJwdHI7CkBAIC0yMTIsNyArMjE5LDcgQEAgdm9pZCBxeGxfYm9f a3VubWFwKHN0cnVjdCBxeGxfYm8gKmJvKQogCWlmIChiby0+bWFwX2NvdW50ID4gMCkKIAkJcmV0 dXJuOwogCWJvLT5rcHRyID0gTlVMTDsKLQl0dG1fYm9fa3VubWFwKCZiby0+a21hcCk7CisJdHRt X2JvX3Z1bm1hcCgmYm8tPnRibywgJmJvLT5tYXApOwogfQogCiB2b2lkIHF4bF9ib19rdW5tYXBf YXRvbWljX3BhZ2Uoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVj dC5oCmluZGV4IDA5YTVjODE4MzI0ZC4uZWJmMjRjOWQyYmYyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9v YmplY3QuaApAQCAtNjMsNyArNjMsNyBAQCBleHRlcm4gaW50IHF4bF9ib19jcmVhdGUoc3RydWN0 IHF4bF9kZXZpY2UgKnFkZXYsCiAJCQkgYm9vbCBrZXJuZWwsIGJvb2wgcGlubmVkLCB1MzIgZG9t YWluLAogCQkJIHN0cnVjdCBxeGxfc3VyZmFjZSAqc3VyZiwKIAkJCSBzdHJ1Y3QgcXhsX2JvICoq Ym9fcHRyKTsKLWV4dGVybiBpbnQgcXhsX2JvX2ttYXAoc3RydWN0IHF4bF9ibyAqYm8sIHZvaWQg KipwdHIpOworZXh0ZXJuIGludCBxeGxfYm9fa21hcChzdHJ1Y3QgcXhsX2JvICpibywgc3RydWN0 IGRtYV9idWZfbWFwICptYXApOwogZXh0ZXJuIHZvaWQgcXhsX2JvX2t1bm1hcChzdHJ1Y3QgcXhs X2JvICpibyk7CiB2b2lkICpxeGxfYm9fa21hcF9hdG9taWNfcGFnZShzdHJ1Y3QgcXhsX2Rldmlj ZSAqcWRldiwgc3RydWN0IHF4bF9ibyAqYm8sIGludCBwYWdlX29mZnNldCk7CiB2b2lkIHF4bF9i b19rdW5tYXBfYXRvbWljX3BhZ2Uoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsIHN0cnVjdCBxeGxf Ym8gKmJvLCB2b2lkICptYXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf cHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3ByaW1lLmMKaW5kZXggN2QzODE2ZmNh NWE4Li40YWE5NDk3OTk0NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3By aW1lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfcHJpbWUuYwpAQCAtNTQsMjAgKzU0 LDIwIEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqcXhsX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFi bGUoCiAJcmV0dXJuIEVSUl9QVFIoLUVOT1NZUyk7CiB9CiAKLXZvaWQgKnF4bF9nZW1fcHJpbWVf dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCBxeGxfZ2VtX3ByaW1lX3ZtYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewog CXN0cnVjdCBxeGxfYm8gKmJvID0gZ2VtX3RvX3F4bF9ibyhvYmopOwotCXZvaWQgKnB0cjsKIAlp bnQgcmV0OwogCi0JcmV0ID0gcXhsX2JvX2ttYXAoYm8sICZwdHIpOworCXJldCA9IHF4bF9ib19r bWFwKGJvLCBtYXApOwogCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCQly ZXR1cm4gcmV0OwogCi0JcmV0dXJuIHB0cjsKKwlyZXR1cm4gMDsKIH0KIAotdm9pZCBxeGxfZ2Vt X3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCit2 b2lkIHF4bF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQkJ ICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKIHsKIAlzdHJ1Y3QgcXhsX2JvICpibyA9IGdlbV90 b19xeGxfYm8ob2JqKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggNWQ1NGJjY2ViZDRk Li40NGNiNWVlNmZjMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtNTA5LDcgKzUwOSw2 IEBAIHN0cnVjdCByYWRlb25fYm8gewogCS8qIENvbnN0YW50IGFmdGVyIGluaXRpYWxpemF0aW9u ICovCiAJc3RydWN0IHJhZGVvbl9kZXZpY2UJCSpyZGV2OwogCi0Jc3RydWN0IHR0bV9ib19rbWFw X29iagkJZG1hX2J1Zl92bWFwOwogCXBpZF90CQkJCXBpZDsKIAogI2lmZGVmIENPTkZJR19NTVVf Tk9USUZJRVIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMKaW5kZXggMGNjZDcyMTNlNDFm Li5kMjg3NmNlM2JjOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jCkBAIC0zMSw2 ICszMSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1Z2ZzLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9kZXZpY2UuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZpbGUuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2dlbV90dG1faGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL3JhZGVvbl9kcm0uaD4KIAogI2luY2x1 ZGUgInJhZGVvbi5oIgpAQCAtNDAsOCArNDEsNiBAQCBzdHJ1Y3QgZG1hX2J1ZiAqcmFkZW9uX2dl bV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqLAogc3RydWN0IHNnX3Rh YmxlICpyYWRlb25fZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7CiBpbnQgcmFkZW9uX2dlbV9wcmltZV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOwogdm9pZCByYWRlb25fZ2VtX3ByaW1lX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKLXZvaWQgKnJhZGVvbl9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7Ci12b2lkIHJhZGVvbl9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLCB2b2lkICp2YWRkcik7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3RfZnVuY3MgcmFkZW9uX2dlbV9vYmplY3RfZnVuY3M7CiAKQEAgLTIzNSw4ICsyMzQsOCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNzIHJhZGVvbl9nZW1fb2JqZWN0 X2Z1bmNzID0gewogCS5waW4gPSByYWRlb25fZ2VtX3ByaW1lX3BpbiwKIAkudW5waW4gPSByYWRl b25fZ2VtX3ByaW1lX3VucGluLAogCS5nZXRfc2dfdGFibGUgPSByYWRlb25fZ2VtX3ByaW1lX2dl dF9zZ190YWJsZSwKLQkudm1hcCA9IHJhZGVvbl9nZW1fcHJpbWVfdm1hcCwKLQkudnVubWFwID0g cmFkZW9uX2dlbV9wcmltZV92dW5tYXAsCisJLnZtYXAgPSBkcm1fZ2VtX3R0bV92bWFwLAorCS52 dW5tYXAgPSBkcm1fZ2VtX3R0bV92dW5tYXAsCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX3ByaW1lLmMKaW5kZXggYjlkZTBlNTFjMGJlLi4wODhkMzlhNTFjMGQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ByaW1lLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yYWRlb25fcHJpbWUuYwpAQCAtMzksMjYgKzM5LDYgQEAgc3RydWN0IHNn X3RhYmxlICpyYWRlb25fZ2VtX3ByaW1lX2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaikKIAlyZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBiby0+dGJv LnR0bS0+cGFnZXMsIG5wYWdlcyk7CiB9CiAKLXZvaWQgKnJhZGVvbl9nZW1fcHJpbWVfdm1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKLXsKLQlzdHJ1Y3QgcmFkZW9uX2JvICpibyA9IGdl bV90b19yYWRlb25fYm8ob2JqKTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gdHRtX2JvX2ttYXAoJmJv LT50Ym8sIDAsIGJvLT50Ym8ubnVtX3BhZ2VzLAotCQkJICAmYm8tPmRtYV9idWZfdm1hcCk7Ci0J aWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKLQotCXJldHVybiBiby0+ZG1hX2J1Zl92 bWFwLnZpcnR1YWw7Ci19Ci0KLXZvaWQgcmFkZW9uX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQotewotCXN0cnVjdCByYWRlb25fYm8gKmJv ID0gZ2VtX3RvX3JhZGVvbl9ibyhvYmopOwotCi0JdHRtX2JvX2t1bm1hcCgmYm8tPmRtYV9idWZf dm1hcCk7Ci19Ci0KIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqcmFkZW9uX2dlbV9wcmltZV9pbXBv cnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJCQlzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2gsCiAJCQkJCQkJc3RydWN0IHNnX3RhYmxlICpzZykKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCmluZGV4IDdkNWViYjEwMzIz Yi4uNzk3MWY1NzQzNmRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fZ2VtLmMKQEAgLTUzMiwyNiArNTMyLDMyIEBAIHJvY2tjaGlwX2dlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwog fQogCi12b2lkICpyb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaikKK2ludCByb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IHJvY2tjaGlwX2dlbV9v YmplY3QgKnJrX29iaiA9IHRvX3JvY2tjaGlwX29iaihvYmopOwogCi0JaWYgKHJrX29iai0+cGFn ZXMpCi0JCXJldHVybiB2bWFwKHJrX29iai0+cGFnZXMsIHJrX29iai0+bnVtX3BhZ2VzLCBWTV9N QVAsCi0JCQkgICAgcGdwcm90X3dyaXRlY29tYmluZShQQUdFX0tFUk5FTCkpOworCWlmIChya19v YmotPnBhZ2VzKSB7CisJCXZvaWQgKnZhZGRyID0gdm1hcChya19vYmotPnBhZ2VzLCBya19vYmot Pm51bV9wYWdlcywgVk1fTUFQLAorCQkJCSAgcGdwcm90X3dyaXRlY29tYmluZShQQUdFX0tFUk5F TCkpOworCQlpZiAoIXZhZGRyKQorCQkJcmV0dXJuIC1FTk9NRU07CisJCWRtYV9idWZfbWFwX3Nl dF92YWRkcihtYXAsIHZhZGRyKTsKKwkJcmV0dXJuIDA7CisJfQogCiAJaWYgKHJrX29iai0+ZG1h X2F0dHJzICYgRE1BX0FUVFJfTk9fS0VSTkVMX01BUFBJTkcpCi0JCXJldHVybiBOVUxMOworCQly ZXR1cm4gLUVOT01FTTsKKwlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBya19vYmotPmt2YWRk cik7CiAKLQlyZXR1cm4gcmtfb2JqLT5rdmFkZHI7CisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgcm9j a2NoaXBfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAq dmFkZHIpCit2b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCByb2NrY2hpcF9n ZW1fb2JqZWN0ICpya19vYmogPSB0b19yb2NrY2hpcF9vYmoob2JqKTsKIAogCWlmIChya19vYmot PnBhZ2VzKSB7Ci0JCXZ1bm1hcCh2YWRkcik7CisJCXZ1bm1hcChtYXAtPnZhZGRyKTsKIAkJcmV0 dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmgK aW5kZXggN2ZmYzU0MWJlYTA3Li41YTcwYTU2Y2Q0MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uaApAQCAtMzEsOCArMzEsOCBAQCBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKgogcm9ja2NoaXBfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJCSAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwK IAkJCQkgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnKTsKLXZvaWQgKnJvY2tjaGlwX2dlbV9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgcm9ja2NoaXBfZ2VtX3ByaW1l X3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpOworaW50IHJv Y2tjaGlwX2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgKm1hcCk7Cit2b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogLyogZHJt IGRyaXZlciBtbWFwIGZpbGUgb3BlcmF0aW9ucyAqLwogaW50IHJvY2tjaGlwX2dlbV9tbWFwKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2Np cnJ1cy5jCmluZGV4IDc0NGE4ZTMzN2U0MS4uYzAyZTM1ZWQ2ZTc2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJy dXMuYwpAQCAtMTcsNiArMTcsNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+ CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KIApAQCAtMzE0LDYgKzMxNSw3IEBAIHN0YXRpYyBp bnQgY2lycnVzX2ZiX2JsaXRfcmVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJCSAg ICAgICBzdHJ1Y3QgZHJtX3JlY3QgKnJlY3QpCiB7CiAJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNp cnJ1cyA9IHRvX2NpcnJ1cyhmYi0+ZGV2KTsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCXZv aWQgKnZtYXA7CiAJaW50IGlkeCwgcmV0OwogCkBAIC0zMjEsMTAgKzMyMywxMCBAQCBzdGF0aWMg aW50IGNpcnJ1c19mYl9ibGl0X3JlY3Qoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJaWYg KCFkcm1fZGV2X2VudGVyKCZjaXJydXMtPmRldiwgJmlkeCkpCiAJCWdvdG8gb3V0OwogCi0JcmV0 ID0gLUVOT01FTTsKLQl2bWFwID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0pOwotCWlm ICghdm1hcCkKKwlyZXQgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZmItPm9ialswXSwgJm1hcCk7CisJ aWYgKHJldCkKIAkJZ290byBvdXRfZGV2X2V4aXQ7CisJdm1hcCA9IG1hcC52YWRkcjsgLyogVE9E TzogVXNlIG1hcHBpbmcgYWJzdHJhY3Rpb24gcHJvcGVybHkgKi8KIAogCWlmIChjaXJydXMtPmNw cCA9PSBmYi0+Zm9ybWF0LT5jcHBbMF0pCiAJCWRybV9mYl9tZW1jcHlfZHN0Y2xpcChjaXJydXMt PnZyYW0sCkBAIC0zNDMsNyArMzQ1LDcgQEAgc3RhdGljIGludCBjaXJydXNfZmJfYmxpdF9yZWN0 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCWVsc2UKIAkJV0FSTl9PTl9PTkNFKCJjcHAg bWlzbWF0Y2giKTsKIAotCWRybV9nZW1fc2htZW1fdnVubWFwKGZiLT5vYmpbMF0sIHZtYXApOwor CWRybV9nZW1fc2htZW1fdnVubWFwKGZiLT5vYmpbMF0sICZtYXApOwogCXJldCA9IDA7CiAKIG91 dF9kZXZfZXhpdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2dtMTJ1MzIwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jCmluZGV4IGNjMzk3NjcxZjY4OS4uMTJh ODkwY2VhNmU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2dtMTJ1MzIwLmMKQEAgLTI0OCw2ICsyNDgsNyBAQCBz dGF0aWMgdm9pZCBnbTEydTMyMF9jb3B5X2ZiX3RvX2Jsb2NrcyhzdHJ1Y3QgZ20xMnUzMjBfZGV2 aWNlICpnbTEydTMyMCkKIHsKIAlpbnQgYmxvY2ssIGRzdF9vZmZzZXQsIGxlbiwgcmVtYWluLCBy ZXQsIHgxLCB4MiwgeTEsIHkyOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOworCXN0cnVj dCBkbWFfYnVmX21hcCBtYXA7CiAJdm9pZCAqdmFkZHI7CiAJdTggKnNyYzsKIApAQCAtMjYyLDEx ICsyNjMsMTIgQEAgc3RhdGljIHZvaWQgZ20xMnUzMjBfY29weV9mYl90b19ibG9ja3Moc3RydWN0 IGdtMTJ1MzIwX2RldmljZSAqZ20xMnUzMjApCiAJeTEgPSBnbTEydTMyMC0+ZmJfdXBkYXRlLnJl Y3QueTE7CiAJeTIgPSBnbTEydTMyMC0+ZmJfdXBkYXRlLnJlY3QueTI7CiAKLQl2YWRkciA9IGRy bV9nZW1fc2htZW1fdm1hcChmYi0+b2JqWzBdKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkgewotCQlH TTEyVTMyMF9FUlIoImZhaWxlZCB0byB2bWFwIGZiOiAlbGRcbiIsIFBUUl9FUlIodmFkZHIpKTsK KwlyZXQgPSBkcm1fZ2VtX3NobWVtX3ZtYXAoZmItPm9ialswXSwgJm1hcCk7CisJaWYgKHJldCkg eworCQlHTTEyVTMyMF9FUlIoImZhaWxlZCB0byB2bWFwIGZiOiAlZFxuIiwgcmV0KTsKIAkJZ290 byBwdXRfZmI7CiAJfQorCXZhZGRyID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBVc2UgbWFwcGluZyBh YnN0cmFjdGlvbiBwcm9wZXJseSAqLwogCiAJaWYgKGZiLT5vYmpbMF0tPmltcG9ydF9hdHRhY2gp IHsKIAkJcmV0ID0gZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKApAQCAtMzE4LDcgKzMyMCw3IEBA IHN0YXRpYyB2b2lkIGdtMTJ1MzIwX2NvcHlfZmJfdG9fYmxvY2tzKHN0cnVjdCBnbTEydTMyMF9k ZXZpY2UgKmdtMTJ1MzIwKQogCQkJR00xMlUzMjBfRVJSKCJkbWFfYnVmX2VuZF9jcHVfYWNjZXNz IGVycjogJWRcbiIsIHJldCk7CiAJfQogdnVubWFwOgotCWRybV9nZW1fc2htZW1fdnVubWFwKGZi LT5vYmpbMF0sIHZhZGRyKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCAmbWFw KTsKIHB1dF9mYjoKIAlkcm1fZnJhbWVidWZmZXJfcHV0KGZiKTsKIAlnbTEydTMyMC0+ZmJfdXBk YXRlLmZiID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVz ZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYwppbmRleCBmZWY0M2Y0ZTNi YWMuLjQyZWViYTFkZmRiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9k ZXNldC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYwpAQCAtMjc2LDYg KzI3Niw3IEBAIHN0YXRpYyBpbnQgdWRsX2hhbmRsZV9kYW1hZ2Uoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCB4LCBpbnQgeSwKIAlzdHJ1Y3QgdXJiICp1cmI7CiAJc3RydWN0IGRybV9y ZWN0IGNsaXA7CiAJaW50IGxvZ19icHA7CisJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsKIAl2b2lk ICp2YWRkcjsKIAogCXJldCA9IHVkbF9sb2dfY3BwKGZiLT5mb3JtYXQtPmNwcFswXSk7CkBAIC0y OTYsMTEgKzI5NywxMiBAQCBzdGF0aWMgaW50IHVkbF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHksCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXZh ZGRyID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0pOwotCWlmIChJU19FUlIodmFkZHIp KSB7CisJcmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwKGZiLT5vYmpbMF0sICZtYXApOworCWlmIChy ZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gdm1hcCBmYlxuIik7CiAJCWdvdG8gb3V0X2Rt YV9idWZfZW5kX2NwdV9hY2Nlc3M7CiAJfQorCXZhZGRyID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBV c2UgbWFwcGluZyBhYnN0cmFjdGlvbiBwcm9wZXJseSAqLwogCiAJdXJiID0gdWRsX2dldF91cmIo ZGV2KTsKIAlpZiAoIXVyYikKQEAgLTMzMyw3ICszMzUsNyBAQCBzdGF0aWMgaW50IHVkbF9oYW5k bGVfZGFtYWdlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgeCwgaW50IHksCiAJcmV0 ID0gMDsKIAogb3V0X2RybV9nZW1fc2htZW1fdnVubWFwOgotCWRybV9nZW1fc2htZW1fdnVubWFw KGZiLT5vYmpbMF0sIHZhZGRyKTsKKwlkcm1fZ2VtX3NobWVtX3Z1bm1hcChmYi0+b2JqWzBdLCAm bWFwKTsKIG91dF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzOgogCWlmIChpbXBvcnRfYXR0YWNoKSB7 CiAJCXRtcF9yZXQgPSBkbWFfYnVmX2VuZF9jcHVfYWNjZXNzKGltcG9ydF9hdHRhY2gtPmRtYWJ1 ZiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hfbW9kZS5jCmluZGV4IDkzMWM1NTEyNjE0OC4u ZjI2OGZiMjU4YzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL3Zib3hf bW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMKQEAgLTks NiArOSw4IEBACiAgKiAgICAgICAgICBNaWNoYWVsIFRoYXllciA8bWljaGFlbC50aGF5ZXJAb3Jh Y2xlLmNvbSwKICAqICAgICAgICAgIEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+ CiAgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgv ZXhwb3J0Lmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgpAQCAtMzg0LDYgKzM4Niw4 IEBAIHN0YXRpYyB2b2lkIHZib3hfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJdTMyIGhlaWdodCA9IHBsYW5lLT5zdGF0ZS0+Y3J0Y19oOwogCXNpemVfdCBk YXRhX3NpemUsIG1hc2tfc2l6ZTsKIAl1MzIgZmxhZ3M7CisJc3RydWN0IGRtYV9idWZfbWFwIG1h cDsKKwlpbnQgcmV0OwogCXU4ICpzcmM7CiAKIAkvKgpAQCAtMzk3LDggKzQwMSw4IEBAIHN0YXRp YyB2b2lkIHZib3hfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAKIAl2Ym94X2NydGMtPmN1cnNvcl9lbmFibGVkID0gdHJ1ZTsKIAotCXNyYyA9IGRybV9nZW1f dnJhbV92bWFwKGdibyk7Ci0JaWYgKElTX0VSUihzcmMpKSB7CisJcmV0ID0gZHJtX2dlbV92cmFt X3ZtYXAoZ2JvLCAmbWFwKTsKKwlpZiAocmV0KSB7CiAJCS8qCiAJCSAqIEJVRzogd2Ugc2hvdWxk IGhhdmUgcGlubmVkIHRoZSBCTyBpbiBwcmVwYXJlX2ZiKCkuCiAJCSAqLwpAQCAtNDA2LDYgKzQx MCw3IEBAIHN0YXRpYyB2b2lkIHZib3hfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCURSTV9XQVJOKCJDb3VsZCBub3QgbWFwIGN1cnNvciBibywgc2tpcHBp bmcgdXBkYXRlXG4iKTsKIAkJcmV0dXJuOwogCX0KKwlzcmMgPSBtYXAudmFkZHI7IC8qIFRPRE86 IFVzZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovCiAKIAkvKgogCSAqIFRoZSBtYXNr IG11c3QgYmUgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgYWxwaGEKQEAgLTQxNiw3ICs0MjEsNyBA QCBzdGF0aWMgdm9pZCB2Ym94X2N1cnNvcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCWRhdGFfc2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNCArIG1hc2tfc2l6ZTsKIAog CWNvcHlfY3Vyc29yX2ltYWdlKHNyYywgdmJveC0+Y3Vyc29yX2RhdGEsIHdpZHRoLCBoZWlnaHQs IG1hc2tfc2l6ZSk7Ci0JZHJtX2dlbV92cmFtX3Z1bm1hcChnYm8sIHNyYyk7CisJZHJtX2dlbV92 cmFtX3Z1bm1hcChnYm8sICZtYXApOwogCiAJZmxhZ3MgPSBWQk9YX01PVVNFX1BPSU5URVJfVklT SUJMRSB8IFZCT1hfTU9VU0VfUE9JTlRFUl9TSEFQRSB8CiAJCVZCT1hfTU9VU0VfUE9JTlRFUl9B TFBIQTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2JvLmMgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9iby5jCmluZGV4IDU1N2YwZDFlNjQzNy4uZjI5MGE5YTk0MmRjIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9iby5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2JvLmMKQEAgLTc4NSwxNiArNzg1LDE2IEBAIGludCB2YzRfcHJpbWVfbW1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEp CiAJcmV0dXJuIGRybV9nZW1fY21hX3ByaW1lX21tYXAob2JqLCB2bWEpOwogfQogCi12b2lkICp2 YzRfcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2ludCB2YzRfcHJpbWVf dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXAp CiB7CiAJc3RydWN0IHZjNF9ibyAqYm8gPSB0b192YzRfYm8ob2JqKTsKIAogCWlmIChiby0+dmFs aWRhdGVkX3NoYWRlcikgewogCQlEUk1fREVCVUcoIm1tYXBpbmcgb2Ygc2hhZGVyIEJPcyBub3Qg YWxsb3dlZC5cbiIpOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5W QUw7CiAJfQogCi0JcmV0dXJuIGRybV9nZW1fY21hX3ByaW1lX3ZtYXAob2JqKTsKKwlyZXR1cm4g ZHJtX2dlbV9jbWFfcHJpbWVfdm1hcChvYmosIG1hcCk7CiB9CiAKIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCmluZGV4IDcwMDNlN2YxNGE0OC4uYjQ0MDllYWQ4ZjU1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kcnYuaApAQCAtODA2LDcgKzgwNiw3IEBAIGludCB2YzRfcHJpbWVf bW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEpOwogc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2YzRfcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCQkgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq YXR0YWNoLAogCQkJCQkJIHN0cnVjdCBzZ190YWJsZSAqc2d0KTsKLXZvaWQgKnZjNF9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK2ludCB2YzRfcHJpbWVfdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwogaW50IHZj NF9ib19jYWNoZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCB2YzRfYm9fY2Fj aGVfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCB2YzRfYm9faW5jX3VzZWNu dChzdHJ1Y3QgdmM0X2JvICpibyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS92 Z2VtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuYwppbmRleCBmYTU0YTZk MTQwM2QuLmIyYWEyNmUxZTRhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdl bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jCkBAIC0zNjEsMjQg KzM2MSwzMCBAQCBzdGF0aWMgc3RydWN0IGRybV9nZW1fb2JqZWN0ICp2Z2VtX3ByaW1lX2ltcG9y dF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVybiAmb2JqLT5iYXNlOwog fQogCi1zdGF0aWMgdm9pZCAqdmdlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKQorc3RhdGljIGludCB2Z2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQogewogCXN0cnVjdCBkcm1fdmdlbV9nZW1fb2Jq ZWN0ICpibyA9IHRvX3ZnZW1fYm8ob2JqKTsKIAlsb25nIG5fcGFnZXMgPSBvYmotPnNpemUgPj4g UEFHRV9TSElGVDsKIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOworCXZvaWQgKnZhZGRyOwogCiAJcGFn ZXMgPSB2Z2VtX3Bpbl9wYWdlcyhibyk7CiAJaWYgKElTX0VSUihwYWdlcykpCi0JCXJldHVybiBO VUxMOworCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7CisKKwl2YWRkciA9IHZtYXAocGFnZXMsIG5f cGFnZXMsIDAsIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKKwlpZiAoIXZhZGRy KQorCQlyZXR1cm4gLUVOT01FTTsKKwlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7 CiAKLQlyZXR1cm4gdm1hcChwYWdlcywgbl9wYWdlcywgMCwgcGdwcm90X3dyaXRlY29tYmluZShQ QUdFX0tFUk5FTCkpOworCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB2Z2VtX3ByaW1lX3Z1 bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpCitzdGF0aWMgdm9p ZCB2Z2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRt YV9idWZfbWFwICptYXApCiB7CiAJc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgKmJvID0gdG9f dmdlbV9ibyhvYmopOwogCi0JdnVubWFwKHZhZGRyKTsKKwl2dW5tYXAobWFwLT52YWRkcik7CiAJ dmdlbV91bnBpbl9wYWdlcyhibyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYwppbmRl eCA5ODkwMTM3YmNiOGQuLjA4MjQzMjdjYzg2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUu YwpAQCAtMSw1ICsxLDcgQEAKIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwog CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4KKwogI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9mb3VyY2MuaD4KQEAgLTE0NiwxNSArMTQ4LDE2IEBAIHN0YXRpYyBpbnQgdmttc19wcmVw YXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJICAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwotCXZvaWQg KnZhZGRyOworCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7CisJaW50IHJldDsKIAogCWlmICghc3Rh dGUtPmZiKQogCQlyZXR1cm4gMDsKIAogCWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooc3Rh dGUtPmZiLCAwKTsKLQl2YWRkciA9IGRybV9nZW1fc2htZW1fdm1hcChnZW1fb2JqKTsKLQlpZiAo SVNfRVJSKHZhZGRyKSkKLQkJRFJNX0VSUk9SKCJ2bWFwIGZhaWxlZDogJWxpXG4iLCBQVFJfRVJS KHZhZGRyKSk7CisJcmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwKGdlbV9vYmosICZtYXApOworCWlm IChyZXQpCisJCURSTV9FUlJPUigidm1hcCBmYWlsZWQ6ICVkXG4iLCByZXQpOwogCiAJcmV0dXJu IGRybV9nZW1fZmJfcHJlcGFyZV9mYihwbGFuZSwgc3RhdGUpOwogfQpAQCAtMTY0LDEzICsxNjcs MTUgQEAgc3RhdGljIHZvaWQgdmttc19jbGVhbnVwX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAogewogCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKIAlzdHJ1Y3QgZHJtX2dlbV9z aG1lbV9vYmplY3QgKnNobWVtX29iajsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCiAJaWYg KCFvbGRfc3RhdGUtPmZiKQogCQlyZXR1cm47CiAKIAlnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRf b2JqKG9sZF9zdGF0ZS0+ZmIsIDApOwogCXNobWVtX29iaiA9IHRvX2RybV9nZW1fc2htZW1fb2Jq KGRybV9nZW1fZmJfZ2V0X29iaihvbGRfc3RhdGUtPmZiLCAwKSk7Ci0JZHJtX2dlbV9zaG1lbV92 dW5tYXAoZ2VtX29iaiwgc2htZW1fb2JqLT52YWRkcik7CisJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRy KCZtYXAsIHNobWVtX29iai0+dmFkZHIpOworCWRybV9nZW1fc2htZW1fdnVubWFwKGdlbV9vYmos ICZtYXApOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mg dmttc19wcmltYXJ5X2hlbHBlcl9mdW5jcyA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfd3JpdGViYWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRl YmFjay5jCmluZGV4IDI2YjkwMzkyNjg3Mi4uNjdmODBhYjFlODVmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRlYmFjay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfd3JpdGViYWNrLmMKQEAgLTEsNiArMSw3IEBACiAvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCsKIAotI2luY2x1ZGUgInZrbXNfZHJ2LmgiCisjaW5jbHVkZSA8bGlu dXgvZG1hLWJ1Zi1tYXAuaD4KKwogI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+CiAjaW5jbHVk ZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KICNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5o PgpAQCAtOCw2ICs5LDggQEAKICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxw ZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaD4KIAorI2luY2x1ZGUg InZrbXNfZHJ2LmgiCisKIHN0YXRpYyBjb25zdCB1MzIgdmttc193Yl9mb3JtYXRzW10gPSB7CiAJ RFJNX0ZPUk1BVF9YUkdCODg4OCwKIH07CkBAIC02NSwxOSArNjgsMjAgQEAgc3RhdGljIGludCB2 a21zX3diX3ByZXBhcmVfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29u bmVjdG9yLAogCQkJICAgICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQogewogCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKLQl2b2lkICp2YWRkcjsKKwlzdHJ1Y3QgZG1h X2J1Zl9tYXAgbWFwOworCWludCByZXQ7CiAKIAlpZiAoIWpvYi0+ZmIpCiAJCXJldHVybiAwOwog CiAJZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihqb2ItPmZiLCAwKTsKLQl2YWRkciA9IGRy bV9nZW1fc2htZW1fdm1hcChnZW1fb2JqKTsKLQlpZiAoSVNfRVJSKHZhZGRyKSkgewotCQlEUk1f RVJST1IoInZtYXAgZmFpbGVkOiAlbGlcbiIsIFBUUl9FUlIodmFkZHIpKTsKLQkJcmV0dXJuIFBU Ul9FUlIodmFkZHIpOworCXJldCA9IGRybV9nZW1fc2htZW1fdm1hcChnZW1fb2JqLCAmbWFwKTsK KwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigidm1hcCBmYWlsZWQ6ICVkXG4iLCByZXQpOworCQly ZXR1cm4gcmV0OwogCX0KIAotCWpvYi0+cHJpdiA9IHZhZGRyOworCWpvYi0+cHJpdiA9IG1hcC52 YWRkcjsKIAogCXJldHVybiAwOwogfQpAQCAtODcsMTIgKzkxLDE0IEBAIHN0YXRpYyB2b2lkIHZr bXNfd2JfY2xlYW51cF9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpjb25uZWN0 b3IsCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwogCXN0cnVjdCB2a21zX2Rl dmljZSAqdmttc2RldjsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCiAJaWYgKCFqb2ItPmZi KQogCQlyZXR1cm47CiAKIAlnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRfb2JqKGpvYi0+ZmIsIDAp OwotCWRybV9nZW1fc2htZW1fdnVubWFwKGdlbV9vYmosIGpvYi0+cHJpdik7CisJZG1hX2J1Zl9t YXBfc2V0X3ZhZGRyKCZtYXAsIGpvYi0+cHJpdik7CisJZHJtX2dlbV9zaG1lbV92dW5tYXAoZ2Vt X29iaiwgJm1hcCk7CiAKIAl2a21zZGV2ID0gZHJtX2RldmljZV90b192a21zX2RldmljZShnZW1f b2JqLT5kZXYpOwogCXZrbXNfc2V0X2NvbXBvc2VyKCZ2a21zZGV2LT5vdXRwdXQsIGZhbHNlKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwppbmRleCA0ZjM0ZWYzNGJhNjAu Ljc0ZGI1YTg0MGJlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zy b250X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwpA QCAtMjkwLDIyICsyOTAsMjggQEAgaW50IHhlbl9kcm1fZnJvbnRfZ2VtX21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQogCXJldHVybiBnZW1fbW1hcF9v YmooeGVuX29iaiwgdm1hKTsKIH0KIAotdm9pZCAqeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCitpbnQgeGVuX2RybV9mcm9udF9nZW1f cHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosIHN0cnVjdCBkbWFfYnVm X21hcCAqbWFwKQogewogCXN0cnVjdCB4ZW5fZ2VtX29iamVjdCAqeGVuX29iaiA9IHRvX3hlbl9n ZW1fb2JqKGdlbV9vYmopOworCXZvaWQgKnZhZGRyOwogCiAJaWYgKCF4ZW5fb2JqLT5wYWdlcykK LQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiAtRU5PTUVNOwogCiAJLyogUGxlYXNlIHNlZSBjb21t ZW50IGluIGdlbV9tbWFwX29iaiBvbiBtYXBwaW5nIGFuZCBhdHRyaWJ1dGVzLiAqLwotCXJldHVy biB2bWFwKHhlbl9vYmotPnBhZ2VzLCB4ZW5fb2JqLT5udW1fcGFnZXMsCi0JCSAgICBWTV9NQVAs IFBBR0VfS0VSTkVMKTsKKwl2YWRkciA9IHZtYXAoeGVuX29iai0+cGFnZXMsIHhlbl9vYmotPm51 bV9wYWdlcywKKwkJICAgICBWTV9NQVAsIFBBR0VfS0VSTkVMKTsKKwlpZiAoIXZhZGRyKQorCQly ZXR1cm4gLUVOT01FTTsKKwlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7CisKKwly ZXR1cm4gMDsKIH0KIAogdm9pZCB4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV92dW5tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLAotCQkJCSAgICB2b2lkICp2YWRkcikKKwkJCQkgICAg c3RydWN0IGRtYV9idWZfbWFwICptYXApCiB7Ci0JdnVubWFwKHZhZGRyKTsKKwl2dW5tYXAobWFw LT52YWRkcik7CiB9CiAKIGludCB4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV9tbWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtX29iaiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9n ZW0uaAppbmRleCBhMzk2NzVmYTMxYjIuLmE0ZTY3ZDBhMTQ5YyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94 ZW4veGVuX2RybV9mcm9udF9nZW0uaApAQCAtMTIsNiArMTIsNyBAQAogI2RlZmluZSBfX1hFTl9E Uk1fRlJPTlRfR0VNX0gKIAogc3RydWN0IGRtYV9idWZfYXR0YWNobWVudDsKK3N0cnVjdCBkbWFf YnVmX21hcDsKIHN0cnVjdCBkcm1fZGV2aWNlOwogc3RydWN0IGRybV9nZW1fb2JqZWN0Owogc3Ry dWN0IGZpbGU7CkBAIC0zNCwxMCArMzUsMTEgQEAgdm9pZCB4ZW5fZHJtX2Zyb250X2dlbV9mcmVl X29iamVjdF91bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopOwogCiBpbnQg eGVuX2RybV9mcm9udF9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpOwogCi12b2lkICp4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV92bWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaik7CitpbnQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVf dm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosCisJCQkJIHN0cnVjdCBkbWFfYnVm X21hcCAqbWFwKTsKIAogdm9pZCB4ZW5fZHJtX2Zyb250X2dlbV9wcmltZV92dW5tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLAotCQkJCSAgICB2b2lkICp2YWRkcik7CisJCQkJICAg IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogaW50IHhlbl9kcm1fZnJvbnRfZ2VtX3ByaW1l X21tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqLAogCQkJCSBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmggYi9pbmNs dWRlL2RybS9kcm1fZ2VtLmgKaW5kZXggYzM4ZGQzNWRhMDBiLi41ZTZkYWExYzk4MmYgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW0uaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgK QEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgPGRybS9kcm1fdm1hX21hbmFnZXIuaD4KIAor c3RydWN0IGRtYV9idWZfbWFwOwogc3RydWN0IGRybV9nZW1fb2JqZWN0OwogCiAvKioKQEAgLTEz OCw3ICsxMzksNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MgewogCSAqCiAJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbC4KIAkgKi8KLQl2b2lkICooKnZtYXApKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKTsKKwlpbnQgKCp2bWFwKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOwogCiAJLyoqCiAJICogQHZ1bm1hcDoKQEAgLTE0 OCw3ICsxNDksNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MgewogCSAqCiAJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbC4KIAkgKi8KLQl2b2lkICgqdnVubWFwKShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgdm9pZCAqdmFkZHIpOworCXZvaWQgKCp2dW5tYXApKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7CiAKIAkvKioKIAkg KiBAbW1hcDoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oIGIv aW5jbHVkZS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmgKaW5kZXggYTA2NGIwZDFjNDgwLi5jYWY5 OGI5Y2Y0YjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oCisr KyBiL2luY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAg ZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCQkJICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7CiBpbnQgZHJtX2dlbV9jbWFfcHJpbWVfbW1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hKTsKLXZvaWQgKmRybV9nZW1fY21hX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopOworaW50IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICoKIGRybV9nZW1fY21hX2NyZWF0ZV9vYmplY3RfZGVmYXVsdF9mdW5jcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Z2VtX3NobWVtX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaApp bmRleCA1MzgxZjBjOGNmNmYuLjM0NDlhMDM1M2ZlMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2dlbV9zaG1lbV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtX3NobWVtX2hl bHBlci5oCkBAIC0xMTMsOCArMTEzLDggQEAgaW50IGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzKHN0 cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pOwogdm9pZCBkcm1fZ2VtX3NobWVtX3B1 dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsKIGludCBkcm1fZ2Vt X3NobWVtX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGRybV9nZW1fc2ht ZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwotdm9pZCAqZHJtX2dlbV9zaG1l bV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgZHJtX2dlbV9zaG1lbV92 dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKK2ludCBkcm1f Z2VtX3NobWVtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVm X21hcCAqbWFwKTsKK3ZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogaW50IGRybV9nZW1fc2htZW1f bWFkdmlzZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgaW50IG1hZHYpOwogCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1f Z2VtX3ZyYW1faGVscGVyLmgKaW5kZXggMTI4Zjg4MTc0ZDMyLi5jMGQyOGJhMGY1YzkgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2Ry bS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlIDxkcm0v dHRtL3R0bV9ib19hcGkuaD4KICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4KIAor I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ IC8qIGZvciBjb250YWluZXJfb2YoKSAqLwogCiBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWI7 CkBAIC0yOSw5ICszMCw4IEBAIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKIAogLyoqCiAgKiBzdHJ1 Y3QgZHJtX2dlbV92cmFtX29iamVjdCAtIEdFTSBvYmplY3QgYmFja2VkIGJ5IFZSQU0KLSAqIEBn ZW06CUdFTSBvYmplY3QKICAqIEBibzoJCVRUTSBidWZmZXIgb2JqZWN0Ci0gKiBAa21hcDoJTWFw cGluZyBpbmZvcm1hdGlvbiBmb3IgQGJvCisgKiBAbWFwOglNYXBwaW5nIGluZm9ybWF0aW9uIGZv ciBAYm8KICAqIEBwbGFjZW1lbnQ6CVRUTSBwbGFjZW1lbnQgaW5mb3JtYXRpb24uIFN1cHBvcnRl ZCBwbGFjZW1lbnRzIGFyZSBcCiAJJVRUTV9QTF9WUkFNIGFuZCAlVFRNX1BMX1NZU1RFTQogICog QHBsYWNlbWVudHM6CVRUTSBwbGFjZW1lbnQgaW5mb3JtYXRpb24uCkBAIC01MCwxNSArNTAsMTUg QEAgc3RydWN0IHZtX2FyZWFfc3RydWN0OwogICovCiBzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCB7CiAJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0IGJvOwotCXN0cnVjdCB0dG1fYm9fa21hcF9v Ymoga21hcDsKKwlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOwogCiAJLyoqCi0JICogQGttYXBfdXNl X2NvdW50OgorCSAqIEB2bWFwX3VzZV9jb3VudDoKIAkgKgogCSAqIFJlZmVyZW5jZSBjb3VudCBv biB0aGUgdmlydHVhbCBhZGRyZXNzLgogCSAqIFRoZSBhZGRyZXNzIGFyZSB1bi1tYXBwZWQgd2hl biB0aGUgY291bnQgcmVhY2hlcyB6ZXJvLgogCSAqLwotCXVuc2lnbmVkIGludCBrbWFwX3VzZV9j b3VudDsKKwl1bnNpZ25lZCBpbnQgdm1hcF91c2VfY291bnQ7CiAKIAkvKiBTdXBwb3J0ZWQgcGxh Y2VtZW50cyBhcmUgJVRUTV9QTF9WUkFNIGFuZCAlVFRNX1BMX1NZU1RFTSAqLwogCXN0cnVjdCB0 dG1fcGxhY2VtZW50IHBsYWNlbWVudDsKQEAgLTk3LDggKzk3LDggQEAgdTY0IGRybV9nZW1fdnJh bV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKTsKIHM2NCBkcm1f Z2VtX3ZyYW1fb2Zmc2V0KHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pOwogaW50IGRy bV9nZW1fdnJhbV9waW4oc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgdW5zaWduZWQg bG9uZyBwbF9mbGFnKTsKIGludCBkcm1fZ2VtX3ZyYW1fdW5waW4oc3RydWN0IGRybV9nZW1fdnJh bV9vYmplY3QgKmdibyk7Ci12b2lkICpkcm1fZ2VtX3ZyYW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV92 cmFtX29iamVjdCAqZ2JvKTsKLXZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dl bV92cmFtX29iamVjdCAqZ2JvLCB2b2lkICp2YWRkcik7CitpbnQgZHJtX2dlbV92cmFtX3ZtYXAo c3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgc3RydWN0IGRtYV9idWZfbWFwICptYXAp Owordm9pZCBkcm1fZ2VtX3ZyYW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpn Ym8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsKIAogaW50IGRybV9nZW1fdnJhbV9maWxsX2Ny ZWF0ZV9kdW1iKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKIAkJCQkgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCi0tIAoyLjI5LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eAo=