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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 3A791C433E9 for ; Wed, 10 Feb 2021 10:26:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D2E4964E3E for ; Wed, 10 Feb 2021 10:26:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231213AbhBJK0A (ORCPT ); Wed, 10 Feb 2021 05:26:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231152AbhBJKNV (ORCPT ); Wed, 10 Feb 2021 05:13:21 -0500 Received: from mail-ua1-x930.google.com (mail-ua1-x930.google.com [IPv6:2607:f8b0:4864:20::930]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1D19C06174A for ; Wed, 10 Feb 2021 02:12:38 -0800 (PST) Received: by mail-ua1-x930.google.com with SMTP id a16so393415uad.9 for ; Wed, 10 Feb 2021 02:12:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GVy97cm8Be+Y72z9H7sf0vudu7SMNIqn5PSJ923rrLo=; b=EeSg7MbneiHl6Wq1XgqoTNB4i0DC1xBLZWe0xUtgKxAWrNzAz83wWTM+xnMdKQAQ/p L9N3ZdrHztlQZO+Xd4eZrwscq4Mq7LpjSXcSCbIQ39RLLNAfd0nQOPk+7OqGqU4cYr3J hsvV1yN8bhYftJ93D8whrhnfG43wyFJ4CM+n8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GVy97cm8Be+Y72z9H7sf0vudu7SMNIqn5PSJ923rrLo=; b=WJxz+eVOs05X1hSahiV6iAxLliUPzVVvo9R2Mq9OOf155e23nj8GMhY7POOeD2Y0k+ 633ZY1xaIG1M71mkS12U6Or5nfic8Av0r/at4L1U6b/ZSN4LEHIkRY5MOtd/drk0e2DW jlP6XFWjeJlE6H2csdAlZe9apSAtUcOu1W1bbxptF9ummw+6eAQVCz8AKayHbtmQeEgF 91ifOPbA+uC58JfdIKahVD+Wjz3zj9sglZFEqpY39l6ESGpgicMeld7dwlSs4Dv4nAGB Xarp+Ygw1bmc+Xu/eVSokD0V5m2GcbGM2AyisT0CK23Cdj32DBKr5Z0NmcPkt05zT7BO m1kQ== X-Gm-Message-State: AOAM533oB3e/n3evMiSqCO4GH0fsYro1y1ZArxWumMeA3897VuCuU24S lGnQ6QqMAUyuwmnOi71g1HQtOuR3gFGmnzQ8HYWaBg== X-Google-Smtp-Source: ABdhPJy7cwSe5tXiotUnnPaRkx7qbi3GVr6bv1e2irMuDouurByoc6wolhdgoX74dhfIbfDHQbw1jsYmAZoksddQCMM= X-Received: by 2002:ab0:6785:: with SMTP id v5mr1141648uar.72.1612951958028; Wed, 10 Feb 2021 02:12:38 -0800 (PST) MIME-Version: 1.0 References: <20210124232007.21639-1-richard@nod.at> <563952295.378372.1612881357746.JavaMail.zimbra@nod.at> <1923896038.379134.1612901174023.JavaMail.zimbra@nod.at> In-Reply-To: <1923896038.379134.1612901174023.JavaMail.zimbra@nod.at> From: Miklos Szeredi Date: Wed, 10 Feb 2021 11:12:26 +0100 Message-ID: Subject: Re: [PATCH 0/8] MUSE: Userspace backed MTD v3 To: Richard Weinberger Cc: Miquel Raynal , Vignesh Raghavendra , Boris Brezillon , Ron Minnich , sven , linux-kernel , linux-mtd , fuse-devel Content-Type: multipart/mixed; boundary="0000000000008000b405baf8a456" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0000000000008000b405baf8a456 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 9, 2021 at 9:06 PM Richard Weinberger wrote: > > Miklos, > > ----- Urspr=C3=BCngliche Mail ----- > >> I do wonder if MUSE should go to drivers/mtd/ instead. Long term > >> goal would be move CUSE to drivers/char and move the transport part of > >> fuse into net/fuse leaving only the actual filesystems (fuse and > >> virtiofs) under fs/. > >> > >> But for now just moving the minimal interface needed for MUSE into a > >> separate header () would work, I guess. > >> > >> Do you think that would make sense? > > > > Yes, I'm all for having MUSE in drivers/mtd/. > > > > I placed MUSE initially in fs/fuse/ because CUSE was already there and = muse.c > > includes > > fuse_i.h. So tried to be as little invasive as possible. > > I did a quick patch series which moves CUSE into drivers/char/ > > https://git.kernel.org/pub/scm/linux/kernel/git/rw/misc.git/log/?h=3Dfs_f= use_split > > Does this more or less what you had in mind? Just moving the whole internal header file is not nice. I did a mechanical public/private separation of the interface based on what CUSE uses. Incremental patch attached. But this is just a start. From the big structures still left in CUSE only uses the following fields: fc: .minor, max_read, max_write, rcu, release, initialized, num_waiting fm: .fc ff: .fm fud: .fc Dealing with the last 3 is trivial: create and alloc function for the fm, and create accessor functions for the accessed fields. Dealing with fc properly is probably a bit more involved, but does not seem to be too compex at first glance. Do you want to take a stab at cleaning this up further? Thanks, Miklos --0000000000008000b405baf8a456 Content-Type: text/x-patch; charset="US-ASCII"; name="fuse-interface-cleanup.patch" Content-Disposition: attachment; filename="fuse-interface-cleanup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kkz9w9w30 Y29tbWl0IDZiYzM4Zjc1NTBjY2M4YzE4MTk0ZWU0MjE5NGUzMzRjNTM4OTBhZmMKQXV0aG9yOiBN aWtsb3MgU3plcmVkaSA8bXN6ZXJlZGlAcmVkaGF0LmNvbT4KRGF0ZTogICBXZWQgRmViIDEwIDEw OjU5OjQwIDIwMjEgKzAxMDAKCiAgICBzZXBhcmF0ZSBmdXNlX2kuaCBmcm9tIDxuZXQvZnVzZS5o PgoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9jdXNlLmMgYi9kcml2ZXJzL2NoYXIvY3VzZS5j CmluZGV4IDAyZTM4MmI5ODYzYi4uYzMyOWRlMjAxODBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2No YXIvY3VzZS5jCisrKyBiL2RyaXZlcnMvY2hhci9jdXNlLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNk ZWZpbmUgcHJfZm10KGZtdCkgIkNVU0U6ICIgZm10CiAKICNpbmNsdWRlIDxsaW51eC9mdXNlLmg+ CisjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+CiAjaW5jbHVk ZSA8bGludXgvZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPgpkaWZmIC0tZ2l0IGEv ZnMvZnVzZS9hY2wuYyBiL2ZzL2Z1c2UvYWNsLmMKaW5kZXggMDA4MjQxYzRjNDAzLi5mNTI5MDc1 YTJjZTggMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvYWNsLmMKKysrIGIvZnMvZnVzZS9hY2wuYwpAQCAt NiwxMSArNiwxMSBAQAogICogU2VlIHRoZSBmaWxlIENPUFlJTkcuCiAgKi8KIAorI2luY2x1ZGUg ImZ1c2VfaS5oIgorCiAjaW5jbHVkZSA8bGludXgvcG9zaXhfYWNsLmg+CiAjaW5jbHVkZSA8bGlu dXgvcG9zaXhfYWNsX3hhdHRyLmg+CiAKLSNpbmNsdWRlIDxuZXQvZnVzZS5oPgotCiBzdHJ1Y3Qg cG9zaXhfYWNsICpmdXNlX2dldF9hY2woc3RydWN0IGlub2RlICppbm9kZSwgaW50IHR5cGUpCiB7 CiAJc3RydWN0IGZ1c2VfY29ubiAqZmMgPSBnZXRfZnVzZV9jb25uKGlub2RlKTsKZGlmZiAtLWdp dCBhL2ZzL2Z1c2UvY29udHJvbC5jIGIvZnMvZnVzZS9jb250cm9sLmMKaW5kZXggMzlkNzFlZjA3 NmRjLi5jYzdlOTRkNzNjNmMgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvY29udHJvbC5jCisrKyBiL2Zz L2Z1c2UvY29udHJvbC5jCkBAIC02LDEyICs2LDEyIEBACiAgIFNlZSB0aGUgZmlsZSBDT1BZSU5H LgogKi8KIAorI2luY2x1ZGUgImZ1c2VfaS5oIgorCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgog I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2ZzX2NvbnRleHQuaD4K IAotI2luY2x1ZGUgPG5ldC9mdXNlLmg+Ci0KICNkZWZpbmUgRlVTRV9DVExfU1VQRVJfTUFHSUMg MHg2NTczNTU0MwogCiAvKgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kYXguYyBiL2ZzL2Z1c2UvZGF4 LmMKaW5kZXggZDIyMmJlZjZlNjIyLi5mZjk5YWIyYTNjNDMgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2Uv ZGF4LmMKKysrIGIvZnMvZnVzZS9kYXguYwpAQCAtNCw2ICs0LDggQEAKICAqIENvcHlyaWdodCAo QykgMjAyMCBSZWQgSGF0LCBJbmMuCiAgKi8KIAorI2luY2x1ZGUgImZ1c2VfaS5oIgorCiAjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9kYXguaD4KICNpbmNsdWRlIDxs aW51eC91aW8uaD4KQEAgLTExLDggKzEzLDYgQEAKICNpbmNsdWRlIDxsaW51eC9pb21hcC5oPgog I2luY2x1ZGUgPGxpbnV4L2ludGVydmFsX3RyZWUuaD4KIAotI2luY2x1ZGUgPG5ldC9mdXNlLmg+ Ci0KIC8qCiAgKiBEZWZhdWx0IG1lbW9yeSByYW5nZSBzaXplLiAgQSBwb3dlciBvZiAyIHNvIGl0 IGFncmVlcyB3aXRoIGNvbW1vbiBGVVNFX0lOSVQKICAqIG1hcF9hbGlnbm1lbnQgdmFsdWVzIDRL QiBhbmQgNjRLQi4KZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jCmlu ZGV4IGYyZTg3YmFhMmY1OS4uNTg4ZjhkMTI0MGFhIDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rldi5j CisrKyBiL2ZzL2Z1c2UvZGV2LmMKQEAgLTYsNiArNiw4IEBACiAgIFNlZSB0aGUgZmlsZSBDT1BZ SU5HLgogKi8KIAorI2luY2x1ZGUgImZ1c2VfaS5oIgorCiAjaW5jbHVkZSA8bGludXgvaW5pdC5o PgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KQEAg LTIwLDggKzIyLDYgQEAKICNpbmNsdWRlIDxsaW51eC9zcGxpY2UuaD4KICNpbmNsdWRlIDxsaW51 eC9zY2hlZC5oPgogCi0jaW5jbHVkZSA8bmV0L2Z1c2UuaD4KLQogTU9EVUxFX0FMSUFTX01JU0NE RVYoRlVTRV9NSU5PUik7CiBNT0RVTEVfQUxJQVMoImRldm5hbWU6ZnVzZSIpOwogCmRpZmYgLS1n aXQgYS9mcy9mdXNlL2Rpci5jIGIvZnMvZnVzZS9kaXIuYwppbmRleCA5MjRjNDczYTU3N2IuLjc4 ZjlmMjA5MDc4YyAxMDA2NDQKLS0tIGEvZnMvZnVzZS9kaXIuYworKysgYi9mcy9mdXNlL2Rpci5j CkBAIC02LDYgKzYsOCBAQAogICBTZWUgdGhlIGZpbGUgQ09QWUlORy4KICovCiAKKyNpbmNsdWRl ICJmdXNlX2kuaCIKKwogI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxsaW51 eC9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgvZnNfY29udGV4dC5oPgpAQCAtMTYsOCArMTgsNiBA QAogI2luY2x1ZGUgPGxpbnV4L2l2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8bGludXgvcG9zaXhfYWNs Lmg+CiAKLSNpbmNsdWRlIDxuZXQvZnVzZS5oPgotCiBzdGF0aWMgdm9pZCBmdXNlX2FkdmlzZV91 c2VfcmVhZGRpcnBsdXMoc3RydWN0IGlub2RlICpkaXIpCiB7CiAJc3RydWN0IGZ1c2VfaW5vZGUg KmZpID0gZ2V0X2Z1c2VfaW5vZGUoZGlyKTsKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZmlsZS5jIGIv ZnMvZnVzZS9maWxlLmMKaW5kZXggY2E0OWY4NmZiMjJkLi44Y2NjZWNiNTVmYjggMTAwNjQ0Ci0t LSBhL2ZzL2Z1c2UvZmlsZS5jCisrKyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC02LDYgKzYsOCBAQAog ICBTZWUgdGhlIGZpbGUgQ09QWUlORy4KICovCiAKKyNpbmNsdWRlICJmdXNlX2kuaCIKKwogI2lu Y2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+CkBAIC0xOCw4ICsyMCw2IEBACiAjaW5jbHVkZSA8bGludXgvdWlv Lmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4KIAotI2luY2x1ZGUgPG5ldC9mdXNlLmg+Ci0KIHN0 YXRpYyBzdHJ1Y3QgcGFnZSAqKmZ1c2VfcGFnZXNfYWxsb2ModW5zaWduZWQgaW50IG5wYWdlcywg Z2ZwX3QgZmxhZ3MsCiAJCQkJICAgICAgc3RydWN0IGZ1c2VfcGFnZV9kZXNjICoqZGVzYykKIHsK ZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9pLmggYi9mcy9mdXNlL2Z1c2VfaS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZThkODc3ZGU2ZGFlCi0tLSAvZGV2L251 bGwKKysrIGIvZnMvZnVzZS9mdXNlX2kuaApAQCAtMCwwICsxLDY1NyBAQAorLyoKKyAgRlVTRTog RmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UKKyAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDggIE1pa2xv cyBTemVyZWRpIDxtaWtsb3NAc3plcmVkaS5odT4KKworICBUaGlzIHByb2dyYW0gY2FuIGJlIGRp c3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTC4KKyAgU2VlIHRoZSBmaWxl IENPUFlJTkcuCisqLworCisjaWZuZGVmIF9GU19GVVNFX0lfSAorI2RlZmluZSBfRlNfRlVTRV9J X0gKKworI2lmbmRlZiBwcl9mbXQKKyMgZGVmaW5lIHByX2ZtdChmbXQpICJmdXNlOiAiIGZtdAor I2VuZGlmCisKKyNpbmNsdWRlIDxuZXQvZnVzZS5oPgorCisjaW5jbHVkZSA8bGludXgvZnMuaD4K KyNpbmNsdWRlIDxsaW51eC9tb3VudC5oPgorI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KKyNpbmNs dWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRl IDxsaW51eC9iYWNraW5nLWRldi5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVk ZSA8bGludXgvcndzZW0uaD4KKyNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KKyNpbmNsdWRlIDxs aW51eC93b3JrcXVldWUuaD4KKyNpbmNsdWRlIDxsaW51eC94YXR0ci5oPgorI2luY2x1ZGUgPGxp bnV4L3BpZF9uYW1lc3BhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPgorI2luY2x1 ZGUgPGxpbnV4L3VzZXJfbmFtZXNwYWNlLmg+CisKKy8qKiBEZWZhdWx0IG1heCBudW1iZXIgb2Yg cGFnZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIHNpbmdsZSByZWFkIHJlcXVlc3QgKi8KKyNkZWZp bmUgRlVTRV9ERUZBVUxUX01BWF9QQUdFU19QRVJfUkVRIDMyCisKKy8qKiBNYXhpbXVtIG9mIG1h eF9wYWdlcyByZWNlaXZlZCBpbiBpbml0X291dCAqLworI2RlZmluZSBGVVNFX01BWF9NQVhfUEFH RVMgMjU2CisKKy8qKiBCaWFzIGZvciBmaS0+d3JpdGVjdHIsIG1lYW5pbmcgbmV3IHdyaXRlcGFn ZXMgbXVzdCBub3QgYmUgc2VudCAqLworI2RlZmluZSBGVVNFX05PV1JJVEUgSU5UX01JTgorCisv KiogSXQgY291bGQgYmUgYXMgbGFyZ2UgYXMgUEFUSF9NQVgsIGJ1dCB3b3VsZCB0aGF0IGhhdmUg YW55IHVzZXM/ICovCisjZGVmaW5lIEZVU0VfTkFNRV9NQVggMTAyNAorCisvKiogTGlzdCBvZiBh Y3RpdmUgY29ubmVjdGlvbnMgKi8KK2V4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZ1c2VfY29ubl9s aXN0OworCisvKiogR2xvYmFsIG11dGV4IHByb3RlY3RpbmcgZnVzZV9jb25uX2xpc3QgYW5kIHRo ZSBjb250cm9sIGZpbGVzeXN0ZW0gKi8KK2V4dGVybiBzdHJ1Y3QgbXV0ZXggZnVzZV9tdXRleDsK KworLyoqIE1vZHVsZSBwYXJhbWV0ZXJzICovCitleHRlcm4gdW5zaWduZWQgbWF4X3VzZXJfYmdy ZXE7CitleHRlcm4gdW5zaWduZWQgbWF4X3VzZXJfY29uZ3RocmVzaDsKKworLyoqIEZVU0UgaW5v ZGUgKi8KK3N0cnVjdCBmdXNlX2lub2RlIHsKKwkvKiogSW5vZGUgZGF0YSAqLworCXN0cnVjdCBp bm9kZSBpbm9kZTsKKworCS8qKiBVbmlxdWUgSUQsIHdoaWNoIGlkZW50aWZpZXMgdGhlIGlub2Rl IGJldHdlZW4gdXNlcnNwYWNlCisJICogYW5kIGtlcm5lbCAqLworCXU2NCBub2RlaWQ7CisKKwkv KiogTnVtYmVyIG9mIGxvb2t1cHMgb24gdGhpcyBpbm9kZSAqLworCXU2NCBubG9va3VwOworCisJ LyoqIFRoZSByZXF1ZXN0IHVzZWQgZm9yIHNlbmRpbmcgdGhlIEZPUkdFVCBtZXNzYWdlICovCisJ c3RydWN0IGZ1c2VfZm9yZ2V0X2xpbmsgKmZvcmdldDsKKworCS8qKiBUaW1lIGluIGppZmZpZXMg dW50aWwgdGhlIGZpbGUgYXR0cmlidXRlcyBhcmUgdmFsaWQgKi8KKwl1NjQgaV90aW1lOworCisJ LyogV2hpY2ggYXR0cmlidXRlcyBhcmUgaW52YWxpZCAqLworCXUzMiBpbnZhbF9tYXNrOworCisJ LyoqIFRoZSBzdGlja3kgYml0IGluIGlub2RlLT5pX21vZGUgbWF5IGhhdmUgYmVlbiByZW1vdmVk LCBzbworCSAgICBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgbW9kZSAqLworCXVtb2RlX3Qgb3JpZ19p X21vZGU7CisKKwkvKiogNjQgYml0IGlub2RlIG51bWJlciAqLworCXU2NCBvcmlnX2lubzsKKwor CS8qKiBWZXJzaW9uIG9mIGxhc3QgYXR0cmlidXRlIGNoYW5nZSAqLworCXU2NCBhdHRyX3ZlcnNp b247CisKKwl1bmlvbiB7CisJCS8qIFdyaXRlIHJlbGF0ZWQgZmllbGRzIChyZWd1bGFyIGZpbGUg b25seSkgKi8KKwkJc3RydWN0IHsKKwkJCS8qIEZpbGVzIHVzYWJsZSBpbiB3cml0ZXBhZ2UuICBQ cm90ZWN0ZWQgYnkgZmktPmxvY2sgKi8KKwkJCXN0cnVjdCBsaXN0X2hlYWQgd3JpdGVfZmlsZXM7 CisKKwkJCS8qIFdyaXRlcGFnZXMgcGVuZGluZyBvbiB0cnVuY2F0ZSBvciBmc3luYyAqLworCQkJ c3RydWN0IGxpc3RfaGVhZCBxdWV1ZWRfd3JpdGVzOworCisJCQkvKiBOdW1iZXIgb2Ygc2VudCB3 cml0ZXMsIGEgbmVnYXRpdmUgYmlhcworCQkJICogKEZVU0VfTk9XUklURSkgbWVhbnMgbW9yZSB3 cml0ZXMgYXJlIGJsb2NrZWQgKi8KKwkJCWludCB3cml0ZWN0cjsKKworCQkJLyogV2FpdHEgZm9y IHdyaXRlcGFnZSBjb21wbGV0aW9uICovCisJCQl3YWl0X3F1ZXVlX2hlYWRfdCBwYWdlX3dhaXRx OworCisJCQkvKiBMaXN0IG9mIHdyaXRlcGFnZSByZXF1ZXN0c3QgKHBlbmRpbmcgb3Igc2VudCkg Ki8KKwkJCXN0cnVjdCByYl9yb290IHdyaXRlcGFnZXM7CisJCX07CisKKwkJLyogcmVhZGRpciBj YWNoZSAoZGlyZWN0b3J5IG9ubHkpICovCisJCXN0cnVjdCB7CisJCQkvKiB0cnVlIGlmIGZ1bGx5 IGNhY2hlZCAqLworCQkJYm9vbCBjYWNoZWQ7CisKKwkJCS8qIHNpemUgb2YgY2FjaGUgKi8KKwkJ CWxvZmZfdCBzaXplOworCisJCQkvKiBwb3NpdGlvbiBhdCBlbmQgb2YgY2FjaGUgKHBvc2l0aW9u IG9mIG5leHQgZW50cnkpICovCisJCQlsb2ZmX3QgcG9zOworCisJCQkvKiB2ZXJzaW9uIG9mIHRo ZSBjYWNoZSAqLworCQkJdTY0IHZlcnNpb247CisKKwkJCS8qIG1vZGlmaWNhdGlvbiB0aW1lIG9m IGRpcmVjdG9yeSB3aGVuIGNhY2hlIHdhcworCQkJICogc3RhcnRlZCAqLworCQkJc3RydWN0IHRp bWVzcGVjNjQgbXRpbWU7CisKKwkJCS8qIGl2ZXJzaW9uIG9mIGRpcmVjdG9yeSB3aGVuIGNhY2hl IHdhcyBzdGFydGVkICovCisJCQl1NjQgaXZlcnNpb247CisKKwkJCS8qIHByb3RlY3RzIGFib3Zl IGZpZWxkcyAqLworCQkJc3BpbmxvY2tfdCBsb2NrOworCQl9IHJkYzsKKwl9OworCisJLyoqIE1p c2NlbGxhbmVvdXMgYml0cyBkZXNjcmliaW5nIGlub2RlIHN0YXRlICovCisJdW5zaWduZWQgbG9u ZyBzdGF0ZTsKKworCS8qKiBMb2NrIGZvciBzZXJpYWxpemluZyBsb29rdXAgYW5kIHJlYWRkaXIg Zm9yIGJhY2sgY29tcGF0aWJpbGl0eSovCisJc3RydWN0IG11dGV4IG11dGV4OworCisJLyoqIExv Y2sgdG8gcHJvdGVjdCB3cml0ZSByZWxhdGVkIGZpZWxkcyAqLworCXNwaW5sb2NrX3QgbG9jazsK KworCS8qKgorCSAqIENhbid0IHRha2UgaW5vZGUgbG9jayBpbiBmYXVsdCBwYXRoIChsZWFkcyB0 byBjaXJjdWxhciBkZXBlbmRlbmN5KS4KKwkgKiBJbnRyb2R1Y2UgYW5vdGhlciBzZW1hcGhvcmUg d2hpY2ggY2FuIGJlIHRha2VuIGluIGZhdWx0IHBhdGggYW5kCisJICogdGhlbiBvdGhlciBmaWxl c3lzdGVtIHBhdGhzIGNhbiB0YWtlIHRoaXMgdG8gYmxvY2sgZmF1bHRzLgorCSAqLworCXN0cnVj dCByd19zZW1hcGhvcmUgaV9tbWFwX3NlbTsKKworI2lmZGVmIENPTkZJR19GVVNFX0RBWAorCS8q CisJICogRGF4IHNwZWNpZmljIGlub2RlIGRhdGEKKwkgKi8KKwlzdHJ1Y3QgZnVzZV9pbm9kZV9k YXggKmRheDsKKyNlbmRpZgorfTsKKworLyoqIEZVU0UgaW5vZGUgc3RhdGUgYml0cyAqLworZW51 bSB7CisJLyoqIEFkdmlzZSByZWFkZGlycGx1cyAgKi8KKwlGVVNFX0lfQURWSVNFX1JEUExVUywK KwkvKiogSW5pdGlhbGl6ZWQgd2l0aCByZWFkZGlycGx1cyAqLworCUZVU0VfSV9JTklUX1JEUExV UywKKwkvKiogQW4gb3BlcmF0aW9uIGNoYW5naW5nIGZpbGUgc2l6ZSBpcyBpbiBwcm9ncmVzcyAg Ki8KKwlGVVNFX0lfU0laRV9VTlNUQUJMRSwKKwkvKiBCYWQgaW5vZGUgKi8KKwlGVVNFX0lfQkFE LAorfTsKKworLyoqCisgKiBSZXF1ZXN0IGZsYWdzCisgKgorICogRlJfSVNSRVBMWToJCXNldCBp ZiB0aGUgcmVxdWVzdCBoYXMgcmVwbHkKKyAqIEZSX0ZPUkNFOgkJZm9yY2Ugc2VuZGluZyBvZiB0 aGUgcmVxdWVzdCBldmVuIGlmIGludGVycnVwdGVkCisgKiBGUl9CQUNLR1JPVU5EOglyZXF1ZXN0 IGlzIHNlbnQgaW4gdGhlIGJhY2tncm91bmQKKyAqIEZSX1dBSVRJTkc6CQlyZXF1ZXN0IGlzIGNv dW50ZWQgYXMgIndhaXRpbmciCisgKiBGUl9BQk9SVEVEOgkJdGhlIHJlcXVlc3Qgd2FzIGFib3J0 ZWQKKyAqIEZSX0lOVEVSUlVQVEVEOgl0aGUgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcnJ1cHRlZAor ICogRlJfTE9DS0VEOgkJZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8vZnJvbSB0aGUgcmVxdWVzdAor ICogRlJfUEVORElORzoJCXJlcXVlc3QgaXMgbm90IHlldCBpbiB1c2Vyc3BhY2UKKyAqIEZSX1NF TlQ6CQlyZXF1ZXN0IGlzIGluIHVzZXJzcGFjZSwgd2FpdGluZyBmb3IgYW4gYW5zd2VyCisgKiBG Ul9GSU5JU0hFRDoJCXJlcXVlc3QgaXMgZmluaXNoZWQKKyAqIEZSX1BSSVZBVEU6CQlyZXF1ZXN0 IGlzIG9uIHByaXZhdGUgbGlzdAorICogRlJfQVNZTkM6CQlyZXF1ZXN0IGlzIGFzeW5jaHJvbm91 cworICovCitlbnVtIGZ1c2VfcmVxX2ZsYWcgeworCUZSX0lTUkVQTFksCisJRlJfRk9SQ0UsCisJ RlJfQkFDS0dST1VORCwKKwlGUl9XQUlUSU5HLAorCUZSX0FCT1JURUQsCisJRlJfSU5URVJSVVBU RUQsCisJRlJfTE9DS0VELAorCUZSX1BFTkRJTkcsCisJRlJfU0VOVCwKKwlGUl9GSU5JU0hFRCwK KwlGUl9QUklWQVRFLAorCUZSX0FTWU5DLAorfTsKKworLyoqCisgKiBBIHJlcXVlc3QgdG8gdGhl IGNsaWVudAorICoKKyAqIC53YWl0cS5sb2NrIHByb3RlY3RzIHRoZSBmb2xsb3dpbmcgZmllbGRz OgorICogICAtIEZSX0FCT1JURUQKKyAqICAgLSBGUl9MT0NLRUQgKG1heSBhbHNvIGJlIG1vZGlm aWVkIHVuZGVyIGZjLT5sb2NrLCB0ZXN0ZWQgdW5kZXIgYm90aCkKKyAqLworc3RydWN0IGZ1c2Vf cmVxIHsKKwkvKiogVGhpcyBjYW4gYmUgb24gZWl0aGVyIHBlbmRpbmcgcHJvY2Vzc2luZyBvciBp byBsaXN0cyBpbgorCSAgICBmdXNlX2Nvbm4gKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisK KwkvKiogRW50cnkgb24gdGhlIGludGVycnVwdHMgbGlzdCAgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFk IGludHJfZW50cnk7CisKKwkvKiBJbnB1dC9vdXRwdXQgYXJndW1lbnRzICovCisJc3RydWN0IGZ1 c2VfYXJncyAqYXJnczsKKworCS8qKiByZWZjb3VudCAqLworCXJlZmNvdW50X3QgY291bnQ7CisK KwkvKiBSZXF1ZXN0IGZsYWdzLCB1cGRhdGVkIHdpdGggdGVzdC9zZXQvY2xlYXJfYml0KCkgKi8K Kwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJLyogVGhlIHJlcXVlc3QgaW5wdXQgaGVhZGVyICov CisJc3RydWN0IHsKKwkJc3RydWN0IGZ1c2VfaW5faGVhZGVyIGg7CisJfSBpbjsKKworCS8qIFRo ZSByZXF1ZXN0IG91dHB1dCBoZWFkZXIgKi8KKwlzdHJ1Y3QgeworCQlzdHJ1Y3QgZnVzZV9vdXRf aGVhZGVyIGg7CisJfSBvdXQ7CisKKwkvKiogVXNlZCB0byB3YWtlIHVwIHRoZSB0YXNrIHdhaXRp bmcgZm9yIGNvbXBsZXRpb24gb2YgcmVxdWVzdCovCisJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdHE7 CisKKyNpZiBJU19FTkFCTEVEKENPTkZJR19WSVJUSU9fRlMpCisJLyoqIHZpcnRpby1mcydzIHBo eXNpY2FsbHkgY29udGlndW91cyBidWZmZXIgZm9yIGluIGFuZCBvdXQgYXJncyAqLworCXZvaWQg KmFyZ2J1ZjsKKyNlbmRpZgorCisJLyoqIGZ1c2VfbW91bnQgdGhpcyByZXF1ZXN0IGJlbG9uZ3Mg dG8gKi8KKwlzdHJ1Y3QgZnVzZV9tb3VudCAqZm07Cit9OworCitzdHJ1Y3QgZnVzZV9pcXVldWU7 CisKKy8qKgorICogSW5wdXQgcXVldWUgY2FsbGJhY2tzCisgKgorICogSW5wdXQgcXVldWUgc2ln bmFsbGluZyBpcyBkZXZpY2Utc3BlY2lmaWMuICBGb3IgZXhhbXBsZSwgdGhlIC9kZXYvZnVzZSBm aWxlCisgKiB1c2VzIGZpcS0+d2FpdHEgYW5kIGZhc3luYyB0byB3YWtlIHByb2Nlc3NlcyB0aGF0 IGFyZSB3YWl0aW5nIG9uIHF1ZXVlCisgKiByZWFkaW5lc3MuICBUaGVzZSBjYWxsYmFja3MgYWxs b3cgb3RoZXIgZGV2aWNlIHR5cGVzIHRvIHJlc3BvbmQgdG8gaW5wdXQKKyAqIHF1ZXVlIGFjdGl2 aXR5LgorICovCitzdHJ1Y3QgZnVzZV9pcXVldWVfb3BzIHsKKwkvKioKKwkgKiBTaWduYWwgdGhh dCBhIGZvcmdldCBoYXMgYmVlbiBxdWV1ZWQKKwkgKi8KKwl2b2lkICgqd2FrZV9mb3JnZXRfYW5k X3VubG9jaykoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEpCisJCV9fcmVsZWFzZXMoZmlxLT5sb2Nr KTsKKworCS8qKgorCSAqIFNpZ25hbCB0aGF0IGFuIElOVEVSUlVQVCByZXF1ZXN0IGhhcyBiZWVu IHF1ZXVlZAorCSAqLworCXZvaWQgKCp3YWtlX2ludGVycnVwdF9hbmRfdW5sb2NrKShzdHJ1Y3Qg ZnVzZV9pcXVldWUgKmZpcSkKKwkJX19yZWxlYXNlcyhmaXEtPmxvY2spOworCisJLyoqCisJICog U2lnbmFsIHRoYXQgYSByZXF1ZXN0IGhhcyBiZWVuIHF1ZXVlZAorCSAqLworCXZvaWQgKCp3YWtl X3BlbmRpbmdfYW5kX3VubG9jaykoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEpCisJCV9fcmVsZWFz ZXMoZmlxLT5sb2NrKTsKKworCS8qKgorCSAqIENsZWFuIHVwIHdoZW4gZnVzZV9pcXVldWUgaXMg ZGVzdHJveWVkCisJICovCisJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlx KTsKK307CisKKyNkZWZpbmUgRlVTRV9QUV9IQVNIX0JJVFMgOAorI2RlZmluZSBGVVNFX1BRX0hB U0hfU0laRSAoMSA8PCBGVVNFX1BRX0hBU0hfQklUUykKKworc3RydWN0IGZ1c2VfZnNfY29udGV4 dCB7CisJaW50IGZkOworCXVuc2lnbmVkIGludCByb290bW9kZTsKKwlrdWlkX3QgdXNlcl9pZDsK KwlrZ2lkX3QgZ3JvdXBfaWQ7CisJYm9vbCBpc19iZGV2OjE7CisJYm9vbCBmZF9wcmVzZW50OjE7 CisJYm9vbCByb290bW9kZV9wcmVzZW50OjE7CisJYm9vbCB1c2VyX2lkX3ByZXNlbnQ6MTsKKwli b29sIGdyb3VwX2lkX3ByZXNlbnQ6MTsKKwlib29sIGRlZmF1bHRfcGVybWlzc2lvbnM6MTsKKwli b29sIGFsbG93X290aGVyOjE7CisJYm9vbCBkZXN0cm95OjE7CisJYm9vbCBub19jb250cm9sOjE7 CisJYm9vbCBub19mb3JjZV91bW91bnQ6MTsKKwlib29sIGxlZ2FjeV9vcHRzX3Nob3c6MTsKKwli b29sIGRheDoxOworCXVuc2lnbmVkIGludCBtYXhfcmVhZDsKKwl1bnNpZ25lZCBpbnQgYmxrc2l6 ZTsKKwljb25zdCBjaGFyICpzdWJ0eXBlOworCisJLyogREFYIGRldmljZSwgbWF5IGJlIE5VTEwg Ki8KKwlzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2RldjsKKworCS8qIGZ1c2VfZGV2IHBvaW50ZXIg dG8gZmlsbCBpbiwgc2hvdWxkIGNvbnRhaW4gTlVMTCBvbiBlbnRyeSAqLworCXZvaWQgKipmdWRw dHI7Cit9OworCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfbW91bnQgKmdldF9mdXNlX21v dW50X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCit7CisJcmV0dXJuIHNiLT5zX2ZzX2lu Zm87Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY29ubiAqZ2V0X2Z1c2VfY29ubl9z dXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQoreworCXJldHVybiBnZXRfZnVzZV9tb3VudF9z dXBlcihzYiktPmZjOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX21vdW50ICpnZXRf ZnVzZV9tb3VudChzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXJldHVybiBnZXRfZnVzZV9tb3Vu dF9zdXBlcihpbm9kZS0+aV9zYik7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY29u biAqZ2V0X2Z1c2VfY29ubihzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXJldHVybiBnZXRfZnVz ZV9tb3VudF9zdXBlcihpbm9kZS0+aV9zYiktPmZjOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVj dCBmdXNlX2lub2RlICpnZXRfZnVzZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXJl dHVybiBjb250YWluZXJfb2YoaW5vZGUsIHN0cnVjdCBmdXNlX2lub2RlLCBpbm9kZSk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdTY0IGdldF9ub2RlX2lkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCit7CisJ cmV0dXJuIGdldF9mdXNlX2lub2RlKGlub2RlKS0+bm9kZWlkOworfQorCitzdGF0aWMgaW5saW5l IGludCBpbnZhbGlkX25vZGVpZCh1NjQgbm9kZWlkKQoreworCXJldHVybiAhbm9kZWlkIHx8IG5v ZGVpZCA9PSBGVVNFX1JPT1RfSUQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0IGZ1c2VfZ2V0X2F0 dHJfdmVyc2lvbihzdHJ1Y3QgZnVzZV9jb25uICpmYykKK3sKKwlyZXR1cm4gYXRvbWljNjRfcmVh ZCgmZmMtPmF0dHJfdmVyc2lvbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmdXNlX21ha2Vf YmFkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCit7CisJc2V0X2JpdChGVVNFX0lfQkFELCAmZ2V0X2Z1 c2VfaW5vZGUoaW5vZGUpLT5zdGF0ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBmdXNlX2lz X2JhZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXJldHVybiB1bmxpa2VseSh0ZXN0X2JpdChG VVNFX0lfQkFELCAmZ2V0X2Z1c2VfaW5vZGUoaW5vZGUpLT5zdGF0ZSkpOworfQorCitleHRlcm4g Y29uc3Qgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIGZ1c2VfZGVudHJ5X29wZXJhdGlvbnM7Citl eHRlcm4gY29uc3Qgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIGZ1c2Vfcm9vdF9kZW50cnlfb3Bl cmF0aW9uczsKKworLyoqCisgKiBHZXQgYSBmaWxsZWQgaW4gaW5vZGUKKyAqLworc3RydWN0IGlu b2RlICpmdXNlX2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTY0IG5vZGVpZCwKKwkJCWlu dCBnZW5lcmF0aW9uLCBzdHJ1Y3QgZnVzZV9hdHRyICphdHRyLAorCQkJdTY0IGF0dHJfdmFsaWQs IHU2NCBhdHRyX3ZlcnNpb24pOworCitpbnQgZnVzZV9sb29rdXBfbmFtZShzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCB1NjQgbm9kZWlkLCBjb25zdCBzdHJ1Y3QgcXN0ciAqbmFtZSwKKwkJICAgICBz dHJ1Y3QgZnVzZV9lbnRyeV9vdXQgKm91dGFyZywgc3RydWN0IGlub2RlICoqaW5vZGUpOworCisv KioKKyAqIFNlbmQgRk9SR0VUIGNvbW1hbmQKKyAqLwordm9pZCBmdXNlX3F1ZXVlX2ZvcmdldChz dHJ1Y3QgZnVzZV9jb25uICpmYywgc3RydWN0IGZ1c2VfZm9yZ2V0X2xpbmsgKmZvcmdldCwKKwkJ ICAgICAgIHU2NCBub2RlaWQsIHU2NCBubG9va3VwKTsKKworc3RydWN0IGZ1c2VfZm9yZ2V0X2xp bmsgKmZ1c2VfYWxsb2NfZm9yZ2V0KHZvaWQpOworCitzdHJ1Y3QgZnVzZV9mb3JnZXRfbGluayAq ZnVzZV9kZXF1ZXVlX2ZvcmdldChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwKKwkJCQkJICAgICB1 bnNpZ25lZCBpbnQgbWF4LAorCQkJCQkgICAgIHVuc2lnbmVkIGludCAqY291bnRwKTsKKworLyoK KyAqIEluaXRpYWxpemUgUkVBRCBvciBSRUFERElSIHJlcXVlc3QKKyAqLworc3RydWN0IGZ1c2Vf aW9fYXJncyB7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJc3RydWN0IGZ1c2VfcmVhZF9pbiBp bjsKKwkJCXU2NCBhdHRyX3ZlcjsKKwkJfSByZWFkOworCQlzdHJ1Y3QgeworCQkJc3RydWN0IGZ1 c2Vfd3JpdGVfaW4gaW47CisJCQlzdHJ1Y3QgZnVzZV93cml0ZV9vdXQgb3V0OworCQl9IHdyaXRl OworCX07CisJc3RydWN0IGZ1c2VfYXJnc19wYWdlcyBhcDsKKwlzdHJ1Y3QgZnVzZV9pb19wcml2 ICppbzsKKwlzdHJ1Y3QgZnVzZV9maWxlICpmZjsKK307CisKK3ZvaWQgZnVzZV9yZWFkX2FyZ3Nf ZmlsbChzdHJ1Y3QgZnVzZV9pb19hcmdzICppYSwgc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBw b3MsCisJCQkgc2l6ZV90IGNvdW50LCBpbnQgb3Bjb2RlKTsKKworCisvKioKKyAqIFNlbmQgT1BF TiBvciBPUEVORElSIHJlcXVlc3QKKyAqLworaW50IGZ1c2Vfb3Blbl9jb21tb24oc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsIGJvb2wgaXNkaXIpOworCitzdHJ1Y3QgZnVz ZV9maWxlICpmdXNlX2ZpbGVfYWxsb2Moc3RydWN0IGZ1c2VfbW91bnQgKmZtKTsKK3ZvaWQgZnVz ZV9maWxlX2ZyZWUoc3RydWN0IGZ1c2VfZmlsZSAqZmYpOwordm9pZCBmdXNlX2ZpbmlzaF9vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKKworLyoqCisgKiBTZW5k IFJFTEVBU0Ugb3IgUkVMRUFTRURJUiByZXF1ZXN0CisgKi8KK3ZvaWQgZnVzZV9yZWxlYXNlX2Nv bW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgYm9vbCBpc2Rpcik7CisKKy8qKgorICogU2VuZCBGU1lO QyBvciBGU1lOQ0RJUiByZXF1ZXN0CisgKi8KK2ludCBmdXNlX2ZzeW5jX2NvbW1vbihzdHJ1Y3Qg ZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLAorCQkgICAgICBpbnQgZGF0YXN5 bmMsIGludCBvcGNvZGUpOworCisvKioKKyAqIE5vdGlmeSBwb2xsIHdha2V1cAorICovCitpbnQg ZnVzZV9ub3RpZnlfcG9sbF93YWtldXAoc3RydWN0IGZ1c2VfY29ubiAqZmMsCisJCQkgICAgc3Ry dWN0IGZ1c2Vfbm90aWZ5X3BvbGxfd2FrZXVwX291dCAqb3V0YXJnKTsKKworLyoqCisgKiBJbml0 aWFsaXplIGZpbGUgb3BlcmF0aW9ucyBvbiBhIHJlZ3VsYXIgZmlsZQorICovCit2b2lkIGZ1c2Vf aW5pdF9maWxlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworCisvKioKKyAqIEluaXRpYWxp emUgaW5vZGUgb3BlcmF0aW9ucyBvbiByZWd1bGFyIGZpbGVzIGFuZCBzcGVjaWFsIGZpbGVzCisg Ki8KK3ZvaWQgZnVzZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKKworLyoqCisg KiBJbml0aWFsaXplIGlub2RlIGFuZCBmaWxlIG9wZXJhdGlvbnMgb24gYSBkaXJlY3RvcnkKKyAq Lwordm9pZCBmdXNlX2luaXRfZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworCisvKioKKyAqIElu aXRpYWxpemUgaW5vZGUgb3BlcmF0aW9ucyBvbiBhIHN5bWxpbmsKKyAqLwordm9pZCBmdXNlX2lu aXRfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKKworLyoqCisgKiBDaGFuZ2UgYXR0cmli dXRlcyBvZiBhbiBpbm9kZQorICovCit2b2lkIGZ1c2VfY2hhbmdlX2F0dHJpYnV0ZXMoc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZ1c2VfYXR0ciAqYXR0ciwKKwkJCSAgICB1NjQgYXR0cl92 YWxpZCwgdTY0IGF0dHJfdmVyc2lvbik7CisKK3ZvaWQgZnVzZV9jaGFuZ2VfYXR0cmlidXRlc19j b21tb24oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZ1c2VfYXR0ciAqYXR0ciwKKwkJCQkg ICB1NjQgYXR0cl92YWxpZCk7CisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgY2xpZW50IGRldmlj ZQorICovCitpbnQgZnVzZV9kZXZfaW5pdCh2b2lkKTsKKworLyoqCisgKiBDbGVhbnVwIHRoZSBj bGllbnQgZGV2aWNlCisgKi8KK3ZvaWQgZnVzZV9kZXZfY2xlYW51cCh2b2lkKTsKKworaW50IGZ1 c2VfY3RsX2luaXQodm9pZCk7Cit2b2lkIF9fZXhpdCBmdXNlX2N0bF9jbGVhbnVwKHZvaWQpOwor CisvKioKKyAqIFNpbXBsZSByZXF1ZXN0IHNlbmRpbmcgdGhhdCBkb2VzIHJlcXVlc3QgYWxsb2Nh dGlvbiBhbmQgZnJlZWluZworICovCitzc2l6ZV90IGZ1c2Vfc2ltcGxlX3JlcXVlc3Qoc3RydWN0 IGZ1c2VfbW91bnQgKmZtLCBzdHJ1Y3QgZnVzZV9hcmdzICphcmdzKTsKKworLyoqCisgKiBFbmQg YSBmaW5pc2hlZCByZXF1ZXN0CisgKi8KK3ZvaWQgZnVzZV9yZXF1ZXN0X2VuZChzdHJ1Y3QgZnVz ZV9yZXEgKnJlcSk7CisKK3ZvaWQgZnVzZV93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY29ubiAq ZmMpOworCisvKioKKyAqIEludmFsaWRhdGUgaW5vZGUgYXR0cmlidXRlcworICovCit2b2lkIGZ1 c2VfaW52YWxpZGF0ZV9hdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworCit2b2lkIGZ1c2VfaW52 YWxpZGF0ZV9lbnRyeV9jYWNoZShzdHJ1Y3QgZGVudHJ5ICplbnRyeSk7CisKK3ZvaWQgZnVzZV9p bnZhbGlkYXRlX2F0aW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworCit1NjQgZW50cnlfYXR0cl90 aW1lb3V0KHN0cnVjdCBmdXNlX2VudHJ5X291dCAqbyk7Cit2b2lkIGZ1c2VfY2hhbmdlX2VudHJ5 X3RpbWVvdXQoc3RydWN0IGRlbnRyeSAqZW50cnksIHN0cnVjdCBmdXNlX2VudHJ5X291dCAqbyk7 CisKK3N0cnVjdCBmdXNlX2RldiAqZnVzZV9kZXZfYWxsb2Modm9pZCk7Cit2b2lkIGZ1c2VfZGV2 X2luc3RhbGwoc3RydWN0IGZ1c2VfZGV2ICpmdWQsIHN0cnVjdCBmdXNlX2Nvbm4gKmZjKTsKK3Zv aWQgZnVzZV9zZW5kX2luaXQoc3RydWN0IGZ1c2VfbW91bnQgKmZtKTsKKworLyoqCisgKiBGaWxs IGluIHN1cGVyYmxvY2sgYW5kIGluaXRpYWxpemUgZnVzZSBjb25uZWN0aW9uCisgKiBAc2I6IHBh cnRpYWxseS1pbml0aWFsaXplZCBzdXBlcmJsb2NrIHRvIGZpbGwgaW4KKyAqIEBjdHg6IG1vdW50 IGNvbnRleHQKKyAqLworaW50IGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgc3RydWN0IGZ1c2VfZnNfY29udGV4dCAqY3R4KTsKKworLyoKKyAqIEZpbGwgaW4g c3VwZXJibG9jayBmb3Igc3VibW91bnRzCisgKiBAc2I6IHBhcnRpYWxseS1pbml0aWFsaXplZCBz dXBlcmJsb2NrIHRvIGZpbGwgaW4KKyAqIEBwYXJlbnRfZmk6IFRoZSBmdXNlX2lub2RlIG9mIHRo ZSBwYXJlbnQgZmlsZXN5c3RlbSB3aGVyZSB0aGlzIHN1Ym1vdW50IGlzCisgKiAJICAgICAgIG1v dW50ZWQKKyAqLworaW50IGZ1c2VfZmlsbF9zdXBlcl9zdWJtb3VudChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLAorCQkJICAgICBzdHJ1Y3QgZnVzZV9pbm9kZSAqcGFyZW50X2ZpKTsKKworLyoKKyAq IFJlbW92ZSB0aGUgbW91bnQgZnJvbSB0aGUgY29ubmVjdGlvbgorICoKKyAqIFJldHVybnMgd2hl dGhlciB0aGlzIHdhcyB0aGUgbGFzdCBtb3VudAorICovCitib29sIGZ1c2VfbW91bnRfcmVtb3Zl KHN0cnVjdCBmdXNlX21vdW50ICpmbSk7CisKKy8qCisgKiBTaHV0IGRvd24gdGhlIGNvbm5lY3Rp b24gKHBvc3NpYmx5IHNlbmRpbmcgREVTVFJPWSByZXF1ZXN0KS4KKyAqLwordm9pZCBmdXNlX2Nv bm5fZGVzdHJveShzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pOworCisvKioKKyAqIEFkZCBjb25uZWN0 aW9uIHRvIGNvbnRyb2wgZmlsZXN5c3RlbQorICovCitpbnQgZnVzZV9jdGxfYWRkX2Nvbm4oc3Ry dWN0IGZ1c2VfY29ubiAqZmMpOworCisvKioKKyAqIFJlbW92ZSBjb25uZWN0aW9uIGZyb20gY29u dHJvbCBmaWxlc3lzdGVtCisgKi8KK3ZvaWQgZnVzZV9jdGxfcmVtb3ZlX2Nvbm4oc3RydWN0IGZ1 c2VfY29ubiAqZmMpOworCisvKioKKyAqIElzIGZpbGUgdHlwZSB2YWxpZD8KKyAqLworaW50IGZ1 c2VfdmFsaWRfdHlwZShpbnQgbSk7CisKK2Jvb2wgZnVzZV9pbnZhbGlkX2F0dHIoc3RydWN0IGZ1 c2VfYXR0ciAqYXR0cik7CisKKy8qKgorICogSXMgY3VycmVudCBwcm9jZXNzIGFsbG93ZWQgdG8g cGVyZm9ybSBmaWxlc3lzdGVtIG9wZXJhdGlvbj8KKyAqLworaW50IGZ1c2VfYWxsb3dfY3VycmVu dF9wcm9jZXNzKHN0cnVjdCBmdXNlX2Nvbm4gKmZjKTsKKwordTY0IGZ1c2VfbG9ja19vd25lcl9p ZChzdHJ1Y3QgZnVzZV9jb25uICpmYywgZmxfb3duZXJfdCBpZCk7CisKK3ZvaWQgZnVzZV91cGRh dGVfY3RpbWUoc3RydWN0IGlub2RlICppbm9kZSk7CisKK2ludCBmdXNlX3VwZGF0ZV9hdHRyaWJ1 dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKKwordm9pZCBmdXNl X2ZsdXNoX3dyaXRlcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSk7CisKK3ZvaWQgZnVzZV9zZXRf bm93cml0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKK3ZvaWQgZnVzZV9yZWxlYXNlX25vd3JpdGUo c3RydWN0IGlub2RlICppbm9kZSk7CisKKy8qKgorICogU2NhbiBhbGwgZnVzZV9tb3VudHMgYmVs b25naW5nIHRvIGZjIHRvIGZpbmQgdGhlIGZpcnN0IHdoZXJlCisgKiBpbG9va3VwNSgpIHJldHVy bnMgYSByZXN1bHQuICBSZXR1cm4gdGhhdCByZXN1bHQgYW5kIHRoZQorICogcmVzcGVjdGl2ZSBm dXNlX21vdW50IGluICpmbSAodW5sZXNzIGZtIGlzIE5VTEwpLgorICoKKyAqIFRoZSBjYWxsZXIg bXVzdCBob2xkIGZjLT5raWxsc2IuCisgKi8KK3N0cnVjdCBpbm9kZSAqZnVzZV9pbG9va3VwKHN0 cnVjdCBmdXNlX2Nvbm4gKmZjLCB1NjQgbm9kZWlkLAorCQkJICAgc3RydWN0IGZ1c2VfbW91bnQg KipmbSk7CisKKy8qKgorICogRmlsZS1zeXN0ZW0gdGVsbHMgdGhlIGtlcm5lbCB0byBpbnZhbGlk YXRlIGNhY2hlIGZvciB0aGUgZ2l2ZW4gbm9kZSBpZC4KKyAqLworaW50IGZ1c2VfcmV2ZXJzZV9p bnZhbF9pbm9kZShzdHJ1Y3QgZnVzZV9jb25uICpmYywgdTY0IG5vZGVpZCwKKwkJCSAgICAgbG9m Zl90IG9mZnNldCwgbG9mZl90IGxlbik7CisKKy8qKgorICogRmlsZS1zeXN0ZW0gdGVsbHMgdGhl IGtlcm5lbCB0byBpbnZhbGlkYXRlIHBhcmVudCBhdHRyaWJ1dGVzIGFuZAorICogdGhlIGRlbnRy eSBtYXRjaGluZyBwYXJlbnQvbmFtZS4KKyAqCisgKiBJZiB0aGUgY2hpbGRfbm9kZWlkIGlzIG5v bi16ZXJvIGFuZDoKKyAqICAgIC0gbWF0Y2hlcyB0aGUgaW5vZGUgbnVtYmVyIGZvciB0aGUgZGVu dHJ5IG1hdGNoaW5nIHBhcmVudC9uYW1lLAorICogICAgLSBpcyBub3QgYSBtb3VudCBwb2ludAor ICogICAgLSBpcyBhIGZpbGUgb3Igb2FuIGVtcHR5IGRpcmVjdG9yeQorICogdGhlbiB0aGUgZGVu dHJ5IGlzIHVuaGFzaGVkIChkX2RlbGV0ZSgpKS4KKyAqLworaW50IGZ1c2VfcmV2ZXJzZV9pbnZh bF9lbnRyeShzdHJ1Y3QgZnVzZV9jb25uICpmYywgdTY0IHBhcmVudF9ub2RlaWQsCisJCQkgICAg IHU2NCBjaGlsZF9ub2RlaWQsIHN0cnVjdCBxc3RyICpuYW1lKTsKKworbG9uZyBmdXNlX2lvY3Rs X2NvbW1vbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwKKwkJICAgICAgIHVu c2lnbmVkIGxvbmcgYXJnLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworCitib29sIGZ1c2Vfd3JpdGVf dXBkYXRlX3NpemUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHBvcyk7CisKK2ludCBmdXNl X2ZsdXNoX3RpbWVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmdXNlX2ZpbGUgKmZmKTsK K2ludCBmdXNlX3dyaXRlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB3cml0ZWJh Y2tfY29udHJvbCAqd2JjKTsKKworaW50IGZ1c2VfZG9fc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0ciwKKwkJICAgIHN0cnVjdCBmaWxlICpmaWxlKTsKKwor dm9pZCBmdXNlX3NldF9pbml0aWFsaXplZChzdHJ1Y3QgZnVzZV9jb25uICpmYyk7CisKK3ZvaWQg ZnVzZV91bmxvY2tfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgYm9vbCBsb2NrZWQpOworYm9v bCBmdXNlX2xvY2tfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CisKK2ludCBmdXNlX3NldHhh dHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKnZh bHVlLAorCQkgIHNpemVfdCBzaXplLCBpbnQgZmxhZ3MpOworc3NpemVfdCBmdXNlX2dldHhhdHRy KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnZhbHVlLAorCQkg ICAgICBzaXplX3Qgc2l6ZSk7Citzc2l6ZV90IGZ1c2VfbGlzdHhhdHRyKHN0cnVjdCBkZW50cnkg KmVudHJ5LCBjaGFyICpsaXN0LCBzaXplX3Qgc2l6ZSk7CitpbnQgZnVzZV9yZW1vdmV4YXR0cihz dHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiBjb25zdCBzdHJ1 Y3QgeGF0dHJfaGFuZGxlciAqZnVzZV94YXR0cl9oYW5kbGVyc1tdOworZXh0ZXJuIGNvbnN0IHN0 cnVjdCB4YXR0cl9oYW5kbGVyICpmdXNlX2FjbF94YXR0cl9oYW5kbGVyc1tdOworZXh0ZXJuIGNv bnN0IHN0cnVjdCB4YXR0cl9oYW5kbGVyICpmdXNlX25vX2FjbF94YXR0cl9oYW5kbGVyc1tdOwor CitzdHJ1Y3QgcG9zaXhfYWNsOworc3RydWN0IHBvc2l4X2FjbCAqZnVzZV9nZXRfYWNsKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCB0eXBlKTsKK2ludCBmdXNlX3NldF9hY2woc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IHBvc2l4X2FjbCAqYWNsLCBpbnQgdHlwZSk7CisKKworLyogcmVhZGRp ci5jICovCitpbnQgZnVzZV9yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2Nv bnRleHQgKmN0eCk7CisKKy8qKgorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gYW4g YXJndW1lbnRzIGxpc3QKKyAqLwordW5zaWduZWQgaW50IGZ1c2VfbGVuX2FyZ3ModW5zaWduZWQg aW50IG51bWFyZ3MsIHN0cnVjdCBmdXNlX2FyZyAqYXJncyk7CisKKy8qKgorICogR2V0IHRoZSBu ZXh0IHVuaXF1ZSBJRCBmb3IgYSByZXF1ZXN0CisgKi8KK3U2NCBmdXNlX2dldF91bmlxdWUoc3Ry dWN0IGZ1c2VfaXF1ZXVlICpmaXEpOwordm9pZCBmdXNlX2ZyZWVfY29ubihzdHJ1Y3QgZnVzZV9j b25uICpmYyk7CisKKy8qIGRheC5jICovCisKKyNkZWZpbmUgRlVTRV9JU19EQVgoaW5vZGUpIChJ U19FTkFCTEVEKENPTkZJR19GVVNFX0RBWCkgJiYgSVNfREFYKGlub2RlKSkKKworc3NpemVfdCBm dXNlX2RheF9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRv KTsKK3NzaXplX3QgZnVzZV9kYXhfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVj dCBpb3ZfaXRlciAqZnJvbSk7CitpbnQgZnVzZV9kYXhfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworaW50IGZ1c2VfZGF4X2JyZWFrX2xheW91dHMo c3RydWN0IGlub2RlICppbm9kZSwgdTY0IGRtYXBfc3RhcnQsIHU2NCBkbWFwX2VuZCk7CitpbnQg ZnVzZV9kYXhfY29ubl9hbGxvYyhzdHJ1Y3QgZnVzZV9jb25uICpmYywgc3RydWN0IGRheF9kZXZp Y2UgKmRheF9kZXYpOwordm9pZCBmdXNlX2RheF9jb25uX2ZyZWUoc3RydWN0IGZ1c2VfY29ubiAq ZmMpOworYm9vbCBmdXNlX2RheF9pbm9kZV9hbGxvYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBz dHJ1Y3QgZnVzZV9pbm9kZSAqZmkpOwordm9pZCBmdXNlX2RheF9pbm9kZV9pbml0KHN0cnVjdCBp bm9kZSAqaW5vZGUpOwordm9pZCBmdXNlX2RheF9pbm9kZV9jbGVhbnVwKHN0cnVjdCBpbm9kZSAq aW5vZGUpOworYm9vbCBmdXNlX2RheF9jaGVja19hbGlnbm1lbnQoc3RydWN0IGZ1c2VfY29ubiAq ZmMsIHVuc2lnbmVkIGludCBtYXBfYWxpZ25tZW50KTsKK3ZvaWQgZnVzZV9kYXhfY2FuY2VsX3dv cmsoc3RydWN0IGZ1c2VfY29ubiAqZmMpOworCisjZW5kaWYgLyogX0ZTX0ZVU0VfSV9IICovCmRp ZmYgLS1naXQgYS9mcy9mdXNlL2lub2RlLmMgYi9mcy9mdXNlL2lub2RlLmMKaW5kZXggOGVmZWUw MGEyYTFhLi5iMGUxOGI0NzBlOTEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvaW5vZGUuYworKysgYi9m cy9mdXNlL2lub2RlLmMKQEAgLTYsNiArNiw4IEBACiAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HLgog Ki8KIAorI2luY2x1ZGUgImZ1c2VfaS5oIgorCiAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgog I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+CkBAIC0yMiw4 ICsyNCw2IEBACiAjaW5jbHVkZSA8bGludXgvcG9zaXhfYWNsLmg+CiAjaW5jbHVkZSA8bGludXgv cGlkX25hbWVzcGFjZS5oPgogCi0jaW5jbHVkZSA8bmV0L2Z1c2UuaD4KLQogTU9EVUxFX0FVVEhP UigiTWlrbG9zIFN6ZXJlZGkgPG1pa2xvc0BzemVyZWRpLmh1PiIpOwogTU9EVUxFX0RFU0NSSVBU SU9OKCJGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpk aWZmIC0tZ2l0IGEvZnMvZnVzZS9yZWFkZGlyLmMgYi9mcy9mdXNlL3JlYWRkaXIuYwppbmRleCBh NmU4NjYwZTQwZWYuLjM0NDFmZmE3NDBmMyAxMDA2NDQKLS0tIGEvZnMvZnVzZS9yZWFkZGlyLmMK KysrIGIvZnMvZnVzZS9yZWFkZGlyLmMKQEAgLTcsMTMgKzcsMTIgQEAKICovCiAKIAorI2luY2x1 ZGUgImZ1c2VfaS5oIgogI2luY2x1ZGUgPGxpbnV4L2l2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8bGlu dXgvcG9zaXhfYWNsLmg+CiAjaW5jbHVkZSA8bGludXgvcGFnZW1hcC5oPgogI2luY2x1ZGUgPGxp bnV4L2hpZ2htZW0uaD4KIAotI2luY2x1ZGUgPG5ldC9mdXNlLmg+Ci0KIHN0YXRpYyBib29sIGZ1 c2VfdXNlX3JlYWRkaXJwbHVzKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGlyX2NvbnRleHQg KmN0eCkKIHsKIAlzdHJ1Y3QgZnVzZV9jb25uICpmYyA9IGdldF9mdXNlX2Nvbm4oZGlyKTsKZGlm ZiAtLWdpdCBhL2ZzL2Z1c2UvdmlydGlvX2ZzLmMgYi9mcy9mdXNlL3ZpcnRpb19mcy5jCmluZGV4 IDU3Y2MzZmUzZTA3Yi4uODg2OGFjMzFhM2MwIDEwMDY0NAotLS0gYS9mcy9mdXNlL3ZpcnRpb19m cy5jCisrKyBiL2ZzL2Z1c2UvdmlydGlvX2ZzLmMKQEAgLTE2LDggKzE2LDcgQEAKICNpbmNsdWRl IDxsaW51eC9mc19wYXJzZXIuaD4KICNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+CiAjaW5jbHVk ZSA8bGludXgvdWlvLmg+Ci0KLSNpbmNsdWRlIDxuZXQvZnVzZS5oPgorI2luY2x1ZGUgImZ1c2Vf aS5oIgogCiAvKiBMaXN0IG9mIHZpcnRpby1mcyBkZXZpY2UgaW5zdGFuY2VzIGFuZCBhIGxvY2sg Zm9yIHRoZSBsaXN0LiBBbHNvIHByb3ZpZGVzCiAgKiBtdXR1YWwgZXhjbHVzaW9uIGluIGRldmlj ZSByZW1vdmFsIGFuZCBtb3VudGluZyBwYXRoCmRpZmYgLS1naXQgYS9mcy9mdXNlL3hhdHRyLmMg Yi9mcy9mdXNlL3hhdHRyLmMKaW5kZXggNDZhMjkxOWU1M2NhLi5jZGVhMThkZTk0ZjcgMTAwNjQ0 Ci0tLSBhL2ZzL2Z1c2UveGF0dHIuYworKysgYi9mcy9mdXNlL3hhdHRyLmMKQEAgLTYsMTEgKzYs MTEgQEAKICAqIFNlZSB0aGUgZmlsZSBDT1BZSU5HLgogICovCiAKKyNpbmNsdWRlICJmdXNlX2ku aCIKKwogI2luY2x1ZGUgPGxpbnV4L3hhdHRyLmg+CiAjaW5jbHVkZSA8bGludXgvcG9zaXhfYWNs X3hhdHRyLmg+CiAKLSNpbmNsdWRlIDxuZXQvZnVzZS5oPgotCiBpbnQgZnVzZV9zZXR4YXR0cihz dHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICp2YWx1ZSwK IAkJICBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQv ZnVzZS5oIGIvaW5jbHVkZS9uZXQvZnVzZS5oCmluZGV4IDdjNGI4Y2I5M2Y5Zi4uMmQ2ZDYzZTdh ZDY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9mdXNlLmgKKysrIGIvaW5jbHVkZS9uZXQvZnVz ZS5oCkBAIC02LDE3OSArNiwyNyBAQAogICBTZWUgdGhlIGZpbGUgQ09QWUlORy4KICovCiAKLSNp Zm5kZWYgX0ZTX0ZVU0VfSV9ICi0jZGVmaW5lIF9GU19GVVNFX0lfSAotCi0jaWZuZGVmIHByX2Zt dAotIyBkZWZpbmUgcHJfZm10KGZtdCkgImZ1c2U6ICIgZm10Ci0jZW5kaWYKKyNpZm5kZWYgX05F VF9GVVNFX0gKKyNkZWZpbmUgX05FVF9GVVNFX0gKIAogI2luY2x1ZGUgPGxpbnV4L2Z1c2UuaD4K LSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+Ci0jaW5jbHVk ZSA8bGludXgvd2FpdC5oPgotI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KLSNpbmNsdWRlIDxsaW51 eC9zcGlubG9jay5oPgotI2luY2x1ZGUgPGxpbnV4L21tLmg+Ci0jaW5jbHVkZSA8bGludXgvYmFj a2luZy1kZXYuaD4KLSNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgotI2luY2x1ZGUgPGxpbnV4L3J3 c2VtLmg+Ci0jaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+CiAjaW5jbHVkZSA8bGludXgvcG9sbC5o PgotI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgogI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4K LSNpbmNsdWRlIDxsaW51eC94YXR0ci5oPgotI2luY2x1ZGUgPGxpbnV4L3BpZF9uYW1lc3BhY2Uu aD4KLSNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPgotI2luY2x1ZGUgPGxpbnV4L3VzZXJfbmFt ZXNwYWNlLmg+Ci0KLS8qKiBEZWZhdWx0IG1heCBudW1iZXIgb2YgcGFnZXMgdGhhdCBjYW4gYmUg dXNlZCBpbiBhIHNpbmdsZSByZWFkIHJlcXVlc3QgKi8KLSNkZWZpbmUgRlVTRV9ERUZBVUxUX01B WF9QQUdFU19QRVJfUkVRIDMyCi0KLS8qKiBNYXhpbXVtIG9mIG1heF9wYWdlcyByZWNlaXZlZCBp biBpbml0X291dCAqLwotI2RlZmluZSBGVVNFX01BWF9NQVhfUEFHRVMgMjU2Ci0KLS8qKiBCaWFz IGZvciBmaS0+d3JpdGVjdHIsIG1lYW5pbmcgbmV3IHdyaXRlcGFnZXMgbXVzdCBub3QgYmUgc2Vu dCAqLwotI2RlZmluZSBGVVNFX05PV1JJVEUgSU5UX01JTgotCi0vKiogSXQgY291bGQgYmUgYXMg bGFyZ2UgYXMgUEFUSF9NQVgsIGJ1dCB3b3VsZCB0aGF0IGhhdmUgYW55IHVzZXM/ICovCi0jZGVm aW5lIEZVU0VfTkFNRV9NQVggMTAyNAogCiAvKiogTnVtYmVyIG9mIGRlbnRyaWVzIGZvciBlYWNo IGNvbm5lY3Rpb24gaW4gdGhlIGNvbnRyb2wgZmlsZXN5c3RlbSAqLwogI2RlZmluZSBGVVNFX0NU TF9OVU1fREVOVFJJRVMgNQogCi0vKiogTGlzdCBvZiBhY3RpdmUgY29ubmVjdGlvbnMgKi8KLWV4 dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZ1c2VfY29ubl9saXN0OwotCi0vKiogR2xvYmFsIG11dGV4 IHByb3RlY3RpbmcgZnVzZV9jb25uX2xpc3QgYW5kIHRoZSBjb250cm9sIGZpbGVzeXN0ZW0gKi8K LWV4dGVybiBzdHJ1Y3QgbXV0ZXggZnVzZV9tdXRleDsKLQotLyoqIE1vZHVsZSBwYXJhbWV0ZXJz ICovCi1leHRlcm4gdW5zaWduZWQgbWF4X3VzZXJfYmdyZXE7Ci1leHRlcm4gdW5zaWduZWQgbWF4 X3VzZXJfY29uZ3RocmVzaDsKLQogLyogT25lIGZvcmdldCByZXF1ZXN0ICovCiBzdHJ1Y3QgZnVz ZV9mb3JnZXRfbGluayB7CiAJc3RydWN0IGZ1c2VfZm9yZ2V0X29uZSBmb3JnZXRfb25lOwogCXN0 cnVjdCBmdXNlX2ZvcmdldF9saW5rICpuZXh0OwogfTsKIAotLyoqIEZVU0UgaW5vZGUgKi8KLXN0 cnVjdCBmdXNlX2lub2RlIHsKLQkvKiogSW5vZGUgZGF0YSAqLwotCXN0cnVjdCBpbm9kZSBpbm9k ZTsKLQotCS8qKiBVbmlxdWUgSUQsIHdoaWNoIGlkZW50aWZpZXMgdGhlIGlub2RlIGJldHdlZW4g dXNlcnNwYWNlCi0JICogYW5kIGtlcm5lbCAqLwotCXU2NCBub2RlaWQ7Ci0KLQkvKiogTnVtYmVy IG9mIGxvb2t1cHMgb24gdGhpcyBpbm9kZSAqLwotCXU2NCBubG9va3VwOwotCi0JLyoqIFRoZSBy ZXF1ZXN0IHVzZWQgZm9yIHNlbmRpbmcgdGhlIEZPUkdFVCBtZXNzYWdlICovCi0Jc3RydWN0IGZ1 c2VfZm9yZ2V0X2xpbmsgKmZvcmdldDsKLQotCS8qKiBUaW1lIGluIGppZmZpZXMgdW50aWwgdGhl IGZpbGUgYXR0cmlidXRlcyBhcmUgdmFsaWQgKi8KLQl1NjQgaV90aW1lOwotCi0JLyogV2hpY2gg YXR0cmlidXRlcyBhcmUgaW52YWxpZCAqLwotCXUzMiBpbnZhbF9tYXNrOwotCi0JLyoqIFRoZSBz dGlja3kgYml0IGluIGlub2RlLT5pX21vZGUgbWF5IGhhdmUgYmVlbiByZW1vdmVkLCBzbwotCSAg ICBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgbW9kZSAqLwotCXVtb2RlX3Qgb3JpZ19pX21vZGU7Ci0K LQkvKiogNjQgYml0IGlub2RlIG51bWJlciAqLwotCXU2NCBvcmlnX2lubzsKLQotCS8qKiBWZXJz aW9uIG9mIGxhc3QgYXR0cmlidXRlIGNoYW5nZSAqLwotCXU2NCBhdHRyX3ZlcnNpb247Ci0KLQl1 bmlvbiB7Ci0JCS8qIFdyaXRlIHJlbGF0ZWQgZmllbGRzIChyZWd1bGFyIGZpbGUgb25seSkgKi8K LQkJc3RydWN0IHsKLQkJCS8qIEZpbGVzIHVzYWJsZSBpbiB3cml0ZXBhZ2UuICBQcm90ZWN0ZWQg YnkgZmktPmxvY2sgKi8KLQkJCXN0cnVjdCBsaXN0X2hlYWQgd3JpdGVfZmlsZXM7Ci0KLQkJCS8q IFdyaXRlcGFnZXMgcGVuZGluZyBvbiB0cnVuY2F0ZSBvciBmc3luYyAqLwotCQkJc3RydWN0IGxp c3RfaGVhZCBxdWV1ZWRfd3JpdGVzOwotCi0JCQkvKiBOdW1iZXIgb2Ygc2VudCB3cml0ZXMsIGEg bmVnYXRpdmUgYmlhcwotCQkJICogKEZVU0VfTk9XUklURSkgbWVhbnMgbW9yZSB3cml0ZXMgYXJl IGJsb2NrZWQgKi8KLQkJCWludCB3cml0ZWN0cjsKLQotCQkJLyogV2FpdHEgZm9yIHdyaXRlcGFn ZSBjb21wbGV0aW9uICovCi0JCQl3YWl0X3F1ZXVlX2hlYWRfdCBwYWdlX3dhaXRxOwotCi0JCQkv KiBMaXN0IG9mIHdyaXRlcGFnZSByZXF1ZXN0c3QgKHBlbmRpbmcgb3Igc2VudCkgKi8KLQkJCXN0 cnVjdCByYl9yb290IHdyaXRlcGFnZXM7Ci0JCX07Ci0KLQkJLyogcmVhZGRpciBjYWNoZSAoZGly ZWN0b3J5IG9ubHkpICovCi0JCXN0cnVjdCB7Ci0JCQkvKiB0cnVlIGlmIGZ1bGx5IGNhY2hlZCAq LwotCQkJYm9vbCBjYWNoZWQ7Ci0KLQkJCS8qIHNpemUgb2YgY2FjaGUgKi8KLQkJCWxvZmZfdCBz aXplOwotCi0JCQkvKiBwb3NpdGlvbiBhdCBlbmQgb2YgY2FjaGUgKHBvc2l0aW9uIG9mIG5leHQg ZW50cnkpICovCi0JCQlsb2ZmX3QgcG9zOwotCi0JCQkvKiB2ZXJzaW9uIG9mIHRoZSBjYWNoZSAq LwotCQkJdTY0IHZlcnNpb247Ci0KLQkJCS8qIG1vZGlmaWNhdGlvbiB0aW1lIG9mIGRpcmVjdG9y eSB3aGVuIGNhY2hlIHdhcwotCQkJICogc3RhcnRlZCAqLwotCQkJc3RydWN0IHRpbWVzcGVjNjQg bXRpbWU7Ci0KLQkJCS8qIGl2ZXJzaW9uIG9mIGRpcmVjdG9yeSB3aGVuIGNhY2hlIHdhcyBzdGFy dGVkICovCi0JCQl1NjQgaXZlcnNpb247Ci0KLQkJCS8qIHByb3RlY3RzIGFib3ZlIGZpZWxkcyAq LwotCQkJc3BpbmxvY2tfdCBsb2NrOwotCQl9IHJkYzsKLQl9OwotCi0JLyoqIE1pc2NlbGxhbmVv dXMgYml0cyBkZXNjcmliaW5nIGlub2RlIHN0YXRlICovCi0JdW5zaWduZWQgbG9uZyBzdGF0ZTsK LQotCS8qKiBMb2NrIGZvciBzZXJpYWxpemluZyBsb29rdXAgYW5kIHJlYWRkaXIgZm9yIGJhY2sg Y29tcGF0aWJpbGl0eSovCi0Jc3RydWN0IG11dGV4IG11dGV4OwotCi0JLyoqIExvY2sgdG8gcHJv dGVjdCB3cml0ZSByZWxhdGVkIGZpZWxkcyAqLwotCXNwaW5sb2NrX3QgbG9jazsKLQotCS8qKgot CSAqIENhbid0IHRha2UgaW5vZGUgbG9jayBpbiBmYXVsdCBwYXRoIChsZWFkcyB0byBjaXJjdWxh ciBkZXBlbmRlbmN5KS4KLQkgKiBJbnRyb2R1Y2UgYW5vdGhlciBzZW1hcGhvcmUgd2hpY2ggY2Fu IGJlIHRha2VuIGluIGZhdWx0IHBhdGggYW5kCi0JICogdGhlbiBvdGhlciBmaWxlc3lzdGVtIHBh dGhzIGNhbiB0YWtlIHRoaXMgdG8gYmxvY2sgZmF1bHRzLgotCSAqLwotCXN0cnVjdCByd19zZW1h cGhvcmUgaV9tbWFwX3NlbTsKLQotI2lmZGVmIENPTkZJR19GVVNFX0RBWAotCS8qCi0JICogRGF4 IHNwZWNpZmljIGlub2RlIGRhdGEKLQkgKi8KLQlzdHJ1Y3QgZnVzZV9pbm9kZV9kYXggKmRheDsK LSNlbmRpZgotfTsKLQotLyoqIEZVU0UgaW5vZGUgc3RhdGUgYml0cyAqLwotZW51bSB7Ci0JLyoq IEFkdmlzZSByZWFkZGlycGx1cyAgKi8KLQlGVVNFX0lfQURWSVNFX1JEUExVUywKLQkvKiogSW5p dGlhbGl6ZWQgd2l0aCByZWFkZGlycGx1cyAqLwotCUZVU0VfSV9JTklUX1JEUExVUywKLQkvKiog QW4gb3BlcmF0aW9uIGNoYW5naW5nIGZpbGUgc2l6ZSBpcyBpbiBwcm9ncmVzcyAgKi8KLQlGVVNF X0lfU0laRV9VTlNUQUJMRSwKLQkvKiBCYWQgaW5vZGUgKi8KLQlGVVNFX0lfQkFELAotfTsKLQog c3RydWN0IGZ1c2VfY29ubjsKIHN0cnVjdCBmdXNlX21vdW50Owogc3RydWN0IGZ1c2VfcmVsZWFz ZV9hcmdzOworc3RydWN0IGZ1c2VfaW5vZGU7CitzdHJ1Y3QgZnVzZV9pcXVldWVfb3BzOwogCiAv KiogRlVTRSBzcGVjaWZpYyBmaWxlIGRhdGEgKi8KIHN0cnVjdCBmdXNlX2ZpbGUgewpAQCAtMzA1 LDExOCArMTUzLDYgQEAgc3RydWN0IGZ1c2VfaW9fcHJpdiB7CiAJLmlvY2IgPSBpLAkJCVwKIH0K IAotLyoqCi0gKiBSZXF1ZXN0IGZsYWdzCi0gKgotICogRlJfSVNSRVBMWToJCXNldCBpZiB0aGUg cmVxdWVzdCBoYXMgcmVwbHkKLSAqIEZSX0ZPUkNFOgkJZm9yY2Ugc2VuZGluZyBvZiB0aGUgcmVx dWVzdCBldmVuIGlmIGludGVycnVwdGVkCi0gKiBGUl9CQUNLR1JPVU5EOglyZXF1ZXN0IGlzIHNl bnQgaW4gdGhlIGJhY2tncm91bmQKLSAqIEZSX1dBSVRJTkc6CQlyZXF1ZXN0IGlzIGNvdW50ZWQg YXMgIndhaXRpbmciCi0gKiBGUl9BQk9SVEVEOgkJdGhlIHJlcXVlc3Qgd2FzIGFib3J0ZWQKLSAq IEZSX0lOVEVSUlVQVEVEOgl0aGUgcmVxdWVzdCBoYXMgYmVlbiBpbnRlcnJ1cHRlZAotICogRlJf TE9DS0VEOgkJZGF0YSBpcyBiZWluZyBjb3BpZWQgdG8vZnJvbSB0aGUgcmVxdWVzdAotICogRlJf UEVORElORzoJCXJlcXVlc3QgaXMgbm90IHlldCBpbiB1c2Vyc3BhY2UKLSAqIEZSX1NFTlQ6CQly ZXF1ZXN0IGlzIGluIHVzZXJzcGFjZSwgd2FpdGluZyBmb3IgYW4gYW5zd2VyCi0gKiBGUl9GSU5J U0hFRDoJCXJlcXVlc3QgaXMgZmluaXNoZWQKLSAqIEZSX1BSSVZBVEU6CQlyZXF1ZXN0IGlzIG9u IHByaXZhdGUgbGlzdAotICogRlJfQVNZTkM6CQlyZXF1ZXN0IGlzIGFzeW5jaHJvbm91cwotICov Ci1lbnVtIGZ1c2VfcmVxX2ZsYWcgewotCUZSX0lTUkVQTFksCi0JRlJfRk9SQ0UsCi0JRlJfQkFD S0dST1VORCwKLQlGUl9XQUlUSU5HLAotCUZSX0FCT1JURUQsCi0JRlJfSU5URVJSVVBURUQsCi0J RlJfTE9DS0VELAotCUZSX1BFTkRJTkcsCi0JRlJfU0VOVCwKLQlGUl9GSU5JU0hFRCwKLQlGUl9Q UklWQVRFLAotCUZSX0FTWU5DLAotfTsKLQotLyoqCi0gKiBBIHJlcXVlc3QgdG8gdGhlIGNsaWVu dAotICoKLSAqIC53YWl0cS5sb2NrIHByb3RlY3RzIHRoZSBmb2xsb3dpbmcgZmllbGRzOgotICog ICAtIEZSX0FCT1JURUQKLSAqICAgLSBGUl9MT0NLRUQgKG1heSBhbHNvIGJlIG1vZGlmaWVkIHVu ZGVyIGZjLT5sb2NrLCB0ZXN0ZWQgdW5kZXIgYm90aCkKLSAqLwotc3RydWN0IGZ1c2VfcmVxIHsK LQkvKiogVGhpcyBjYW4gYmUgb24gZWl0aGVyIHBlbmRpbmcgcHJvY2Vzc2luZyBvciBpbyBsaXN0 cyBpbgotCSAgICBmdXNlX2Nvbm4gKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci0KLQkvKiog RW50cnkgb24gdGhlIGludGVycnVwdHMgbGlzdCAgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGludHJf ZW50cnk7Ci0KLQkvKiBJbnB1dC9vdXRwdXQgYXJndW1lbnRzICovCi0Jc3RydWN0IGZ1c2VfYXJn cyAqYXJnczsKLQotCS8qKiByZWZjb3VudCAqLwotCXJlZmNvdW50X3QgY291bnQ7Ci0KLQkvKiBS ZXF1ZXN0IGZsYWdzLCB1cGRhdGVkIHdpdGggdGVzdC9zZXQvY2xlYXJfYml0KCkgKi8KLQl1bnNp Z25lZCBsb25nIGZsYWdzOwotCi0JLyogVGhlIHJlcXVlc3QgaW5wdXQgaGVhZGVyICovCi0Jc3Ry dWN0IHsKLQkJc3RydWN0IGZ1c2VfaW5faGVhZGVyIGg7Ci0JfSBpbjsKLQotCS8qIFRoZSByZXF1 ZXN0IG91dHB1dCBoZWFkZXIgKi8KLQlzdHJ1Y3QgewotCQlzdHJ1Y3QgZnVzZV9vdXRfaGVhZGVy IGg7Ci0JfSBvdXQ7Ci0KLQkvKiogVXNlZCB0byB3YWtlIHVwIHRoZSB0YXNrIHdhaXRpbmcgZm9y IGNvbXBsZXRpb24gb2YgcmVxdWVzdCovCi0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdHE7Ci0KLSNp ZiBJU19FTkFCTEVEKENPTkZJR19WSVJUSU9fRlMpCi0JLyoqIHZpcnRpby1mcydzIHBoeXNpY2Fs bHkgY29udGlndW91cyBidWZmZXIgZm9yIGluIGFuZCBvdXQgYXJncyAqLwotCXZvaWQgKmFyZ2J1 ZjsKLSNlbmRpZgotCi0JLyoqIGZ1c2VfbW91bnQgdGhpcyByZXF1ZXN0IGJlbG9uZ3MgdG8gKi8K LQlzdHJ1Y3QgZnVzZV9tb3VudCAqZm07Ci19OwotCi1zdHJ1Y3QgZnVzZV9pcXVldWU7Ci0KLS8q KgotICogSW5wdXQgcXVldWUgY2FsbGJhY2tzCi0gKgotICogSW5wdXQgcXVldWUgc2lnbmFsbGlu ZyBpcyBkZXZpY2Utc3BlY2lmaWMuICBGb3IgZXhhbXBsZSwgdGhlIC9kZXYvZnVzZSBmaWxlCi0g KiB1c2VzIGZpcS0+d2FpdHEgYW5kIGZhc3luYyB0byB3YWtlIHByb2Nlc3NlcyB0aGF0IGFyZSB3 YWl0aW5nIG9uIHF1ZXVlCi0gKiByZWFkaW5lc3MuICBUaGVzZSBjYWxsYmFja3MgYWxsb3cgb3Ro ZXIgZGV2aWNlIHR5cGVzIHRvIHJlc3BvbmQgdG8gaW5wdXQKLSAqIHF1ZXVlIGFjdGl2aXR5Lgot ICovCi1zdHJ1Y3QgZnVzZV9pcXVldWVfb3BzIHsKLQkvKioKLQkgKiBTaWduYWwgdGhhdCBhIGZv cmdldCBoYXMgYmVlbiBxdWV1ZWQKLQkgKi8KLQl2b2lkICgqd2FrZV9mb3JnZXRfYW5kX3VubG9j aykoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEpCi0JCV9fcmVsZWFzZXMoZmlxLT5sb2NrKTsKLQot CS8qKgotCSAqIFNpZ25hbCB0aGF0IGFuIElOVEVSUlVQVCByZXF1ZXN0IGhhcyBiZWVuIHF1ZXVl ZAotCSAqLwotCXZvaWQgKCp3YWtlX2ludGVycnVwdF9hbmRfdW5sb2NrKShzdHJ1Y3QgZnVzZV9p cXVldWUgKmZpcSkKLQkJX19yZWxlYXNlcyhmaXEtPmxvY2spOwotCi0JLyoqCi0JICogU2lnbmFs IHRoYXQgYSByZXF1ZXN0IGhhcyBiZWVuIHF1ZXVlZAotCSAqLwotCXZvaWQgKCp3YWtlX3BlbmRp bmdfYW5kX3VubG9jaykoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEpCi0JCV9fcmVsZWFzZXMoZmlx LT5sb2NrKTsKLQotCS8qKgotCSAqIENsZWFuIHVwIHdoZW4gZnVzZV9pcXVldWUgaXMgZGVzdHJv eWVkCi0JICovCi0Jdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxKTsKLX07 Ci0KIC8qKiAvZGV2L2Z1c2UgaW5wdXQgcXVldWUgb3BlcmF0aW9ucyAqLwogZXh0ZXJuIGNvbnN0 IHN0cnVjdCBmdXNlX2lxdWV1ZV9vcHMgZnVzZV9kZXZfZmlxX29wczsKIApAQCAtNDU2LDkgKzE5 Miw2IEBAIHN0cnVjdCBmdXNlX2lxdWV1ZSB7CiAJdm9pZCAqcHJpdjsKIH07CiAKLSNkZWZpbmUg RlVTRV9QUV9IQVNIX0JJVFMgOAotI2RlZmluZSBGVVNFX1BRX0hBU0hfU0laRSAoMSA8PCBGVVNF X1BRX0hBU0hfQklUUykKLQogc3RydWN0IGZ1c2VfcHF1ZXVlIHsKIAkvKiogQ29ubmVjdGlvbiBl c3RhYmxpc2hlZCAqLwogCXVuc2lnbmVkIGNvbm5lY3RlZDsKQEAgLTQ4NywzNCArMjIwLDYgQEAg c3RydWN0IGZ1c2VfZGV2IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5OwogfTsKIAotc3RydWN0 IGZ1c2VfZnNfY29udGV4dCB7Ci0JaW50IGZkOwotCXVuc2lnbmVkIGludCByb290bW9kZTsKLQlr dWlkX3QgdXNlcl9pZDsKLQlrZ2lkX3QgZ3JvdXBfaWQ7Ci0JYm9vbCBpc19iZGV2OjE7Ci0JYm9v bCBmZF9wcmVzZW50OjE7Ci0JYm9vbCByb290bW9kZV9wcmVzZW50OjE7Ci0JYm9vbCB1c2VyX2lk X3ByZXNlbnQ6MTsKLQlib29sIGdyb3VwX2lkX3ByZXNlbnQ6MTsKLQlib29sIGRlZmF1bHRfcGVy bWlzc2lvbnM6MTsKLQlib29sIGFsbG93X290aGVyOjE7Ci0JYm9vbCBkZXN0cm95OjE7Ci0JYm9v bCBub19jb250cm9sOjE7Ci0JYm9vbCBub19mb3JjZV91bW91bnQ6MTsKLQlib29sIGxlZ2FjeV9v cHRzX3Nob3c6MTsKLQlib29sIGRheDoxOwotCXVuc2lnbmVkIGludCBtYXhfcmVhZDsKLQl1bnNp Z25lZCBpbnQgYmxrc2l6ZTsKLQljb25zdCBjaGFyICpzdWJ0eXBlOwotCi0JLyogREFYIGRldmlj ZSwgbWF5IGJlIE5VTEwgKi8KLQlzdHJ1Y3QgZGF4X2RldmljZSAqZGF4X2RldjsKLQotCS8qIGZ1 c2VfZGV2IHBvaW50ZXIgdG8gZmlsbCBpbiwgc2hvdWxkIGNvbnRhaW4gTlVMTCBvbiBlbnRyeSAq LwotCXZvaWQgKipmdWRwdHI7Ci19OwotCiAvKioKICAqIEEgRnVzZSBjb25uZWN0aW9uLgogICoK QEAgLTgyMSwyMDQgKzUyNiwxNiBAQCBzdHJ1Y3QgZnVzZV9tb3VudCB7CiAJc3RydWN0IGxpc3Rf aGVhZCBmY19lbnRyeTsKIH07CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfbW91bnQgKmdl dF9mdXNlX21vdW50X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCi17Ci0JcmV0dXJuIHNi LT5zX2ZzX2luZm87Ci19Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY29ubiAqZ2V0X2Z1 c2VfY29ubl9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQotewotCXJldHVybiBnZXRfZnVz ZV9tb3VudF9zdXBlcihzYiktPmZjOwotfQotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX21v dW50ICpnZXRfZnVzZV9tb3VudChzdHJ1Y3QgaW5vZGUgKmlub2RlKQotewotCXJldHVybiBnZXRf ZnVzZV9tb3VudF9zdXBlcihpbm9kZS0+aV9zYik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0 IGZ1c2VfY29ubiAqZ2V0X2Z1c2VfY29ubihzdHJ1Y3QgaW5vZGUgKmlub2RlKQotewotCXJldHVy biBnZXRfZnVzZV9tb3VudF9zdXBlcihpbm9kZS0+aV9zYiktPmZjOwotfQotCi1zdGF0aWMgaW5s aW5lIHN0cnVjdCBmdXNlX2lub2RlICpnZXRfZnVzZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl KQotewotCXJldHVybiBjb250YWluZXJfb2YoaW5vZGUsIHN0cnVjdCBmdXNlX2lub2RlLCBpbm9k ZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTY0IGdldF9ub2RlX2lkKHN0cnVjdCBpbm9kZSAqaW5v ZGUpCi17Ci0JcmV0dXJuIGdldF9mdXNlX2lub2RlKGlub2RlKS0+bm9kZWlkOwotfQotCi1zdGF0 aWMgaW5saW5lIGludCBpbnZhbGlkX25vZGVpZCh1NjQgbm9kZWlkKQotewotCXJldHVybiAhbm9k ZWlkIHx8IG5vZGVpZCA9PSBGVVNFX1JPT1RfSUQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdTY0IGZ1 c2VfZ2V0X2F0dHJfdmVyc2lvbihzdHJ1Y3QgZnVzZV9jb25uICpmYykKLXsKLQlyZXR1cm4gYXRv bWljNjRfcmVhZCgmZmMtPmF0dHJfdmVyc2lvbik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBm dXNlX21ha2VfYmFkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCi17Ci0Jc2V0X2JpdChGVVNFX0lfQkFE LCAmZ2V0X2Z1c2VfaW5vZGUoaW5vZGUpLT5zdGF0ZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v bCBmdXNlX2lzX2JhZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQotewotCXJldHVybiB1bmxpa2VseSh0 ZXN0X2JpdChGVVNFX0lfQkFELCAmZ2V0X2Z1c2VfaW5vZGUoaW5vZGUpLT5zdGF0ZSkpOwotfQot CiAvKiogRGV2aWNlIG9wZXJhdGlvbnMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnM7CiAKLWV4dGVybiBjb25zdCBzdHJ1Y3QgZGVudHJ5 X29wZXJhdGlvbnMgZnVzZV9kZW50cnlfb3BlcmF0aW9uczsKLWV4dGVybiBjb25zdCBzdHJ1Y3Qg ZGVudHJ5X29wZXJhdGlvbnMgZnVzZV9yb290X2RlbnRyeV9vcGVyYXRpb25zOwotCi0vKioKLSAq IEdldCBhIGZpbGxlZCBpbiBpbm9kZQotICovCi1zdHJ1Y3QgaW5vZGUgKmZ1c2VfaWdldChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1NjQgbm9kZWlkLAotCQkJaW50IGdlbmVyYXRpb24sIHN0cnVj dCBmdXNlX2F0dHIgKmF0dHIsCi0JCQl1NjQgYXR0cl92YWxpZCwgdTY0IGF0dHJfdmVyc2lvbik7 Ci0KLWludCBmdXNlX2xvb2t1cF9uYW1lKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBub2Rl aWQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLAotCQkgICAgIHN0cnVjdCBmdXNlX2VudHJ5X291 dCAqb3V0YXJnLCBzdHJ1Y3QgaW5vZGUgKippbm9kZSk7Ci0KLS8qKgotICogU2VuZCBGT1JHRVQg Y29tbWFuZAotICovCi12b2lkIGZ1c2VfcXVldWVfZm9yZ2V0KHN0cnVjdCBmdXNlX2Nvbm4gKmZj LCBzdHJ1Y3QgZnVzZV9mb3JnZXRfbGluayAqZm9yZ2V0LAotCQkgICAgICAgdTY0IG5vZGVpZCwg dTY0IG5sb29rdXApOwotCi1zdHJ1Y3QgZnVzZV9mb3JnZXRfbGluayAqZnVzZV9hbGxvY19mb3Jn ZXQodm9pZCk7Ci0KLXN0cnVjdCBmdXNlX2ZvcmdldF9saW5rICpmdXNlX2RlcXVldWVfZm9yZ2V0 KHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxLAotCQkJCQkgICAgIHVuc2lnbmVkIGludCBtYXgsCi0J CQkJCSAgICAgdW5zaWduZWQgaW50ICpjb3VudHApOwotCi0vKgotICogSW5pdGlhbGl6ZSBSRUFE IG9yIFJFQURESVIgcmVxdWVzdAotICovCi1zdHJ1Y3QgZnVzZV9pb19hcmdzIHsKLQl1bmlvbiB7 Ci0JCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZnVzZV9yZWFkX2luIGluOwotCQkJdTY0IGF0dHJfdmVy OwotCQl9IHJlYWQ7Ci0JCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZnVzZV93cml0ZV9pbiBpbjsKLQkJ CXN0cnVjdCBmdXNlX3dyaXRlX291dCBvdXQ7Ci0JCX0gd3JpdGU7Ci0JfTsKLQlzdHJ1Y3QgZnVz ZV9hcmdzX3BhZ2VzIGFwOwotCXN0cnVjdCBmdXNlX2lvX3ByaXYgKmlvOwotCXN0cnVjdCBmdXNl X2ZpbGUgKmZmOwotfTsKLQotdm9pZCBmdXNlX3JlYWRfYXJnc19maWxsKHN0cnVjdCBmdXNlX2lv X2FyZ3MgKmlhLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHBvcywKLQkJCSBzaXplX3QgY291 bnQsIGludCBvcGNvZGUpOwotCi0KLS8qKgotICogU2VuZCBPUEVOIG9yIE9QRU5ESVIgcmVxdWVz dAotICovCi1pbnQgZnVzZV9vcGVuX2NvbW1vbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlsZSwgYm9vbCBpc2Rpcik7Ci0KLXN0cnVjdCBmdXNlX2ZpbGUgKmZ1c2VfZmlsZV9h bGxvYyhzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pOwotdm9pZCBmdXNlX2ZpbGVfZnJlZShzdHJ1Y3Qg ZnVzZV9maWxlICpmZik7Ci12b2lkIGZ1c2VfZmluaXNoX29wZW4oc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGZpbGUgKmZpbGUpOwotCiB2b2lkIGZ1c2Vfc3luY19yZWxlYXNlKHN0cnVjdCBm dXNlX2lub2RlICpmaSwgc3RydWN0IGZ1c2VfZmlsZSAqZmYsIGludCBmbGFncyk7CiAKLS8qKgot ICogU2VuZCBSRUxFQVNFIG9yIFJFTEVBU0VESVIgcmVxdWVzdAotICovCi12b2lkIGZ1c2VfcmVs ZWFzZV9jb21tb24oc3RydWN0IGZpbGUgKmZpbGUsIGJvb2wgaXNkaXIpOwotCi0vKioKLSAqIFNl bmQgRlNZTkMgb3IgRlNZTkNESVIgcmVxdWVzdAotICovCi1pbnQgZnVzZV9mc3luY19jb21tb24o c3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwKLQkJICAgICAgaW50 IGRhdGFzeW5jLCBpbnQgb3Bjb2RlKTsKLQotLyoqCi0gKiBOb3RpZnkgcG9sbCB3YWtldXAKLSAq LwotaW50IGZ1c2Vfbm90aWZ5X3BvbGxfd2FrZXVwKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLAotCQkJ ICAgIHN0cnVjdCBmdXNlX25vdGlmeV9wb2xsX3dha2V1cF9vdXQgKm91dGFyZyk7Ci0KLS8qKgot ICogSW5pdGlhbGl6ZSBmaWxlIG9wZXJhdGlvbnMgb24gYSByZWd1bGFyIGZpbGUKLSAqLwotdm9p ZCBmdXNlX2luaXRfZmlsZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotLyoqCi0gKiBJ bml0aWFsaXplIGlub2RlIG9wZXJhdGlvbnMgb24gcmVndWxhciBmaWxlcyBhbmQgc3BlY2lhbCBm aWxlcwotICovCi12b2lkIGZ1c2VfaW5pdF9jb21tb24oc3RydWN0IGlub2RlICppbm9kZSk7Ci0K LS8qKgotICogSW5pdGlhbGl6ZSBpbm9kZSBhbmQgZmlsZSBvcGVyYXRpb25zIG9uIGEgZGlyZWN0 b3J5Ci0gKi8KLXZvaWQgZnVzZV9pbml0X2RpcihzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotLyoq Ci0gKiBJbml0aWFsaXplIGlub2RlIG9wZXJhdGlvbnMgb24gYSBzeW1saW5rCi0gKi8KLXZvaWQg ZnVzZV9pbml0X3N5bWxpbmsoc3RydWN0IGlub2RlICppbm9kZSk7Ci0KLS8qKgotICogQ2hhbmdl IGF0dHJpYnV0ZXMgb2YgYW4gaW5vZGUKLSAqLwotdm9pZCBmdXNlX2NoYW5nZV9hdHRyaWJ1dGVz KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmdXNlX2F0dHIgKmF0dHIsCi0JCQkgICAgdTY0 IGF0dHJfdmFsaWQsIHU2NCBhdHRyX3ZlcnNpb24pOwotCi12b2lkIGZ1c2VfY2hhbmdlX2F0dHJp YnV0ZXNfY29tbW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmdXNlX2F0dHIgKmF0dHIs Ci0JCQkJICAgdTY0IGF0dHJfdmFsaWQpOwotCi0vKioKLSAqIEluaXRpYWxpemUgdGhlIGNsaWVu dCBkZXZpY2UKLSAqLwotaW50IGZ1c2VfZGV2X2luaXQodm9pZCk7Ci0KLS8qKgotICogQ2xlYW51 cCB0aGUgY2xpZW50IGRldmljZQotICovCi12b2lkIGZ1c2VfZGV2X2NsZWFudXAodm9pZCk7Ci0K LWludCBmdXNlX2N0bF9pbml0KHZvaWQpOwotdm9pZCBfX2V4aXQgZnVzZV9jdGxfY2xlYW51cCh2 b2lkKTsKLQotLyoqCi0gKiBTaW1wbGUgcmVxdWVzdCBzZW5kaW5nIHRoYXQgZG9lcyByZXF1ZXN0 IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcKLSAqLwotc3NpemVfdCBmdXNlX3NpbXBsZV9yZXF1ZXN0 KHN0cnVjdCBmdXNlX21vdW50ICpmbSwgc3RydWN0IGZ1c2VfYXJncyAqYXJncyk7CiBpbnQgZnVz ZV9zaW1wbGVfYmFja2dyb3VuZChzdHJ1Y3QgZnVzZV9tb3VudCAqZm0sIHN0cnVjdCBmdXNlX2Fy Z3MgKmFyZ3MsCiAJCQkgICBnZnBfdCBnZnBfZmxhZ3MpOwogCi0vKioKLSAqIEVuZCBhIGZpbmlz aGVkIHJlcXVlc3QKLSAqLwotdm9pZCBmdXNlX3JlcXVlc3RfZW5kKHN0cnVjdCBmdXNlX3JlcSAq cmVxKTsKLQogLyogQWJvcnQgYWxsIHJlcXVlc3RzICovCiB2b2lkIGZ1c2VfYWJvcnRfY29ubihz dHJ1Y3QgZnVzZV9jb25uICpmYyk7Ci12b2lkIGZ1c2Vfd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNl X2Nvbm4gKmZjKTsKLQotLyoqCi0gKiBJbnZhbGlkYXRlIGlub2RlIGF0dHJpYnV0ZXMKLSAqLwot dm9pZCBmdXNlX2ludmFsaWRhdGVfYXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotdm9pZCBm dXNlX2ludmFsaWRhdGVfZW50cnlfY2FjaGUoc3RydWN0IGRlbnRyeSAqZW50cnkpOwotCi12b2lk IGZ1c2VfaW52YWxpZGF0ZV9hdGltZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotdTY0IGVudHJ5 X2F0dHJfdGltZW91dChzdHJ1Y3QgZnVzZV9lbnRyeV9vdXQgKm8pOwotdm9pZCBmdXNlX2NoYW5n ZV9lbnRyeV90aW1lb3V0KHN0cnVjdCBkZW50cnkgKmVudHJ5LCBzdHJ1Y3QgZnVzZV9lbnRyeV9v dXQgKm8pOwogCiAvKioKICAqIEFjcXVpcmUgcmVmZXJlbmNlIHRvIGZ1c2VfY29ubgpAQCAtMTAz OCwxMDAgKzU1NSw3IEBAIHZvaWQgZnVzZV9jb25uX2luaXQoc3RydWN0IGZ1c2VfY29ubiAqZmMs IHN0cnVjdCBmdXNlX21vdW50ICpmbSwKIHZvaWQgZnVzZV9jb25uX3B1dChzdHJ1Y3QgZnVzZV9j b25uICpmYyk7CiAKIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9kZXZfYWxsb2NfaW5zdGFsbChzdHJ1 Y3QgZnVzZV9jb25uICpmYyk7Ci1zdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZGV2X2FsbG9jKHZvaWQp Owotdm9pZCBmdXNlX2Rldl9pbnN0YWxsKHN0cnVjdCBmdXNlX2RldiAqZnVkLCBzdHJ1Y3QgZnVz ZV9jb25uICpmYyk7CiB2b2lkIGZ1c2VfZGV2X2ZyZWUoc3RydWN0IGZ1c2VfZGV2ICpmdWQpOwot dm9pZCBmdXNlX3NlbmRfaW5pdChzdHJ1Y3QgZnVzZV9tb3VudCAqZm0pOwotCi0vKioKLSAqIEZp bGwgaW4gc3VwZXJibG9jayBhbmQgaW5pdGlhbGl6ZSBmdXNlIGNvbm5lY3Rpb24KLSAqIEBzYjog cGFydGlhbGx5LWluaXRpYWxpemVkIHN1cGVyYmxvY2sgdG8gZmlsbCBpbgotICogQGN0eDogbW91 bnQgY29udGV4dAotICovCi1pbnQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbihzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCBzdHJ1Y3QgZnVzZV9mc19jb250ZXh0ICpjdHgpOwotCi0vKgotICogRmlsbCBp biBzdXBlcmJsb2NrIGZvciBzdWJtb3VudHMKLSAqIEBzYjogcGFydGlhbGx5LWluaXRpYWxpemVk IHN1cGVyYmxvY2sgdG8gZmlsbCBpbgotICogQHBhcmVudF9maTogVGhlIGZ1c2VfaW5vZGUgb2Yg dGhlIHBhcmVudCBmaWxlc3lzdGVtIHdoZXJlIHRoaXMgc3VibW91bnQgaXMKLSAqIAkgICAgICAg bW91bnRlZAotICovCi1pbnQgZnVzZV9maWxsX3N1cGVyX3N1Ym1vdW50KHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsCi0JCQkgICAgIHN0cnVjdCBmdXNlX2lub2RlICpwYXJlbnRfZmkpOwotCi0vKgot ICogUmVtb3ZlIHRoZSBtb3VudCBmcm9tIHRoZSBjb25uZWN0aW9uCi0gKgotICogUmV0dXJucyB3 aGV0aGVyIHRoaXMgd2FzIHRoZSBsYXN0IG1vdW50Ci0gKi8KLWJvb2wgZnVzZV9tb3VudF9yZW1v dmUoc3RydWN0IGZ1c2VfbW91bnQgKmZtKTsKLQotLyoKLSAqIFNodXQgZG93biB0aGUgY29ubmVj dGlvbiAocG9zc2libHkgc2VuZGluZyBERVNUUk9ZIHJlcXVlc3QpLgotICovCi12b2lkIGZ1c2Vf Y29ubl9kZXN0cm95KHN0cnVjdCBmdXNlX21vdW50ICpmbSk7Ci0KLS8qKgotICogQWRkIGNvbm5l Y3Rpb24gdG8gY29udHJvbCBmaWxlc3lzdGVtCi0gKi8KLWludCBmdXNlX2N0bF9hZGRfY29ubihz dHJ1Y3QgZnVzZV9jb25uICpmYyk7Ci0KLS8qKgotICogUmVtb3ZlIGNvbm5lY3Rpb24gZnJvbSBj b250cm9sIGZpbGVzeXN0ZW0KLSAqLwotdm9pZCBmdXNlX2N0bF9yZW1vdmVfY29ubihzdHJ1Y3Qg ZnVzZV9jb25uICpmYyk7Ci0KLS8qKgotICogSXMgZmlsZSB0eXBlIHZhbGlkPwotICovCi1pbnQg ZnVzZV92YWxpZF90eXBlKGludCBtKTsKLQotYm9vbCBmdXNlX2ludmFsaWRfYXR0cihzdHJ1Y3Qg ZnVzZV9hdHRyICphdHRyKTsKLQotLyoqCi0gKiBJcyBjdXJyZW50IHByb2Nlc3MgYWxsb3dlZCB0 byBwZXJmb3JtIGZpbGVzeXN0ZW0gb3BlcmF0aW9uPwotICovCi1pbnQgZnVzZV9hbGxvd19jdXJy ZW50X3Byb2Nlc3Moc3RydWN0IGZ1c2VfY29ubiAqZmMpOwotCi11NjQgZnVzZV9sb2NrX293bmVy X2lkKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCBmbF9vd25lcl90IGlkKTsKLQotdm9pZCBmdXNlX3Vw ZGF0ZV9jdGltZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotaW50IGZ1c2VfdXBkYXRlX2F0dHJp YnV0ZXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwotCi12b2lkIGZ1 c2VfZmx1c2hfd3JpdGVwYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotdm9pZCBmdXNlX3Nl dF9ub3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwotdm9pZCBmdXNlX3JlbGVhc2Vfbm93cml0 ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotLyoqCi0gKiBTY2FuIGFsbCBmdXNlX21vdW50cyBi ZWxvbmdpbmcgdG8gZmMgdG8gZmluZCB0aGUgZmlyc3Qgd2hlcmUKLSAqIGlsb29rdXA1KCkgcmV0 dXJucyBhIHJlc3VsdC4gIFJldHVybiB0aGF0IHJlc3VsdCBhbmQgdGhlCi0gKiByZXNwZWN0aXZl IGZ1c2VfbW91bnQgaW4gKmZtICh1bmxlc3MgZm0gaXMgTlVMTCkuCi0gKgotICogVGhlIGNhbGxl ciBtdXN0IGhvbGQgZmMtPmtpbGxzYi4KLSAqLwotc3RydWN0IGlub2RlICpmdXNlX2lsb29rdXAo c3RydWN0IGZ1c2VfY29ubiAqZmMsIHU2NCBub2RlaWQsCi0JCQkgICBzdHJ1Y3QgZnVzZV9tb3Vu dCAqKmZtKTsKLQotLyoqCi0gKiBGaWxlLXN5c3RlbSB0ZWxscyB0aGUga2VybmVsIHRvIGludmFs aWRhdGUgY2FjaGUgZm9yIHRoZSBnaXZlbiBub2RlIGlkLgotICovCi1pbnQgZnVzZV9yZXZlcnNl X2ludmFsX2lub2RlKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1NjQgbm9kZWlkLAotCQkJICAgICBs b2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKTsKLQotLyoqCi0gKiBGaWxlLXN5c3RlbSB0ZWxscyB0 aGUga2VybmVsIHRvIGludmFsaWRhdGUgcGFyZW50IGF0dHJpYnV0ZXMgYW5kCi0gKiB0aGUgZGVu dHJ5IG1hdGNoaW5nIHBhcmVudC9uYW1lLgotICoKLSAqIElmIHRoZSBjaGlsZF9ub2RlaWQgaXMg bm9uLXplcm8gYW5kOgotICogICAgLSBtYXRjaGVzIHRoZSBpbm9kZSBudW1iZXIgZm9yIHRoZSBk ZW50cnkgbWF0Y2hpbmcgcGFyZW50L25hbWUsCi0gKiAgICAtIGlzIG5vdCBhIG1vdW50IHBvaW50 Ci0gKiAgICAtIGlzIGEgZmlsZSBvciBvYW4gZW1wdHkgZGlyZWN0b3J5Ci0gKiB0aGVuIHRoZSBk ZW50cnkgaXMgdW5oYXNoZWQgKGRfZGVsZXRlKCkpLgotICovCi1pbnQgZnVzZV9yZXZlcnNlX2lu dmFsX2VudHJ5KHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCB1NjQgcGFyZW50X25vZGVpZCwKLQkJCSAg ICAgdTY0IGNoaWxkX25vZGVpZCwgc3RydWN0IHFzdHIgKm5hbWUpOwogCiBpbnQgZnVzZV9kb19v cGVuKHN0cnVjdCBmdXNlX21vdW50ICpmbSwgdTY0IG5vZGVpZCwgc3RydWN0IGZpbGUgKmZpbGUs CiAJCSBib29sIGlzZGlyKTsKQEAgLTExNTAsNjcgKzU3NCw3IEBAIHNzaXplX3QgZnVzZV9kaXJl Y3RfaW8oc3RydWN0IGZ1c2VfaW9fcHJpdiAqaW8sIHN0cnVjdCBpb3ZfaXRlciAqaXRlciwKIAkJ ICAgICAgIGxvZmZfdCAqcHBvcywgaW50IGZsYWdzKTsKIGxvbmcgZnVzZV9kb19pb2N0bChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcsCiAJCSAg IHVuc2lnbmVkIGludCBmbGFncyk7Ci1sb25nIGZ1c2VfaW9jdGxfY29tbW9uKHN0cnVjdCBmaWxl ICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLAotCQkgICAgICAgdW5zaWduZWQgbG9uZyBhcmcsIHVu c2lnbmVkIGludCBmbGFncyk7CiBfX3BvbGxfdCBmdXNlX2ZpbGVfcG9sbChzdHJ1Y3QgZmlsZSAq ZmlsZSwgcG9sbF90YWJsZSAqd2FpdCk7CiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7CiAKLWJvb2wgZnVzZV93cml0ZV91cGRhdGVf c2l6ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgcG9zKTsKLQotaW50IGZ1c2VfZmx1c2hf dGltZXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZ1c2VfZmlsZSAqZmYpOwotaW50IGZ1 c2Vfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IHdyaXRlYmFja19jb250 cm9sICp3YmMpOwotCi1pbnQgZnVzZV9kb19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg c3RydWN0IGlhdHRyICphdHRyLAotCQkgICAgc3RydWN0IGZpbGUgKmZpbGUpOwotCi12b2lkIGZ1 c2Vfc2V0X2luaXRpYWxpemVkKHN0cnVjdCBmdXNlX2Nvbm4gKmZjKTsKLQotdm9pZCBmdXNlX3Vu bG9ja19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIGxvY2tlZCk7Ci1ib29sIGZ1c2Vf bG9ja19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKLQotaW50IGZ1c2Vfc2V0eGF0dHIoc3Ry dWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqdmFsdWUsCi0J CSAgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Ci1zc2l6ZV90IGZ1c2VfZ2V0eGF0dHIoc3RydWN0 IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqdmFsdWUsCi0JCSAgICAgIHNp emVfdCBzaXplKTsKLXNzaXplX3QgZnVzZV9saXN0eGF0dHIoc3RydWN0IGRlbnRyeSAqZW50cnks IGNoYXIgKmxpc3QsIHNpemVfdCBzaXplKTsKLWludCBmdXNlX3JlbW92ZXhhdHRyKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKm5hbWUpOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCB4YXR0 cl9oYW5kbGVyICpmdXNlX3hhdHRyX2hhbmRsZXJzW107Ci1leHRlcm4gY29uc3Qgc3RydWN0IHhh dHRyX2hhbmRsZXIgKmZ1c2VfYWNsX3hhdHRyX2hhbmRsZXJzW107Ci1leHRlcm4gY29uc3Qgc3Ry dWN0IHhhdHRyX2hhbmRsZXIgKmZ1c2Vfbm9fYWNsX3hhdHRyX2hhbmRsZXJzW107Ci0KLXN0cnVj dCBwb3NpeF9hY2w7Ci1zdHJ1Y3QgcG9zaXhfYWNsICpmdXNlX2dldF9hY2woc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IHR5cGUpOwotaW50IGZ1c2Vfc2V0X2FjbChzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgcG9zaXhfYWNsICphY2wsIGludCB0eXBlKTsKLQotCi0vKiByZWFkZGlyLmMgKi8K LWludCBmdXNlX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAq Y3R4KTsKLQotLyoqCi0gKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiBhbiBhcmd1bWVu dHMgbGlzdAotICovCi11bnNpZ25lZCBpbnQgZnVzZV9sZW5fYXJncyh1bnNpZ25lZCBpbnQgbnVt YXJncywgc3RydWN0IGZ1c2VfYXJnICphcmdzKTsKLQotLyoqCi0gKiBHZXQgdGhlIG5leHQgdW5p cXVlIElEIGZvciBhIHJlcXVlc3QKLSAqLwotdTY0IGZ1c2VfZ2V0X3VuaXF1ZShzdHJ1Y3QgZnVz ZV9pcXVldWUgKmZpcSk7Ci12b2lkIGZ1c2VfZnJlZV9jb25uKHN0cnVjdCBmdXNlX2Nvbm4gKmZj KTsKLQotLyogZGF4LmMgKi8KLQotI2RlZmluZSBGVVNFX0lTX0RBWChpbm9kZSkgKElTX0VOQUJM RUQoQ09ORklHX0ZVU0VfREFYKSAmJiBJU19EQVgoaW5vZGUpKQotCi1zc2l6ZV90IGZ1c2VfZGF4 X3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pOwotc3Np emVfdCBmdXNlX2RheF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9p dGVyICpmcm9tKTsKLWludCBmdXNlX2RheF9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Ci1pbnQgZnVzZV9kYXhfYnJlYWtfbGF5b3V0cyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB1NjQgZG1hcF9zdGFydCwgdTY0IGRtYXBfZW5kKTsKLWludCBmdXNlX2Rh eF9jb25uX2FsbG9jKHN0cnVjdCBmdXNlX2Nvbm4gKmZjLCBzdHJ1Y3QgZGF4X2RldmljZSAqZGF4 X2Rldik7Ci12b2lkIGZ1c2VfZGF4X2Nvbm5fZnJlZShzdHJ1Y3QgZnVzZV9jb25uICpmYyk7Ci1i b29sIGZ1c2VfZGF4X2lub2RlX2FsbG9jKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBm dXNlX2lub2RlICpmaSk7Ci12b2lkIGZ1c2VfZGF4X2lub2RlX2luaXQoc3RydWN0IGlub2RlICpp bm9kZSk7Ci12b2lkIGZ1c2VfZGF4X2lub2RlX2NsZWFudXAoc3RydWN0IGlub2RlICppbm9kZSk7 Ci1ib29sIGZ1c2VfZGF4X2NoZWNrX2FsaWdubWVudChzdHJ1Y3QgZnVzZV9jb25uICpmYywgdW5z aWduZWQgaW50IG1hcF9hbGlnbm1lbnQpOwotdm9pZCBmdXNlX2RheF9jYW5jZWxfd29yayhzdHJ1 Y3QgZnVzZV9jb25uICpmYyk7Ci0KLSNlbmRpZiAvKiBfRlNfRlVTRV9JX0ggKi8KKyNlbmRpZiAv KiBfTkVUX0ZVU0VfSCAqLwo= --0000000000008000b405baf8a456--