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=-4.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_PASS 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 59A2BC43381 for ; Sun, 10 Mar 2019 22:48:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EBABF20657 for ; Sun, 10 Mar 2019 22:48:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552258108; bh=26hmTdWOz9vRb5Do6uJGu897rkGN9sM+m3EJrZvb7ZI=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=OLr0ukH+3RzMxvTwsRTIkyfuV/J0oEHT1WSVlKZhy5n++r6ugomuTWc4WyPaq73HF B8mVFOm+BkNVduLji5HxW3p5sNv0Dq7zc2q0CioIB82k0gp+LOu2OEPDWyU6VI6J+B nemSyxX2vnXkmZ6aI8OnOUQOiJNRlipufCB4s9qA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727006AbfCJWs0 (ORCPT ); Sun, 10 Mar 2019 18:48:26 -0400 Received: from mail-lf1-f65.google.com ([209.85.167.65]:41761 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726758AbfCJWs0 (ORCPT ); Sun, 10 Mar 2019 18:48:26 -0400 Received: by mail-lf1-f65.google.com with SMTP id 10so1993898lfr.8 for ; Sun, 10 Mar 2019 15:48:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+LWrp2sLm52zGTJ6EoyaaUK/Wu/pZxhPjxYZ6ScXPS0=; b=MbeykUFxF/jGj+81XG3v59ICOGINTytegi3qK1++BruQWisL+7MJUQ9zaCiNSv3lel gK2WW61s1O3FOwZdPZ8FlAoLRY9l+/IwBw+IANH6whXqIGWAzql8ZpU2/9GBAjIhH99B +BPhy9g92Enw+aYGU8C1wAZwgUPgPrH7kTQ1I= 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=+LWrp2sLm52zGTJ6EoyaaUK/Wu/pZxhPjxYZ6ScXPS0=; b=Ht9f3C7mqq2EE4UrpZI22Kn8nOplDw2zA+MwPubPlR3TJtgsUMOSYn1WeAnLiAcE20 mBZ9pdH5m4p9Qu6drcQAmSeQigdh2SdHJ4i/dr3HNSXHpvPCrebdC/c4SGTgnWjHx2Hl GrCUs70JRE7e2uW2XD7N/sfIOJYj+nZ8g8DqODypjT/uW8KIDYiHdNeP+pmpBGlhu5Nf 3yCgJqvjM4zN1s7eytLjuhZER2fONQtPtNzZ3ycN7EdM0zGA6SsIal/AnWVWIO4GF9Tr cUQ+STqqx+rNuBTmQfZmLG2gFN/Qp2Tcg6OLOmaIPjdhYk4g6hgpu9kbVjT6BzTWd8tG 5lWQ== X-Gm-Message-State: APjAAAU773DEu4iBs+eh78mfww7wsNGXWa/mXAukL7VGSziRLmphTWwc 1qgpZh7ZWFSgSwhVEMz8+at1cXM0f8o= X-Google-Smtp-Source: APXvYqwb9JRIlCcJfjKR7oPoFPipbs1mQUVLiagAPrc1GBCYjmS1w24aKPp1no2xkKNgJK9Jku6jSg== X-Received: by 2002:a19:2905:: with SMTP id p5mr8123012lfp.126.1552258101864; Sun, 10 Mar 2019 15:48:21 -0700 (PDT) Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com. [209.85.208.179]) by smtp.gmail.com with ESMTPSA id k140sm531498lfe.42.2019.03.10.15.48.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Mar 2019 15:48:21 -0700 (PDT) Received: by mail-lj1-f179.google.com with SMTP id q128so2365027ljb.11 for ; Sun, 10 Mar 2019 15:48:21 -0700 (PDT) X-Received: by 2002:a2e:9786:: with SMTP id y6mr13399012lji.79.1552257636877; Sun, 10 Mar 2019 15:40:36 -0700 (PDT) MIME-Version: 1.0 References: <20190305091904.GB8256@zn.tnic> <20190305122218.GD13380@bombadil.infradead.org> <20190305134347.4be2449c@alans-desktop> <20190305145717.GD8256@zn.tnic> <20190305173134.GE8256@zn.tnic> <20190305181138.GG8256@zn.tnic> <20190305181808.GH8256@zn.tnic> In-Reply-To: From: Linus Torvalds Date: Sun, 10 Mar 2019 15:40:20 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] x86: Deprecate a.out support To: Matt Turner Cc: Borislav Petkov , Alan Cox , Matthew Wilcox , Jann Horn , Al Viro , Thomas Gleixner , kernel list , linux-fsdevel , "the arch/x86 maintainers" , Linux API , Andrew Morton , Richard Weinberger , Anton Ivanov , linux-alpha , linux-m68k@lists.linux-m68k.org Content-Type: multipart/mixed; boundary="0000000000000c01730583c5259c" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0000000000000c01730583c5259c Content-Type: text/plain; charset="UTF-8" On Sun, Mar 10, 2019 at 2:37 PM Matt Turner wrote: > > I'm not aware of a reason to keep a.out support on alpha. Hmm. I was looking at removing a.out support entirely, but it's actually fairly incestuous on alpha. For example, arch/alpha/boot/tools/objstrip.c very much has some a.out support in it. Maybe it can just be removed entirely. There's also an a.out.h include in arch/alpha/kernel/binfmt_loader.c. Finally, note that CONFIG_OSF4_COMPAT also no longer makes sense without a.out support. So this attached patch does not compile on alpha, but it's been many many years since I had an alpha to test with, so I'm stuck. Matt, can you fill in the details and complete this patch? Linus --0000000000000c01730583c5259c Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jt3i3iiz0 IGFyY2gvYWxwaGEvS2NvbmZpZyAgICAgICAgICB8ICAgMSAtCiBhcmNoL2FscGhhL2tlcm5lbC9v c2Zfc3lzLmMgfCAgMzAgLS0tLQogYXJjaC9tNjhrL0tjb25maWcgICAgICAgICAgIHwgICAxIC0K IGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICB8ICAgNyAtCiBhcmNoL3g4Ni9pYTMyL01ha2Vm aWxlICAgICAgfCAgIDIgLQogYXJjaC94ODYvaWEzMi9pYTMyX2FvdXQuYyAgIHwgMzMwIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZnMvS2NvbmZpZy5iaW5mbXQg ICAgICAgICAgIHwgIDMzIC0tLS0tCiBmcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEg LQogZnMvYmluZm10X2FvdXQuYyAgICAgICAgICAgIHwgMzQzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2Eub3V0LmggICAgICAgfCAg MTggLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCA3NjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv YXJjaC9hbHBoYS9LY29uZmlnIGIvYXJjaC9hbHBoYS9LY29uZmlnCmluZGV4IDU4NGE2ZTExNDg1 My4uOWI5NzcwYjQ1ZjM2IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL0tjb25maWcKKysrIGIvYXJj aC9hbHBoYS9LY29uZmlnCkBAIC0xMCw3ICsxMCw2IEBAIGNvbmZpZyBBTFBIQQogCXNlbGVjdCBG T1JDRV9QQ0kgaWYgIUFMUEhBX0pFTlNFTgogCXNlbGVjdCBQQ0lfRE9NQUlOUyBpZiBQQ0kKIAlz ZWxlY3QgUENJX1NZU0NBTEwgaWYgUENJCi0Jc2VsZWN0IEhBVkVfQU9VVAogCXNlbGVjdCBIQVZF X0lERQogCXNlbGVjdCBIQVZFX09QUk9GSUxFCiAJc2VsZWN0IEhBVkVfUENTUEtSX1BMQVRGT1JN CmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9vc2Zfc3lzLmMgYi9hcmNoL2FscGhhL2tl cm5lbC9vc2Zfc3lzLmMKaW5kZXggYmY0OTdiOGIwZWM2Li4wOWEwNzQ2Yzk2ODEgMTAwNjQ0Ci0t LSBhL2FyY2gvYWxwaGEva2VybmVsL29zZl9zeXMuYworKysgYi9hcmNoL2FscGhhL2tlcm5lbC9v c2Zfc3lzLmMKQEAgLTEzNDIsNDUgKzEzNDIsMTUgQEAgYXJjaF9nZXRfdW5tYXBwZWRfYXJlYShz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCXJldHVybiBhZGRyOwogfQog Ci0jaWZkZWYgQ09ORklHX09TRjRfQ09NUEFUCi0vKiBDbGVhciB0b3AgMzIgYml0cyBvZiBpb3Zf bGVuIGluIHRoZSB1c2VyJ3MgYnVmZmVyIGZvcgotICAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCB2 ZXJzaW9ucyBvZiBPU0YvMSB3aGVyZSBpb3ZfbGVuCi0gICB3YXMgZGVmaW5lZCBhcyBpbnQuICov Ci1zdGF0aWMgaW50Ci1vc2ZfZml4X2lvdl9sZW4oY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAq aW92LCB1bnNpZ25lZCBsb25nIGNvdW50KQotewotCXVuc2lnbmVkIGxvbmcgaTsKLQotCWZvciAo aSA9IDAgOyBpIDwgY291bnQgOyBpKyspIHsKLQkJaW50IF9fdXNlciAqaW92X2xlbl9oaWdoID0g KGludCBfX3VzZXIgKikmaW92W2ldLmlvdl9sZW4gKyAxOwotCi0JCWlmIChwdXRfdXNlcigwLCBp b3ZfbGVuX2hpZ2gpKQotCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JfQotCXJldHVybiAwOwotfQotI2Vu ZGlmCi0KIFNZU0NBTExfREVGSU5FMyhvc2ZfcmVhZHYsIHVuc2lnbmVkIGxvbmcsIGZkLAogCQlj b25zdCBzdHJ1Y3QgaW92ZWMgX191c2VyICosIHZlY3RvciwgdW5zaWduZWQgbG9uZywgY291bnQp CiB7Ci0jaWZkZWYgQ09ORklHX09TRjRfQ09NUEFUCi0JaWYgKHVubGlrZWx5KHBlcnNvbmFsaXR5 KGN1cnJlbnQtPnBlcnNvbmFsaXR5KSA9PSBQRVJfT1NGNCkpCi0JCWlmIChvc2ZfZml4X2lvdl9s ZW4odmVjdG9yLCBjb3VudCkpCi0JCQlyZXR1cm4gLUVGQVVMVDsKLSNlbmRpZgotCiAJcmV0dXJu IHN5c19yZWFkdihmZCwgdmVjdG9yLCBjb3VudCk7CiB9CiAKIFNZU0NBTExfREVGSU5FMyhvc2Zf d3JpdGV2LCB1bnNpZ25lZCBsb25nLCBmZCwKIAkJY29uc3Qgc3RydWN0IGlvdmVjIF9fdXNlciAq LCB2ZWN0b3IsIHVuc2lnbmVkIGxvbmcsIGNvdW50KQogewotI2lmZGVmIENPTkZJR19PU0Y0X0NP TVBBVAotCWlmICh1bmxpa2VseShwZXJzb25hbGl0eShjdXJyZW50LT5wZXJzb25hbGl0eSkgPT0g UEVSX09TRjQpKQotCQlpZiAob3NmX2ZpeF9pb3ZfbGVuKHZlY3RvciwgY291bnQpKQotCQkJcmV0 dXJuIC1FRkFVTFQ7Ci0jZW5kaWYKIAlyZXR1cm4gc3lzX3dyaXRldihmZCwgdmVjdG9yLCBjb3Vu dCk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9LY29uZmlnIGIvYXJjaC9tNjhrL0tjb25m aWcKaW5kZXggYjU0MjA2NDA4ZjkxLi42NWQyNjNjNjA2NjkgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4 ay9LY29uZmlnCisrKyBiL2FyY2gvbTY4ay9LY29uZmlnCkBAIC04LDcgKzgsNiBAQCBjb25maWcg TTY4SwogCXNlbGVjdCBBUkNIX05PX0NPSEVSRU5UX0RNQV9NTUFQIGlmICFNTVUKIAlzZWxlY3Qg QVJDSF9OT19QUkVFTVBUIGlmICFDT0xERklSRQogCXNlbGVjdCBIQVZFX0lERQotCXNlbGVjdCBI QVZFX0FPVVQgaWYgTU1VCiAJc2VsZWN0IEhBVkVfREVCVUdfQlVHVkVSQk9TRQogCXNlbGVjdCBH RU5FUklDX0lSUV9TSE9XCiAJc2VsZWN0IEdFTkVSSUNfQVRPTUlDNjQKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGMxZjliM2NmNDM3Yy4uNGE5 NDM4ZTRmYmE2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gveDg2L0tj b25maWcKQEAgLTI4MzYsMTMgKzI4MzYsNiBAQCBjb25maWcgSUEzMl9FTVVMQVRJT04KIAkgIDY0 LWJpdCBrZXJuZWwuIFlvdSBzaG91bGQgbGlrZWx5IHR1cm4gdGhpcyBvbiwgdW5sZXNzIHlvdSdy ZQogCSAgMTAwJSBzdXJlIHRoYXQgeW91IGRvbid0IGhhdmUgYW55IDMyLWJpdCBwcm9ncmFtcyBs ZWZ0LgogCi1jb25maWcgSUEzMl9BT1VUCi0JdHJpc3RhdGUgIklBMzIgYS5vdXQgc3VwcG9ydCIK LQlkZXBlbmRzIG9uIElBMzJfRU1VTEFUSU9OCi0JZGVwZW5kcyBvbiBCUk9LRU4KLQktLS1oZWxw LS0tCi0JICBTdXBwb3J0IG9sZCBhLm91dCBiaW5hcmllcyBpbiB0aGUgMzJiaXQgZW11bGF0aW9u LgotCiBjb25maWcgWDg2X1gzMgogCWJvb2wgIngzMiBBQkkgZm9yIDY0LWJpdCBtb2RlIgogCWRl cGVuZHMgb24gWDg2XzY0CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pYTMyL01ha2VmaWxlIGIvYXJj aC94ODYvaWEzMi9NYWtlZmlsZQppbmRleCBjZDQzMzliYWUwNjYuLmI5OGZlZGFhNzY0MiAxMDA2 NDQKLS0tIGEvYXJjaC94ODYvaWEzMi9NYWtlZmlsZQorKysgYi9hcmNoL3g4Ni9pYTMyL01ha2Vm aWxlCkBAIC00LDcgKzQsNSBAQAogCiBvYmotJChDT05GSUdfSUEzMl9FTVVMQVRJT04pIDo9IHN5 c19pYTMyLm8gaWEzMl9zaWduYWwubwogCi1vYmotJChDT05GSUdfSUEzMl9BT1VUKSArPSBpYTMy X2FvdXQubwotCiBhdWRpdC1jbGFzcy0kKENPTkZJR19BVURJVCkgOj0gYXVkaXQubwogb2JqLSQo Q09ORklHX0lBMzJfRU1VTEFUSU9OKSArPSAkKGF1ZGl0LWNsYXNzLXkpCmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9pYTMyL2lhMzJfYW91dC5jIGIvYXJjaC94ODYvaWEzMi9pYTMyX2FvdXQuYwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MxMzUwODRlMWViLi4wMDAwMDAwMDAwMDAKLS0t IGEvYXJjaC94ODYvaWEzMi9pYTMyX2FvdXQuYworKysgL2Rldi9udWxsCkBAIC0xLDMzMCArMCww IEBACi0vKgotICogIGEub3V0IGxvYWRlciBmb3IgeDg2LTY0Ci0gKgotICogIENvcHlyaWdodCAo QykgMTk5MSwgMTk5MiwgMTk5NiAgTGludXMgVG9ydmFsZHMKLSAqICBIYWNrZWQgdG9nZXRoZXIg YnkgQW5kaSBLbGVlbgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KLQotI2luY2x1 ZGUgPGxpbnV4L3RpbWUuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxs aW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4KLSNpbmNsdWRlIDxsaW51eC9hLm91 dC5oPgotI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+Ci0jaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+ Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Ci0jaW5jbHVkZSA8bGludXgvZnMuaD4KLSNpbmNs dWRlIDxsaW51eC9maWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RhdC5oPgotI2luY2x1ZGUgPGxp bnV4L2ZjbnRsLmg+Ci0jaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+Ci0jaW5jbHVkZSA8bGludXgv dXNlci5oPgotI2luY2x1ZGUgPGxpbnV4L2JpbmZtdHMuaD4KLSNpbmNsdWRlIDxsaW51eC9wZXJz b25hbGl0eS5oPgotI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9qaWZm aWVzLmg+Ci0jaW5jbHVkZSA8bGludXgvcGVyZl9ldmVudC5oPgotI2luY2x1ZGUgPGxpbnV4L3Nj aGVkL3Rhc2tfc3RhY2suaD4KLQotI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KLSNpbmNsdWRl IDxhc20vcGdhbGxvYy5oPgotI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+Ci0jaW5jbHVkZSA8 YXNtL3VzZXIzMi5oPgotI2luY2x1ZGUgPGFzbS9pYTMyLmg+Ci0KLSN1bmRlZiBXQVJOX09MRAot Ci1zdGF0aWMgaW50IGxvYWRfYW91dF9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKLXN0 YXRpYyBpbnQgbG9hZF9hb3V0X2xpYnJhcnkoc3RydWN0IGZpbGUgKik7Ci0KLXN0YXRpYyBzdHJ1 Y3QgbGludXhfYmluZm10IGFvdXRfZm9ybWF0ID0gewotCS5tb2R1bGUJCT0gVEhJU19NT0RVTEUs Ci0JLmxvYWRfYmluYXJ5CT0gbG9hZF9hb3V0X2JpbmFyeSwKLQkubG9hZF9zaGxpYgk9IGxvYWRf YW91dF9saWJyYXJ5LAotfTsKLQotc3RhdGljIGludCBzZXRfYnJrKHVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kKQotewotCXN0YXJ0ID0gUEFHRV9BTElHTihzdGFydCk7Ci0J ZW5kID0gUEFHRV9BTElHTihlbmQpOwotCWlmIChlbmQgPD0gc3RhcnQpCi0JCXJldHVybiAwOwot CXJldHVybiB2bV9icmsoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKLX0KLQotCi0vKgotICogY3JlYXRl X2FvdXRfdGFibGVzKCkgcGFyc2VzIHRoZSBlbnYtIGFuZCBhcmctc3RyaW5ncyBpbiBuZXcgdXNl cgotICogbWVtb3J5IGFuZCBjcmVhdGVzIHRoZSBwb2ludGVyIHRhYmxlcyBmcm9tIHRoZW0sIGFu ZCBwdXRzIHRoZWlyCi0gKiBhZGRyZXNzZXMgb24gdGhlICJzdGFjayIsIHJldHVybmluZyB0aGUg bmV3IHN0YWNrIHBvaW50ZXIgdmFsdWUuCi0gKi8KLXN0YXRpYyB1MzIgX191c2VyICpjcmVhdGVf YW91dF90YWJsZXMoY2hhciBfX3VzZXIgKnAsIHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCi17 Ci0JdTMyIF9fdXNlciAqYXJndiwgKmVudnAsICpzcDsKLQlpbnQgYXJnYyA9IGJwcm0tPmFyZ2Ms IGVudmMgPSBicHJtLT5lbnZjOwotCi0Jc3AgPSAodTMyIF9fdXNlciAqKSAoKC0odW5zaWduZWQg bG9uZylzaXplb2YodTMyKSkgJiAodW5zaWduZWQgbG9uZykgcCk7Ci0Jc3AgLT0gZW52YysxOwot CWVudnAgPSBzcDsKLQlzcCAtPSBhcmdjKzE7Ci0JYXJndiA9IHNwOwotCXB1dF91c2VyKCh1bnNp Z25lZCBsb25nKSBlbnZwLCAtLXNwKTsKLQlwdXRfdXNlcigodW5zaWduZWQgbG9uZykgYXJndiwg LS1zcCk7Ci0JcHV0X3VzZXIoYXJnYywgLS1zcCk7Ci0JY3VycmVudC0+bW0tPmFyZ19zdGFydCA9 ICh1bnNpZ25lZCBsb25nKSBwOwotCXdoaWxlIChhcmdjLS0gPiAwKSB7Ci0JCWNoYXIgYzsKLQot CQlwdXRfdXNlcigodTMyKSh1bnNpZ25lZCBsb25nKXAsIGFyZ3YrKyk7Ci0JCWRvIHsKLQkJCWdl dF91c2VyKGMsIHArKyk7Ci0JCX0gd2hpbGUgKGMpOwotCX0KLQlwdXRfdXNlcigwLCBhcmd2KTsK LQljdXJyZW50LT5tbS0+YXJnX2VuZCA9IGN1cnJlbnQtPm1tLT5lbnZfc3RhcnQgPSAodW5zaWdu ZWQgbG9uZykgcDsKLQl3aGlsZSAoZW52Yy0tID4gMCkgewotCQljaGFyIGM7Ci0KLQkJcHV0X3Vz ZXIoKHUzMikodW5zaWduZWQgbG9uZylwLCBlbnZwKyspOwotCQlkbyB7Ci0JCQlnZXRfdXNlcihj LCBwKyspOwotCQl9IHdoaWxlIChjKTsKLQl9Ci0JcHV0X3VzZXIoMCwgZW52cCk7Ci0JY3VycmVu dC0+bW0tPmVudl9lbmQgPSAodW5zaWduZWQgbG9uZykgcDsKLQlyZXR1cm4gc3A7Ci19Ci0KLS8q Ci0gKiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB1c2VkIHRvIGxvYWQgYS5vdXQgc3R5bGUgZXhl Y3V0YWJsZXMgYW5kIHNoYXJlZAotICogbGlicmFyaWVzLiAgVGhlcmUgaXMgbm8gYmluYXJ5IGRl cGVuZGVudCBjb2RlIGFueXdoZXJlIGVsc2UuCi0gKi8KLXN0YXRpYyBpbnQgbG9hZF9hb3V0X2Jp bmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQotewotCXVuc2lnbmVkIGxvbmcgZXJyb3Is IGZkX29mZnNldCwgcmxpbTsKLQlzdHJ1Y3QgcHRfcmVncyAqcmVncyA9IGN1cnJlbnRfcHRfcmVn cygpOwotCXN0cnVjdCBleGVjIGV4OwotCWludCByZXR2YWw7Ci0KLQlleCA9ICooKHN0cnVjdCBl eGVjICopIGJwcm0tPmJ1Zik7CQkvKiBleGVjLWhlYWRlciAqLwotCWlmICgoTl9NQUdJQyhleCkg IT0gWk1BR0lDICYmIE5fTUFHSUMoZXgpICE9IE9NQUdJQyAmJgotCSAgICAgTl9NQUdJQyhleCkg IT0gUU1BR0lDICYmIE5fTUFHSUMoZXgpICE9IE5NQUdJQykgfHwKLQkgICAgTl9UUlNJWkUoZXgp IHx8IE5fRFJTSVpFKGV4KSB8fAotCSAgICBpX3NpemVfcmVhZChmaWxlX2lub2RlKGJwcm0tPmZp bGUpKSA8Ci0JICAgIGV4LmFfdGV4dCtleC5hX2RhdGErTl9TWU1TSVpFKGV4KStOX1RYVE9GRihl eCkpIHsKLQkJcmV0dXJuIC1FTk9FWEVDOwotCX0KLQotCWZkX29mZnNldCA9IE5fVFhUT0ZGKGV4 KTsKLQotCS8qIENoZWNrIGluaXRpYWwgbGltaXRzLiBUaGlzIGF2b2lkcyBsZXR0aW5nIHBlb3Bs ZSBjaXJjdW12ZW50Ci0JICogc2l6ZSBsaW1pdHMgaW1wb3NlZCBvbiB0aGVtIGJ5IGNyZWF0aW5n IHByb2dyYW1zIHdpdGggbGFyZ2UKLQkgKiBhcnJheXMgaW4gdGhlIGRhdGEgb3IgYnNzLgotCSAq LwotCXJsaW0gPSBybGltaXQoUkxJTUlUX0RBVEEpOwotCWlmIChybGltID49IFJMSU1fSU5GSU5J VFkpCi0JCXJsaW0gPSB+MDsKLQlpZiAoZXguYV9kYXRhICsgZXguYV9ic3MgPiBybGltKQotCQly ZXR1cm4gLUVOT01FTTsKLQotCS8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBy dW5uaW5nIGV4ZWN1dGFibGUgKi8KLQlyZXR2YWwgPSBmbHVzaF9vbGRfZXhlYyhicHJtKTsKLQlp ZiAocmV0dmFsKQotCQlyZXR1cm4gcmV0dmFsOwotCi0JLyogT0ssIFRoaXMgaXMgdGhlIHBvaW50 IG9mIG5vIHJldHVybiAqLwotCXNldF9wZXJzb25hbGl0eShQRVJfTElOVVgpOwotCXNldF9wZXJz b25hbGl0eV9pYTMyKGZhbHNlKTsKLQotCXNldHVwX25ld19leGVjKGJwcm0pOwotCi0JcmVncy0+ Y3MgPSBfX1VTRVIzMl9DUzsKLQlyZWdzLT5yOCA9IHJlZ3MtPnI5ID0gcmVncy0+cjEwID0gcmVn cy0+cjExID0gcmVncy0+cjEyID0KLQkJcmVncy0+cjEzID0gcmVncy0+cjE0ID0gcmVncy0+cjE1 ID0gMDsKLQotCWN1cnJlbnQtPm1tLT5lbmRfY29kZSA9IGV4LmFfdGV4dCArCi0JCShjdXJyZW50 LT5tbS0+c3RhcnRfY29kZSA9IE5fVFhUQUREUihleCkpOwotCWN1cnJlbnQtPm1tLT5lbmRfZGF0 YSA9IGV4LmFfZGF0YSArCi0JCShjdXJyZW50LT5tbS0+c3RhcnRfZGF0YSA9IE5fREFUQUREUihl eCkpOwotCWN1cnJlbnQtPm1tLT5icmsgPSBleC5hX2JzcyArCi0JCShjdXJyZW50LT5tbS0+c3Rh cnRfYnJrID0gTl9CU1NBRERSKGV4KSk7Ci0KLQlyZXR2YWwgPSBzZXR1cF9hcmdfcGFnZXMoYnBy bSwgSUEzMl9TVEFDS19UT1AsIEVYU1RBQ0tfREVGQVVMVCk7Ci0JaWYgKHJldHZhbCA8IDApCi0J CXJldHVybiByZXR2YWw7Ci0KLQlpbnN0YWxsX2V4ZWNfY3JlZHMoYnBybSk7Ci0KLQlpZiAoTl9N QUdJQyhleCkgPT0gT01BR0lDKSB7Ci0JCXVuc2lnbmVkIGxvbmcgdGV4dF9hZGRyLCBtYXBfc2l6 ZTsKLQotCQl0ZXh0X2FkZHIgPSBOX1RYVEFERFIoZXgpOwotCQltYXBfc2l6ZSA9IGV4LmFfdGV4 dCtleC5hX2RhdGE7Ci0KLQkJZXJyb3IgPSB2bV9icmsodGV4dF9hZGRyICYgUEFHRV9NQVNLLCBt YXBfc2l6ZSk7Ci0KLQkJaWYgKGVycm9yKQotCQkJcmV0dXJuIGVycm9yOwotCi0JCWVycm9yID0g cmVhZF9jb2RlKGJwcm0tPmZpbGUsIHRleHRfYWRkciwgMzIsCi0JCQkJICBleC5hX3RleHQgKyBl eC5hX2RhdGEpOwotCQlpZiAoKHNpZ25lZCBsb25nKWVycm9yIDwgMCkKLQkJCXJldHVybiBlcnJv cjsKLQl9IGVsc2UgewotI2lmZGVmIFdBUk5fT0xECi0JCXN0YXRpYyB1bnNpZ25lZCBsb25nIGVy cm9yX3RpbWUsIGVycm9yX3RpbWUyOwotCQlpZiAoKGV4LmFfdGV4dCAmIDB4ZmZmIHx8IGV4LmFf ZGF0YSAmIDB4ZmZmKSAmJgotCQkgICAgKE5fTUFHSUMoZXgpICE9IE5NQUdJQykgJiYKLQkJCQl0 aW1lX2FmdGVyKGppZmZpZXMsIGVycm9yX3RpbWUyICsgNSpIWikpIHsKLQkJCXByaW50ayhLRVJO X05PVElDRSAiZXhlY3V0YWJsZSBub3QgcGFnZSBhbGlnbmVkXG4iKTsKLQkJCWVycm9yX3RpbWUy ID0gamlmZmllczsKLQkJfQotCi0JCWlmICgoZmRfb2Zmc2V0ICYgflBBR0VfTUFTSykgIT0gMCAm JgotCQkJICAgIHRpbWVfYWZ0ZXIoamlmZmllcywgZXJyb3JfdGltZSArIDUqSFopKSB7Ci0JCQlw cmludGsoS0VSTl9XQVJOSU5HCi0JCQkgICAgICAgImZkX29mZnNldCBpcyBub3QgcGFnZSBhbGln bmVkLiBQbGVhc2UgY29udmVydCAiCi0JCQkgICAgICAgInByb2dyYW06ICVwRFxuIiwKLQkJCSAg ICAgICBicHJtLT5maWxlKTsKLQkJCWVycm9yX3RpbWUgPSBqaWZmaWVzOwotCQl9Ci0jZW5kaWYK LQotCQlpZiAoIWJwcm0tPmZpbGUtPmZfb3AtPm1tYXAgfHwgKGZkX29mZnNldCAmIH5QQUdFX01B U0spICE9IDApIHsKLQkJCWVycm9yID0gdm1fYnJrKE5fVFhUQUREUihleCksIGV4LmFfdGV4dCtl eC5hX2RhdGEpOwotCQkJaWYgKGVycm9yKQotCQkJCXJldHVybiBlcnJvcjsKLQotCQkJcmVhZF9j b2RlKGJwcm0tPmZpbGUsIE5fVFhUQUREUihleCksIGZkX29mZnNldCwKLQkJCQkJZXguYV90ZXh0 K2V4LmFfZGF0YSk7Ci0JCQlnb3RvIGJleW9uZF9pZjsKLQkJfQotCi0JCWVycm9yID0gdm1fbW1h cChicHJtLT5maWxlLCBOX1RYVEFERFIoZXgpLCBleC5hX3RleHQsCi0JCQkJUFJPVF9SRUFEIHwg UFJPVF9FWEVDLAotCQkJCU1BUF9GSVhFRCB8IE1BUF9QUklWQVRFIHwgTUFQX0RFTllXUklURSB8 Ci0JCQkJTUFQX0VYRUNVVEFCTEUgfCBNQVBfMzJCSVQsCi0JCQkJZmRfb2Zmc2V0KTsKLQotCQlp ZiAoZXJyb3IgIT0gTl9UWFRBRERSKGV4KSkKLQkJCXJldHVybiBlcnJvcjsKLQotCQllcnJvciA9 IHZtX21tYXAoYnBybS0+ZmlsZSwgTl9EQVRBRERSKGV4KSwgZXguYV9kYXRhLAotCQkJCVBST1Rf UkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsCi0JCQkJTUFQX0ZJWEVEIHwgTUFQX1BSSVZB VEUgfCBNQVBfREVOWVdSSVRFIHwKLQkJCQlNQVBfRVhFQ1VUQUJMRSB8IE1BUF8zMkJJVCwKLQkJ CQlmZF9vZmZzZXQgKyBleC5hX3RleHQpOwotCQlpZiAoZXJyb3IgIT0gTl9EQVRBRERSKGV4KSkK LQkJCXJldHVybiBlcnJvcjsKLQl9Ci0KLWJleW9uZF9pZjoKLQllcnJvciA9IHNldF9icmsoY3Vy cmVudC0+bW0tPnN0YXJ0X2JyaywgY3VycmVudC0+bW0tPmJyayk7Ci0JaWYgKGVycm9yKQotCQly ZXR1cm4gZXJyb3I7Ci0KLQlzZXRfYmluZm10KCZhb3V0X2Zvcm1hdCk7Ci0KLQljdXJyZW50LT5t bS0+c3RhcnRfc3RhY2sgPQotCQkodW5zaWduZWQgbG9uZyljcmVhdGVfYW91dF90YWJsZXMoKGNo YXIgX191c2VyICopYnBybS0+cCwgYnBybSk7Ci0JLyogc3RhcnQgdGhyZWFkICovCi0JbG9hZHNl Z21lbnQoZnMsIDApOwotCWxvYWRzZWdtZW50KGRzLCBfX1VTRVIzMl9EUyk7Ci0JbG9hZHNlZ21l bnQoZXMsIF9fVVNFUjMyX0RTKTsKLQlsb2FkX2dzX2luZGV4KDApOwotCShyZWdzKS0+aXAgPSBl eC5hX2VudHJ5OwotCShyZWdzKS0+c3AgPSBjdXJyZW50LT5tbS0+c3RhcnRfc3RhY2s7Ci0JKHJl Z3MpLT5mbGFncyA9IDB4MjAwOwotCShyZWdzKS0+Y3MgPSBfX1VTRVIzMl9DUzsKLQkocmVncykt PnNzID0gX19VU0VSMzJfRFM7Ci0JcmVncy0+cjggPSByZWdzLT5yOSA9IHJlZ3MtPnIxMCA9IHJl Z3MtPnIxMSA9Ci0JcmVncy0+cjEyID0gcmVncy0+cjEzID0gcmVncy0+cjE0ID0gcmVncy0+cjE1 ID0gMDsKLQlzZXRfZnMoVVNFUl9EUyk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgbG9h ZF9hb3V0X2xpYnJhcnkoc3RydWN0IGZpbGUgKmZpbGUpCi17Ci0JdW5zaWduZWQgbG9uZyBic3Ms IHN0YXJ0X2FkZHIsIGxlbiwgZXJyb3I7Ci0JaW50IHJldHZhbDsKLQlzdHJ1Y3QgZXhlYyBleDsK LQlsb2ZmX3QgcG9zID0gMDsKLQotCXJldHZhbCA9IC1FTk9FWEVDOwotCWVycm9yID0ga2VybmVs X3JlYWQoZmlsZSwgJmV4LCBzaXplb2YoZXgpLCAmcG9zKTsKLQlpZiAoZXJyb3IgIT0gc2l6ZW9m KGV4KSkKLQkJZ290byBvdXQ7Ci0KLQkvKiBXZSBjb21lIGluIGhlcmUgZm9yIHRoZSByZWd1bGFy IGEub3V0IHN0eWxlIG9mIHNoYXJlZCBsaWJyYXJpZXMgKi8KLQlpZiAoKE5fTUFHSUMoZXgpICE9 IFpNQUdJQyAmJiBOX01BR0lDKGV4KSAhPSBRTUFHSUMpIHx8IE5fVFJTSVpFKGV4KSB8fAotCSAg ICBOX0RSU0laRShleCkgfHwgKChleC5hX2VudHJ5ICYgMHhmZmYpICYmIE5fTUFHSUMoZXgpID09 IFpNQUdJQykgfHwKLQkgICAgaV9zaXplX3JlYWQoZmlsZV9pbm9kZShmaWxlKSkgPAotCSAgICBl eC5hX3RleHQrZXguYV9kYXRhK05fU1lNU0laRShleCkrTl9UWFRPRkYoZXgpKSB7Ci0JCWdvdG8g b3V0OwotCX0KLQotCWlmIChOX0ZMQUdTKGV4KSkKLQkJZ290byBvdXQ7Ci0KLQkvKiBGb3IgIFFN QUdJQywgdGhlIHN0YXJ0aW5nIGFkZHJlc3MgaXMgMHgyMCBpbnRvIHRoZSBwYWdlLiAgV2UgbWFz awotCSAgIHRoaXMgb2ZmIHRvIGdldCB0aGUgc3RhcnRpbmcgYWRkcmVzcyBmb3IgdGhlIHBhZ2Ug Ki8KLQotCXN0YXJ0X2FkZHIgPSAgZXguYV9lbnRyeSAmIDB4ZmZmZmYwMDA7Ci0KLQlpZiAoKE5f VFhUT0ZGKGV4KSAmIH5QQUdFX01BU0spICE9IDApIHsKLSNpZmRlZiBXQVJOX09MRAotCQlzdGF0 aWMgdW5zaWduZWQgbG9uZyBlcnJvcl90aW1lOwotCQlpZiAodGltZV9hZnRlcihqaWZmaWVzLCBl cnJvcl90aW1lICsgNSpIWikpIHsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcKLQkJCSAgICAgICAi Tl9UWFRPRkYgaXMgbm90IHBhZ2UgYWxpZ25lZC4gUGxlYXNlIGNvbnZlcnQgIgotCQkJICAgICAg ICJsaWJyYXJ5OiAlcERcbiIsCi0JCQkgICAgICAgZmlsZSk7Ci0JCQllcnJvcl90aW1lID0gamlm ZmllczsKLQkJfQotI2VuZGlmCi0JCXJldHZhbCA9IHZtX2JyayhzdGFydF9hZGRyLCBleC5hX3Rl eHQgKyBleC5hX2RhdGEgKyBleC5hX2Jzcyk7Ci0JCWlmIChyZXR2YWwpCi0JCQlnb3RvIG91dDsK LQotCQlyZWFkX2NvZGUoZmlsZSwgc3RhcnRfYWRkciwgTl9UWFRPRkYoZXgpLAotCQkJICBleC5h X3RleHQgKyBleC5hX2RhdGEpOwotCQlyZXR2YWwgPSAwOwotCQlnb3RvIG91dDsKLQl9Ci0JLyog Tm93IHVzZSBtbWFwIHRvIG1hcCB0aGUgbGlicmFyeSBpbnRvIG1lbW9yeS4gKi8KLQllcnJvciA9 IHZtX21tYXAoZmlsZSwgc3RhcnRfYWRkciwgZXguYV90ZXh0ICsgZXguYV9kYXRhLAotCQkJUFJP VF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQywKLQkJCU1BUF9GSVhFRCB8IE1BUF9QUklW QVRFIHwgTUFQX0RFTllXUklURSB8IE1BUF8zMkJJVCwKLQkJCU5fVFhUT0ZGKGV4KSk7Ci0JcmV0 dmFsID0gZXJyb3I7Ci0JaWYgKGVycm9yICE9IHN0YXJ0X2FkZHIpCi0JCWdvdG8gb3V0OwotCi0J bGVuID0gUEFHRV9BTElHTihleC5hX3RleHQgKyBleC5hX2RhdGEpOwotCWJzcyA9IGV4LmFfdGV4 dCArIGV4LmFfZGF0YSArIGV4LmFfYnNzOwotCWlmIChic3MgPiBsZW4pIHsKLQkJcmV0dmFsID0g dm1fYnJrKHN0YXJ0X2FkZHIgKyBsZW4sIGJzcyAtIGxlbik7Ci0JCWlmIChyZXR2YWwpCi0JCQln b3RvIG91dDsKLQl9Ci0JcmV0dmFsID0gMDsKLW91dDoKLQlyZXR1cm4gcmV0dmFsOwotfQotCi1z dGF0aWMgaW50IF9faW5pdCBpbml0X2FvdXRfYmluZm10KHZvaWQpCi17Ci0JcmVnaXN0ZXJfYmlu Zm10KCZhb3V0X2Zvcm1hdCk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBl eGl0X2FvdXRfYmluZm10KHZvaWQpCi17Ci0JdW5yZWdpc3Rlcl9iaW5mbXQoJmFvdXRfZm9ybWF0 KTsKLX0KLQotbW9kdWxlX2luaXQoaW5pdF9hb3V0X2JpbmZtdCk7Ci1tb2R1bGVfZXhpdChleGl0 X2FvdXRfYmluZm10KTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2ZzL0tj b25maWcuYmluZm10IGIvZnMvS2NvbmZpZy5iaW5mbXQKaW5kZXggYjc5NWY4ZGE4MWYzLi5iNGRm ZDJhOTJkOTUgMTAwNjQ0Ci0tLSBhL2ZzL0tjb25maWcuYmluZm10CisrKyBiL2ZzL0tjb25maWcu YmluZm10CkBAIC0xMDksMzkgKzEwOSw2IEBAIGNvbmZpZyBCSU5GTVRfU0hBUkVEX0ZMQVQKIAlo ZWxwCiAJICBTdXBwb3J0IEZMQVQgc2hhcmVkIGxpYnJhcmllcwogCi1jb25maWcgSEFWRV9BT1VU Ci0gICAgICAgZGVmX2Jvb2wgbgotCi1jb25maWcgQklORk1UX0FPVVQKLQl0cmlzdGF0ZSAiS2Vy bmVsIHN1cHBvcnQgZm9yIGEub3V0IGFuZCBFQ09GRiBiaW5hcmllcyIKLQlkZXBlbmRzIG9uIEhB VkVfQU9VVAotCS0tLWhlbHAtLS0KLQkgIEEub3V0IChBc3NlbWJsZXIuT1VUcHV0KSBpcyBhIHNl dCBvZiBmb3JtYXRzIGZvciBsaWJyYXJpZXMgYW5kCi0JICBleGVjdXRhYmxlcyB1c2VkIGluIHRo ZSBlYXJsaWVzdCB2ZXJzaW9ucyBvZiBVTklYLiAgTGludXggdXNlZAotCSAgdGhlIGEub3V0IGZv cm1hdHMgUU1BR0lDIGFuZCBaTUFHSUMgdW50aWwgdGhleSB3ZXJlIHJlcGxhY2VkCi0JICB3aXRo IHRoZSBFTEYgZm9ybWF0LgotCi0JICBUaGUgY29udmVyc2lvbiB0byBFTEYgc3RhcnRlZCBpbiAx OTk1LiAgVGhpcyBvcHRpb24gaXMgcHJpbWFyaWx5Ci0JICBwcm92aWRlZCBmb3IgaGlzdG9yaWNh bCBpbnRlcmVzdCBhbmQgZm9yIHRoZSBiZW5lZml0IG9mIHRob3NlCi0JICB3aG8gbmVlZCB0byBy dW4gYmluYXJpZXMgZnJvbSB0aGF0IGVyYS4KLQotCSAgTW9zdCBwZW9wbGUgc2hvdWxkIGFuc3dl ciBOIGhlcmUuICBJZiB5b3UgdGhpbmsgeW91IG1heSBoYXZlCi0JICBvY2Nhc2lvbmFsIHVzZSBm b3IgdGhpcyBmb3JtYXQsIGVuYWJsZSBtb2R1bGUgc3VwcG9ydCBhYm92ZQotCSAgYW5kIGFuc3dl ciBNIGhlcmUgdG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUgY2FsbGVkCi0JICBi aW5mbXRfYW91dC4KLQotCSAgSWYgYW55IGNydWNpYWwgY29tcG9uZW50cyBvZiB5b3VyIHN5c3Rl bSAoc3VjaCBhcyAvc2Jpbi9pbml0Ci0JICBvciAvbGliL2xkLnNvKSBhcmUgc3RpbGwgaW4gYS5v dXQgZm9ybWF0LCB5b3Ugd2lsbCBoYXZlIHRvCi0JICBzYXkgWSBoZXJlLgotCi1jb25maWcgT1NG NF9DT01QQVQKLQlib29sICJPU0YvMSB2NCByZWFkdi93cml0ZXYgY29tcGF0aWJpbGl0eSIKLQlk ZXBlbmRzIG9uIEFMUEhBICYmIEJJTkZNVF9BT1VUCi0JaGVscAotCSAgU2F5IFkgaWYgeW91IGFy ZSB1c2luZyBPU0YvMSBiaW5hcmllcyAobGlrZSBOZXRzY2FwZSBhbmQgQWNyb2JhdCkKLQkgIHdp dGggdjQgc2hhcmVkIGxpYnJhcmllcyBmcmVlbHkgYXZhaWxhYmxlIGZyb20gQ29tcGFxLiBJZiB5 b3UncmUKLQkgIGdvaW5nIHRvIHVzZSBzaGFyZWQgbGlicmFyaWVzIGZyb20gVHJ1NjQgdmVyc2lv biA1LjAgb3IgbGF0ZXIsIHNheSBOLgotCiBjb25maWcgQklORk1UX0VNODYKIAl0cmlzdGF0ZSAi S2VybmVsIHN1cHBvcnQgZm9yIExpbnV4L0ludGVsIEVMRiBiaW5hcmllcyIKIAlkZXBlbmRzIG9u IEFMUEhBCmRpZmYgLS1naXQgYS9mcy9NYWtlZmlsZSBiL2ZzL01ha2VmaWxlCmluZGV4IDdiZmY5 YWJlY2ZhNC4uMDEwNWUzNDk2MjU5IDEwMDY0NAotLS0gYS9mcy9NYWtlZmlsZQorKysgYi9mcy9N YWtlZmlsZQpAQCAtMzYsNyArMzYsNiBAQCBvYmotJChDT05GSUdfRlNfREFYKQkJKz0gZGF4Lm8K IG9iai0kKENPTkZJR19GU19FTkNSWVBUSU9OKQkrPSBjcnlwdG8vCiBvYmotJChDT05GSUdfRklM RV9MT0NLSU5HKSAgICAgICs9IGxvY2tzLm8KIG9iai0kKENPTkZJR19DT01QQVQpCQkrPSBjb21w YXQubyBjb21wYXRfaW9jdGwubwotb2JqLSQoQ09ORklHX0JJTkZNVF9BT1VUKQkrPSBiaW5mbXRf YW91dC5vCiBvYmotJChDT05GSUdfQklORk1UX0VNODYpCSs9IGJpbmZtdF9lbTg2Lm8KIG9iai0k KENPTkZJR19CSU5GTVRfTUlTQykJKz0gYmluZm10X21pc2Mubwogb2JqLSQoQ09ORklHX0JJTkZN VF9TQ1JJUFQpCSs9IGJpbmZtdF9zY3JpcHQubwpkaWZmIC0tZ2l0IGEvZnMvYmluZm10X2FvdXQu YyBiL2ZzL2JpbmZtdF9hb3V0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZWZk ODdlYjRiNC4uMDAwMDAwMDAwMDAwCi0tLSBhL2ZzL2JpbmZtdF9hb3V0LmMKKysrIC9kZXYvbnVs bApAQCAtMSwzNDMgKzAsMCBAQAotLyoKLSAqICBsaW51eC9mcy9iaW5mbXRfYW91dC5jCi0gKgot ICogIENvcHlyaWdodCAoQykgMTk5MSwgMTk5MiwgMTk5NiAgTGludXMgVG9ydmFsZHMKLSAqLwot Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0KLSNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0j aW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRl IDxsaW51eC9tbWFuLmg+Ci0jaW5jbHVkZSA8bGludXgvYS5vdXQuaD4KLSNpbmNsdWRlIDxsaW51 eC9lcnJuby5oPgotI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgotI2luY2x1ZGUgPGxpbnV4L3N0 cmluZy5oPgotI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Ci0jaW5jbHVkZSA8bGludXgvZmlsZS5oPgot I2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KLSNpbmNsdWRlIDxsaW51eC9mY250bC5oPgotI2luY2x1 ZGUgPGxpbnV4L3B0cmFjZS5oPgotI2luY2x1ZGUgPGxpbnV4L3VzZXIuaD4KLSNpbmNsdWRlIDxs aW51eC9iaW5mbXRzLmg+Ci0jaW5jbHVkZSA8bGludXgvcGVyc29uYWxpdHkuaD4KLSNpbmNsdWRl IDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8bGludXgvY29yZWR1bXAuaD4KLSNpbmNsdWRlIDxs aW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvc2NoZWQvdGFza19zdGFjay5oPgotCi0jaW5j bHVkZSA8bGludXgvdWFjY2Vzcy5oPgotI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+Ci0KLXN0 YXRpYyBpbnQgbG9hZF9hb3V0X2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICopOwotc3RhdGlj IGludCBsb2FkX2FvdXRfbGlicmFyeShzdHJ1Y3QgZmlsZSopOwotCi1zdGF0aWMgc3RydWN0IGxp bnV4X2JpbmZtdCBhb3V0X2Zvcm1hdCA9IHsKLQkubW9kdWxlCQk9IFRISVNfTU9EVUxFLAotCS5s b2FkX2JpbmFyeQk9IGxvYWRfYW91dF9iaW5hcnksCi0JLmxvYWRfc2hsaWIJPSBsb2FkX2FvdXRf bGlicmFyeSwKLX07Ci0KLSNkZWZpbmUgQkFEX0FERFIoeCkJKCh1bnNpZ25lZCBsb25nKSh4KSA+ PSBUQVNLX1NJWkUpCi0KLXN0YXRpYyBpbnQgc2V0X2Jyayh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1 bnNpZ25lZCBsb25nIGVuZCkKLXsKLQlzdGFydCA9IFBBR0VfQUxJR04oc3RhcnQpOwotCWVuZCA9 IFBBR0VfQUxJR04oZW5kKTsKLQlpZiAoZW5kID4gc3RhcnQpCi0JCXJldHVybiB2bV9icmsoc3Rh cnQsIGVuZCAtIHN0YXJ0KTsKLQlyZXR1cm4gMDsKLX0KLQotLyoKLSAqIGNyZWF0ZV9hb3V0X3Rh YmxlcygpIHBhcnNlcyB0aGUgZW52LSBhbmQgYXJnLXN0cmluZ3MgaW4gbmV3IHVzZXIKLSAqIG1l bW9yeSBhbmQgY3JlYXRlcyB0aGUgcG9pbnRlciB0YWJsZXMgZnJvbSB0aGVtLCBhbmQgcHV0cyB0 aGVpcgotICogYWRkcmVzc2VzIG9uIHRoZSAic3RhY2siLCByZXR1cm5pbmcgdGhlIG5ldyBzdGFj ayBwb2ludGVyIHZhbHVlLgotICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX3VzZXIgKmNyZWF0 ZV9hb3V0X3RhYmxlcyhjaGFyIF9fdXNlciAqcCwgc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0p Ci17Ci0JY2hhciBfX3VzZXIgKiBfX3VzZXIgKmFyZ3Y7Ci0JY2hhciBfX3VzZXIgKiBfX3VzZXIg KmVudnA7Ci0JdW5zaWduZWQgbG9uZyBfX3VzZXIgKnNwOwotCWludCBhcmdjID0gYnBybS0+YXJn YzsKLQlpbnQgZW52YyA9IGJwcm0tPmVudmM7Ci0KLQlzcCA9ICh2b2lkIF9fdXNlciAqKSgoLSh1 bnNpZ25lZCBsb25nKXNpemVvZihjaGFyICopKSAmICh1bnNpZ25lZCBsb25nKSBwKTsKLSNpZmRl ZiBfX2FscGhhX18KLS8qIHdoZWUuLiB0ZXN0LXByb2dyYW1zIGFyZSBzbyBtdWNoIGZ1bi4gKi8K LQlwdXRfdXNlcigwLCAtLXNwKTsKLQlwdXRfdXNlcigwLCAtLXNwKTsKLQlpZiAoYnBybS0+bG9h ZGVyKSB7Ci0JCXB1dF91c2VyKDAsIC0tc3ApOwotCQlwdXRfdXNlcigxMDAzLCAtLXNwKTsKLQkJ cHV0X3VzZXIoYnBybS0+bG9hZGVyLCAtLXNwKTsKLQkJcHV0X3VzZXIoMTAwMiwgLS1zcCk7Ci0J fQotCXB1dF91c2VyKGJwcm0tPmV4ZWMsIC0tc3ApOwotCXB1dF91c2VyKDEwMDEsIC0tc3ApOwot I2VuZGlmCi0Jc3AgLT0gZW52YysxOwotCWVudnAgPSAoY2hhciBfX3VzZXIgKiBfX3VzZXIgKikg c3A7Ci0Jc3AgLT0gYXJnYysxOwotCWFyZ3YgPSAoY2hhciBfX3VzZXIgKiBfX3VzZXIgKikgc3A7 Ci0jaWZuZGVmIF9fYWxwaGFfXwotCXB1dF91c2VyKCh1bnNpZ25lZCBsb25nKSBlbnZwLC0tc3Ap OwotCXB1dF91c2VyKCh1bnNpZ25lZCBsb25nKSBhcmd2LC0tc3ApOwotI2VuZGlmCi0JcHV0X3Vz ZXIoYXJnYywtLXNwKTsKLQljdXJyZW50LT5tbS0+YXJnX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp IHA7Ci0Jd2hpbGUgKGFyZ2MtLT4wKSB7Ci0JCWNoYXIgYzsKLQkJcHV0X3VzZXIocCxhcmd2Kysp OwotCQlkbyB7Ci0JCQlnZXRfdXNlcihjLHArKyk7Ci0JCX0gd2hpbGUgKGMpOwotCX0KLQlwdXRf dXNlcihOVUxMLGFyZ3YpOwotCWN1cnJlbnQtPm1tLT5hcmdfZW5kID0gY3VycmVudC0+bW0tPmVu dl9zdGFydCA9ICh1bnNpZ25lZCBsb25nKSBwOwotCXdoaWxlIChlbnZjLS0+MCkgewotCQljaGFy IGM7Ci0JCXB1dF91c2VyKHAsZW52cCsrKTsKLQkJZG8gewotCQkJZ2V0X3VzZXIoYyxwKyspOwot CQl9IHdoaWxlIChjKTsKLQl9Ci0JcHV0X3VzZXIoTlVMTCxlbnZwKTsKLQljdXJyZW50LT5tbS0+ ZW52X2VuZCA9ICh1bnNpZ25lZCBsb25nKSBwOwotCXJldHVybiBzcDsKLX0KLQotLyoKLSAqIFRo ZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gbG9hZCBhLm91dCBzdHlsZSBleGVjdXRhYmxl cyBhbmQgc2hhcmVkCi0gKiBsaWJyYXJpZXMuICBUaGVyZSBpcyBubyBiaW5hcnkgZGVwZW5kZW50 IGNvZGUgYW55d2hlcmUgZWxzZS4KLSAqLwotCi1zdGF0aWMgaW50IGxvYWRfYW91dF9iaW5hcnko c3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pCi17Ci0Jc3RydWN0IHB0X3JlZ3MgKnJlZ3MgPSBj dXJyZW50X3B0X3JlZ3MoKTsKLQlzdHJ1Y3QgZXhlYyBleDsKLQl1bnNpZ25lZCBsb25nIGVycm9y OwotCXVuc2lnbmVkIGxvbmcgZmRfb2Zmc2V0OwotCXVuc2lnbmVkIGxvbmcgcmxpbTsKLQlpbnQg cmV0dmFsOwotCi0JZXggPSAqKChzdHJ1Y3QgZXhlYyAqKSBicHJtLT5idWYpOwkJLyogZXhlYy1o ZWFkZXIgKi8KLQlpZiAoKE5fTUFHSUMoZXgpICE9IFpNQUdJQyAmJiBOX01BR0lDKGV4KSAhPSBP TUFHSUMgJiYKLQkgICAgIE5fTUFHSUMoZXgpICE9IFFNQUdJQyAmJiBOX01BR0lDKGV4KSAhPSBO TUFHSUMpIHx8Ci0JICAgIE5fVFJTSVpFKGV4KSB8fCBOX0RSU0laRShleCkgfHwKLQkgICAgaV9z aXplX3JlYWQoZmlsZV9pbm9kZShicHJtLT5maWxlKSkgPCBleC5hX3RleHQrZXguYV9kYXRhK05f U1lNU0laRShleCkrTl9UWFRPRkYoZXgpKSB7Ci0JCXJldHVybiAtRU5PRVhFQzsKLQl9Ci0KLQkv KgotCSAqIFJlcXVpcmVzIGEgbW1hcCBoYW5kbGVyLiBUaGlzIHByZXZlbnRzIHBlb3BsZSBmcm9t IHVzaW5nIGEub3V0Ci0JICogYXMgcGFydCBvZiBhbiBleHBsb2l0IGF0dGFjayBhZ2FpbnN0IC9w cm9jLXJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLgotCSAqLwotCWlmICghYnBybS0+ZmlsZS0+Zl9v cC0+bW1hcCkKLQkJcmV0dXJuIC1FTk9FWEVDOwotCi0JZmRfb2Zmc2V0ID0gTl9UWFRPRkYoZXgp OwotCi0JLyogQ2hlY2sgaW5pdGlhbCBsaW1pdHMuIFRoaXMgYXZvaWRzIGxldHRpbmcgcGVvcGxl IGNpcmN1bXZlbnQKLQkgKiBzaXplIGxpbWl0cyBpbXBvc2VkIG9uIHRoZW0gYnkgY3JlYXRpbmcg cHJvZ3JhbXMgd2l0aCBsYXJnZQotCSAqIGFycmF5cyBpbiB0aGUgZGF0YSBvciBic3MuCi0JICov Ci0JcmxpbSA9IHJsaW1pdChSTElNSVRfREFUQSk7Ci0JaWYgKHJsaW0gPj0gUkxJTV9JTkZJTklU WSkKLQkJcmxpbSA9IH4wOwotCWlmIChleC5hX2RhdGEgKyBleC5hX2JzcyA+IHJsaW0pCi0JCXJl dHVybiAtRU5PTUVNOwotCi0JLyogRmx1c2ggYWxsIHRyYWNlcyBvZiB0aGUgY3VycmVudGx5IHJ1 bm5pbmcgZXhlY3V0YWJsZSAqLwotCXJldHZhbCA9IGZsdXNoX29sZF9leGVjKGJwcm0pOwotCWlm IChyZXR2YWwpCi0JCXJldHVybiByZXR2YWw7Ci0KLQkvKiBPSywgVGhpcyBpcyB0aGUgcG9pbnQg b2Ygbm8gcmV0dXJuICovCi0jaWZkZWYgX19hbHBoYV9fCi0JU0VUX0FPVVRfUEVSU09OQUxJVFko YnBybSwgZXgpOwotI2Vsc2UKLQlzZXRfcGVyc29uYWxpdHkoUEVSX0xJTlVYKTsKLSNlbmRpZgot CXNldHVwX25ld19leGVjKGJwcm0pOwotCi0JY3VycmVudC0+bW0tPmVuZF9jb2RlID0gZXguYV90 ZXh0ICsKLQkJKGN1cnJlbnQtPm1tLT5zdGFydF9jb2RlID0gTl9UWFRBRERSKGV4KSk7Ci0JY3Vy cmVudC0+bW0tPmVuZF9kYXRhID0gZXguYV9kYXRhICsKLQkJKGN1cnJlbnQtPm1tLT5zdGFydF9k YXRhID0gTl9EQVRBRERSKGV4KSk7Ci0JY3VycmVudC0+bW0tPmJyayA9IGV4LmFfYnNzICsKLQkJ KGN1cnJlbnQtPm1tLT5zdGFydF9icmsgPSBOX0JTU0FERFIoZXgpKTsKLQotCXJldHZhbCA9IHNl dHVwX2FyZ19wYWdlcyhicHJtLCBTVEFDS19UT1AsIEVYU1RBQ0tfREVGQVVMVCk7Ci0JaWYgKHJl dHZhbCA8IDApCi0JCXJldHVybiByZXR2YWw7Ci0KLQlpbnN0YWxsX2V4ZWNfY3JlZHMoYnBybSk7 Ci0KLQlpZiAoTl9NQUdJQyhleCkgPT0gT01BR0lDKSB7Ci0JCXVuc2lnbmVkIGxvbmcgdGV4dF9h ZGRyLCBtYXBfc2l6ZTsKLQkJbG9mZl90IHBvczsKLQotCQl0ZXh0X2FkZHIgPSBOX1RYVEFERFIo ZXgpOwotCi0jaWZkZWYgX19hbHBoYV9fCi0JCXBvcyA9IGZkX29mZnNldDsKLQkJbWFwX3NpemUg PSBleC5hX3RleHQrZXguYV9kYXRhICsgUEFHRV9TSVpFIC0gMTsKLSNlbHNlCi0JCXBvcyA9IDMy OwotCQltYXBfc2l6ZSA9IGV4LmFfdGV4dCtleC5hX2RhdGE7Ci0jZW5kaWYKLQkJZXJyb3IgPSB2 bV9icmsodGV4dF9hZGRyICYgUEFHRV9NQVNLLCBtYXBfc2l6ZSk7Ci0JCWlmIChlcnJvcikKLQkJ CXJldHVybiBlcnJvcjsKLQotCQllcnJvciA9IHJlYWRfY29kZShicHJtLT5maWxlLCB0ZXh0X2Fk ZHIsIHBvcywKLQkJCQkgIGV4LmFfdGV4dCtleC5hX2RhdGEpOwotCQlpZiAoKHNpZ25lZCBsb25n KWVycm9yIDwgMCkKLQkJCXJldHVybiBlcnJvcjsKLQl9IGVsc2UgewotCQlpZiAoKGV4LmFfdGV4 dCAmIDB4ZmZmIHx8IGV4LmFfZGF0YSAmIDB4ZmZmKSAmJgotCQkgICAgKE5fTUFHSUMoZXgpICE9 IE5NQUdJQykgJiYgcHJpbnRrX3JhdGVsaW1pdCgpKQotCQl7Ci0JCQlwcmludGsoS0VSTl9OT1RJ Q0UgImV4ZWN1dGFibGUgbm90IHBhZ2UgYWxpZ25lZFxuIik7Ci0JCX0KLQotCQlpZiAoKGZkX29m ZnNldCAmIH5QQUdFX01BU0spICE9IDAgJiYgcHJpbnRrX3JhdGVsaW1pdCgpKQotCQl7Ci0JCQlw cmludGsoS0VSTl9XQVJOSU5HIAotCQkJICAgICAgICJmZF9vZmZzZXQgaXMgbm90IHBhZ2UgYWxp Z25lZC4gUGxlYXNlIGNvbnZlcnQgcHJvZ3JhbTogJXBEXG4iLAotCQkJICAgICAgIGJwcm0tPmZp bGUpOwotCQl9Ci0KLQkJaWYgKCFicHJtLT5maWxlLT5mX29wLT5tbWFwfHwoKGZkX29mZnNldCAm IH5QQUdFX01BU0spICE9IDApKSB7Ci0JCQllcnJvciA9IHZtX2JyayhOX1RYVEFERFIoZXgpLCBl eC5hX3RleHQrZXguYV9kYXRhKTsKLQkJCWlmIChlcnJvcikKLQkJCQlyZXR1cm4gZXJyb3I7Ci0K LQkJCXJlYWRfY29kZShicHJtLT5maWxlLCBOX1RYVEFERFIoZXgpLCBmZF9vZmZzZXQsCi0JCQkJ ICBleC5hX3RleHQgKyBleC5hX2RhdGEpOwotCQkJZ290byBiZXlvbmRfaWY7Ci0JCX0KLQotCQll cnJvciA9IHZtX21tYXAoYnBybS0+ZmlsZSwgTl9UWFRBRERSKGV4KSwgZXguYV90ZXh0LAotCQkJ UFJPVF9SRUFEIHwgUFJPVF9FWEVDLAotCQkJTUFQX0ZJWEVEIHwgTUFQX1BSSVZBVEUgfCBNQVBf REVOWVdSSVRFIHwgTUFQX0VYRUNVVEFCTEUsCi0JCQlmZF9vZmZzZXQpOwotCi0JCWlmIChlcnJv ciAhPSBOX1RYVEFERFIoZXgpKQotCQkJcmV0dXJuIGVycm9yOwotCi0JCWVycm9yID0gdm1fbW1h cChicHJtLT5maWxlLCBOX0RBVEFERFIoZXgpLCBleC5hX2RhdGEsCi0JCQkJUFJPVF9SRUFEIHwg UFJPVF9XUklURSB8IFBST1RfRVhFQywKLQkJCQlNQVBfRklYRUQgfCBNQVBfUFJJVkFURSB8IE1B UF9ERU5ZV1JJVEUgfCBNQVBfRVhFQ1VUQUJMRSwKLQkJCQlmZF9vZmZzZXQgKyBleC5hX3RleHQp OwotCQlpZiAoZXJyb3IgIT0gTl9EQVRBRERSKGV4KSkKLQkJCXJldHVybiBlcnJvcjsKLQl9Ci1i ZXlvbmRfaWY6Ci0Jc2V0X2JpbmZtdCgmYW91dF9mb3JtYXQpOwotCi0JcmV0dmFsID0gc2V0X2Jy ayhjdXJyZW50LT5tbS0+c3RhcnRfYnJrLCBjdXJyZW50LT5tbS0+YnJrKTsKLQlpZiAocmV0dmFs IDwgMCkKLQkJcmV0dXJuIHJldHZhbDsKLQotCWN1cnJlbnQtPm1tLT5zdGFydF9zdGFjayA9Ci0J CSh1bnNpZ25lZCBsb25nKSBjcmVhdGVfYW91dF90YWJsZXMoKGNoYXIgX191c2VyICopIGJwcm0t PnAsIGJwcm0pOwotI2lmZGVmIF9fYWxwaGFfXwotCXJlZ3MtPmdwID0gZXguYV9ncHZhbHVlOwot I2VuZGlmCi0JZmluYWxpemVfZXhlYyhicHJtKTsKLQlzdGFydF90aHJlYWQocmVncywgZXguYV9l bnRyeSwgY3VycmVudC0+bW0tPnN0YXJ0X3N0YWNrKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGlj IGludCBsb2FkX2FvdXRfbGlicmFyeShzdHJ1Y3QgZmlsZSAqZmlsZSkKLXsKLQlzdHJ1Y3QgaW5v ZGUgKiBpbm9kZTsKLQl1bnNpZ25lZCBsb25nIGJzcywgc3RhcnRfYWRkciwgbGVuOwotCXVuc2ln bmVkIGxvbmcgZXJyb3I7Ci0JaW50IHJldHZhbDsKLQlzdHJ1Y3QgZXhlYyBleDsKLQlsb2ZmX3Qg cG9zID0gMDsKLQotCWlub2RlID0gZmlsZV9pbm9kZShmaWxlKTsKLQotCXJldHZhbCA9IC1FTk9F WEVDOwotCWVycm9yID0ga2VybmVsX3JlYWQoZmlsZSwgJmV4LCBzaXplb2YoZXgpLCAmcG9zKTsK LQlpZiAoZXJyb3IgIT0gc2l6ZW9mKGV4KSkKLQkJZ290byBvdXQ7Ci0KLQkvKiBXZSBjb21lIGlu IGhlcmUgZm9yIHRoZSByZWd1bGFyIGEub3V0IHN0eWxlIG9mIHNoYXJlZCBsaWJyYXJpZXMgKi8K LQlpZiAoKE5fTUFHSUMoZXgpICE9IFpNQUdJQyAmJiBOX01BR0lDKGV4KSAhPSBRTUFHSUMpIHx8 IE5fVFJTSVpFKGV4KSB8fAotCSAgICBOX0RSU0laRShleCkgfHwgKChleC5hX2VudHJ5ICYgMHhm ZmYpICYmIE5fTUFHSUMoZXgpID09IFpNQUdJQykgfHwKLQkgICAgaV9zaXplX3JlYWQoaW5vZGUp IDwgZXguYV90ZXh0K2V4LmFfZGF0YStOX1NZTVNJWkUoZXgpK05fVFhUT0ZGKGV4KSkgewotCQln b3RvIG91dDsKLQl9Ci0KLQkvKgotCSAqIFJlcXVpcmVzIGEgbW1hcCBoYW5kbGVyLiBUaGlzIHBy ZXZlbnRzIHBlb3BsZSBmcm9tIHVzaW5nIGEub3V0Ci0JICogYXMgcGFydCBvZiBhbiBleHBsb2l0 IGF0dGFjayBhZ2FpbnN0IC9wcm9jLXJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLgotCSAqLwotCWlm ICghZmlsZS0+Zl9vcC0+bW1hcCkKLQkJZ290byBvdXQ7Ci0KLQlpZiAoTl9GTEFHUyhleCkpCi0J CWdvdG8gb3V0OwotCi0JLyogRm9yICBRTUFHSUMsIHRoZSBzdGFydGluZyBhZGRyZXNzIGlzIDB4 MjAgaW50byB0aGUgcGFnZS4gIFdlIG1hc2sKLQkgICB0aGlzIG9mZiB0byBnZXQgdGhlIHN0YXJ0 aW5nIGFkZHJlc3MgZm9yIHRoZSBwYWdlICovCi0KLQlzdGFydF9hZGRyID0gIGV4LmFfZW50cnkg JiAweGZmZmZmMDAwOwotCi0JaWYgKChOX1RYVE9GRihleCkgJiB+UEFHRV9NQVNLKSAhPSAwKSB7 Ci0JCWlmIChwcmludGtfcmF0ZWxpbWl0KCkpCi0JCXsKLQkJCXByaW50ayhLRVJOX1dBUk5JTkcg Ci0JCQkgICAgICAgIk5fVFhUT0ZGIGlzIG5vdCBwYWdlIGFsaWduZWQuIFBsZWFzZSBjb252ZXJ0 IGxpYnJhcnk6ICVwRFxuIiwKLQkJCSAgICAgICBmaWxlKTsKLQkJfQotCQlyZXR2YWwgPSB2bV9i cmsoc3RhcnRfYWRkciwgZXguYV90ZXh0ICsgZXguYV9kYXRhICsgZXguYV9ic3MpOwotCQlpZiAo cmV0dmFsKQotCQkJZ290byBvdXQ7Ci0KLQkJcmVhZF9jb2RlKGZpbGUsIHN0YXJ0X2FkZHIsIE5f VFhUT0ZGKGV4KSwKLQkJCSAgZXguYV90ZXh0ICsgZXguYV9kYXRhKTsKLQkJcmV0dmFsID0gMDsK LQkJZ290byBvdXQ7Ci0JfQotCS8qIE5vdyB1c2UgbW1hcCB0byBtYXAgdGhlIGxpYnJhcnkgaW50 byBtZW1vcnkuICovCi0JZXJyb3IgPSB2bV9tbWFwKGZpbGUsIHN0YXJ0X2FkZHIsIGV4LmFfdGV4 dCArIGV4LmFfZGF0YSwKLQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMsCi0J CQlNQVBfRklYRUQgfCBNQVBfUFJJVkFURSB8IE1BUF9ERU5ZV1JJVEUsCi0JCQlOX1RYVE9GRihl eCkpOwotCXJldHZhbCA9IGVycm9yOwotCWlmIChlcnJvciAhPSBzdGFydF9hZGRyKQotCQlnb3Rv IG91dDsKLQotCWxlbiA9IFBBR0VfQUxJR04oZXguYV90ZXh0ICsgZXguYV9kYXRhKTsKLQlic3Mg PSBleC5hX3RleHQgKyBleC5hX2RhdGEgKyBleC5hX2JzczsKLQlpZiAoYnNzID4gbGVuKSB7Ci0J CXJldHZhbCA9IHZtX2JyayhzdGFydF9hZGRyICsgbGVuLCBic3MgLSBsZW4pOwotCQlpZiAocmV0 dmFsKQotCQkJZ290byBvdXQ7Ci0JfQotCXJldHZhbCA9IDA7Ci1vdXQ6Ci0JcmV0dXJuIHJldHZh bDsKLX0KLQotc3RhdGljIGludCBfX2luaXQgaW5pdF9hb3V0X2JpbmZtdCh2b2lkKQotewotCXJl Z2lzdGVyX2JpbmZtdCgmYW91dF9mb3JtYXQpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9p ZCBfX2V4aXQgZXhpdF9hb3V0X2JpbmZtdCh2b2lkKQotewotCXVucmVnaXN0ZXJfYmluZm10KCZh b3V0X2Zvcm1hdCk7Ci19Ci0KLWNvcmVfaW5pdGNhbGwoaW5pdF9hb3V0X2JpbmZtdCk7Ci1tb2R1 bGVfZXhpdChleGl0X2FvdXRfYmluZm10KTsKLU1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvYS5vdXQuaCBiL2luY2x1ZGUvbGludXgvYS5vdXQuaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwY2Y0NTY0NWM2Li4wMDAwMDAwMDAwMDAKLS0t IGEvaW5jbHVkZS9saW51eC9hLm91dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgX19BX09VVF9H TlVfSF9fCi0jZGVmaW5lIF9fQV9PVVRfR05VX0hfXwotCi0jaW5jbHVkZSA8dWFwaS9saW51eC9h Lm91dC5oPgotCi0jaWZuZGVmIF9fQVNTRU1CTFlfXwotI2lmZGVmIGxpbnV4Ci0jaW5jbHVkZSA8 YXNtL3BhZ2UuaD4KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWM2ODAwMF9f KQotI2Vsc2UKLSNpZm5kZWYgU0VHTUVOVF9TSVpFCi0jZGVmaW5lIFNFR01FTlRfU0laRQlQQUdF X1NJWkUKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZiAvKl9fQVNTRU1CTFlfXyAqLwot I2VuZGlmIC8qIF9fQV9PVVRfR05VX0hfXyAqLwo= --0000000000000c01730583c5259c--