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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EFA99C433EF for ; Wed, 18 May 2022 03:02:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=GTgouRR1W0hNGfdMdV5kAL/b5xPQLs/TGcTbmMp8sA0=; b=QkNVT5XbxoCi8u6OVOv2AJ0oMG 3NgB9axpsZ9o78YWQwR7cfyoYAzH1CtAlqGz9D7f9dCoT2cuMy9Jb1c5gqu2VkLUM5WNb/AhIYlBM x9O6By0flAQWypahdurSVhxXPxNpPLmMDAIUqAUz0sVbvtA5MuqVJW0DafAtxe16oSuOd4Ntwf4lg BpDSkJl9gLjb7FK4A52NtjQ1pvztaGuVhw8F0623tYTv+y8j+kzkGEYrfFWbHh3PRccdkRU+Zh4Vz 0vL0UtlSx5CUCNiCguzAQ2b0SQSJl5QIUjYm2cE3LjdBh4HMla1Gi4YPIXf5qWNyPQ3ghsN7eSaT1 80mwviWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9wC-00GmAy-Ds; Wed, 18 May 2022 03:01:24 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr8mO-00GdEb-Pb for linux-arm-kernel@lists.infradead.org; Wed, 18 May 2022 01:47:17 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2fecfc7a95aso7794847b3.22 for ; Tue, 17 May 2022 18:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc:content-transfer-encoding; bh=W1lmCBMSvh8WM0XdwNyp+PodjxHLyHRsBa8QQZ0AbFw=; b=WvVuu9D+7nu5qVB8kWHqWcYHQbsJXYb8i6L7M+/DrCSC3GN8OWxaa1DizXgf3xnJHk fINbVn4vyZ+HHizxwYyklCrtZpgPwGn/iXVnNmj3tdRYejslmJNHRnltXf0eTNUkPhVp 53hGUOxOYFsZoTAKx6Jns5j5nJuzgmQlW4j/Fo5aiV5yxTE2g1rqp7ewPQH5u7cIk2LA iPYvljtc464NjJPnlOpsNyj0iBzRPWSV33Cuy0ChBxojzIYeXCiYSDrT7zCZwkTIITvG rlxySrkZ7IiIyK0h8z8aIC7pRAwXwsbZdVx59yNzngzWnm2cAP0ZmlzB7HdF4LFhEP30 gvSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc:content-transfer-encoding; bh=W1lmCBMSvh8WM0XdwNyp+PodjxHLyHRsBa8QQZ0AbFw=; b=wX8jljzzJc9M//yzi+nbLxhEesVToDrwuGRVuXmaPtc8wH1M2EhCkTelNqhNxbwM49 mibH46WTDvLjg+9/Pu6aeZHdrvmNg5ZyWLxJezl56iIqx8pUG2teJFUCQXIVgpQ/sqp6 KpbIqif2h0v+VW+70NQvuhcb/X3ihVLwNQmKK1KaN4hASOQOqJaEW6N5Sw0UZXdAGt8q D27DNeg0vBqV/jwkgqCnUu3JlIm7ii5RMW0bqClXjUS3EU1iirhKeXvB4A4oSRwfPvE4 WOj4dHUQ5Iuv/syCGMxcVPXuOwNR5W5JBaEA0dGG6/7RiHrdhKZ+guKMtB+EDWw+F6CK 6pQQ== X-Gm-Message-State: AOAM531i/me8EflghCB1yBwaJAc3K7ZufDbdDi9TOOE3Z9W1+htQ9sK3 my5mtNotRLQOErG1nVr25NdlTjR98AA= X-Google-Smtp-Source: ABdhPJylNicMwjJM0mSLGeu5WFwH+Uvqs4PoDUUOGjHkU7Hmd7go+9S3O62WXfmdYFAyReYmXT0hT8SNDRY= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:5212:0:b0:2fe:e667:ee6e with SMTP id g18-20020a815212000000b002fee667ee6emr16390918ywb.155.1652838431235; Tue, 17 May 2022 18:47:11 -0700 (PDT) Date: Tue, 17 May 2022 19:46:31 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-13-yuzhao@google.com> Mime-Version: 1.0 References: <20220518014632.922072-1-yuzhao@google.com> X-Mailer: git-send-email 2.36.0.550.gb090851708-goog Subject: [PATCH v11 12/14] mm: multi-gen LRU: debugfs interface From: Yu Zhao To: Andrew Morton , linux-mm@kvack.org Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, page-reclaim@google.com, Yu Zhao , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220517_184712_896643_CB38B63C X-CRM114-Status: GOOD ( 22.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIC9zeXMva2VybmVsL2RlYnVnL2xydV9nZW4gZm9yIHdvcmtpbmcgc2V0IGVzdGltYXRpb24g YW5kIHByb2FjdGl2ZQpyZWNsYWltLiBUaGVzZSB0ZWNobmlxdWVzIGFyZSBjb21tb25seSB1c2Vk IHRvIG9wdGltaXplIGpvYiBzY2hlZHVsaW5nCihiaW4gcGFja2luZykgaW4gZGF0YSBjZW50ZXJz IFsxXVsyXS4KCkNvbXBhcmVkIHdpdGggdGhlIHBhZ2UgdGFibGUtYmFzZWQgYXBwcm9hY2ggYW5k IHRoZSBQRk4tYmFzZWQKYXBwcm9hY2gsIHRoaXMgbHJ1dmVjLWJhc2VkIGFwcHJvYWNoIGhhcyB0 aGUgZm9sbG93aW5nIGFkdmFudGFnZXM6CjEuIEl0IG9mZmVycyBiZXR0ZXIgY2hvaWNlcyBiZWNh dXNlIGl0IGlzIGF3YXJlIG9mIG1lbWNncywgTlVNQSBub2RlcywKICAgc2hhcmVkIG1hcHBpbmdz IGFuZCB1bm1hcHBlZCBwYWdlIGNhY2hlLgoyLiBJdCBpcyBtb3JlIHNjYWxhYmxlIGJlY2F1c2Ug aXQgaXMgTyhucl9ob3RfcGFnZXMpLCB3aGVyZWFzIHRoZQogICBQRk4tYmFzZWQgYXBwcm9hY2gg aXMgTyhucl90b3RhbF9wYWdlcykuCgpBZGQgL3N5cy9rZXJuZWwvZGVidWcvbHJ1X2dlbl9mdWxs IGZvciBkZWJ1Z2dpbmcuCgpbMV0gaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzMyOTc4 NTguMzMwNDA1MwpbMl0gaHR0cHM6Ly9kbC5hY20ub3JnL2RvaS8xMC4xMTQ1LzM1MDMyMjIuMzUw NzczMQoKU2lnbmVkLW9mZi1ieTogWXUgWmhhbyA8eXV6aGFvQGdvb2dsZS5jb20+CkFja2VkLWJ5 OiBCcmlhbiBHZWZmb24gPGJnZWZmb25AZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEphbiBBbGV4YW5k ZXIgU3RlZmZlbnMgKGhlZnRpZykgPGhlZnRpZ0BhcmNobGludXgub3JnPgpBY2tlZC1ieTogT2xl a3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFsZW5rby5uYW1lPgpBY2tlZC1ieTogU3Rl dmVuIEJhcnJldHQgPHN0ZXZlbkBsaXF1b3JpeC5uZXQ+CkFja2VkLWJ5OiBTdWxlaW1hbiBTb3Vo bGFsIDxzdWxlaW1hbkBnb29nbGUuY29tPgpUZXN0ZWQtYnk6IERhbmllbCBCeXJuZSA8ZGpieXJu ZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJyIDxkQGNoYW9zLXJlaW5zLmNvbT4KVGVz dGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdlckBhcHBsaWVkLWFzeW5jaHJvbnkuY29t PgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92IDxIaS1BbmdlbEB5YW5kZXgucnU+ClRl c3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5yb2NoZXN0ZXIuZWR1PgpUZXN0ZWQtYnk6 IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29ya3M+ClRlc3RlZC1ieTogVmFpYmhhdiBK YWluIDx2YWliaGF2QGxpbnV4LmlibS5jb20+Ci0tLQogaW5jbHVkZS9saW51eC9ub2RlbWFzay5o IHwgICAxICsKIG1tL3Ztc2Nhbi5jICAgICAgICAgICAgICB8IDQwMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm9kZW1hc2su aCBiL2luY2x1ZGUvbGludXgvbm9kZW1hc2suaAppbmRleCA1NjdjM2RkYmEyYzQuLjkwODQwYzQ1 OWFiYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ub2RlbWFzay5oCisrKyBiL2luY2x1ZGUv bGludXgvbm9kZW1hc2suaApAQCAtNDg2LDYgKzQ4Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG51 bV9ub2RlX3N0YXRlKGVudW0gbm9kZV9zdGF0ZXMgc3RhdGUpCiAjZGVmaW5lIGZpcnN0X29ubGlu ZV9ub2RlCTAKICNkZWZpbmUgZmlyc3RfbWVtb3J5X25vZGUJMAogI2RlZmluZSBuZXh0X29ubGlu ZV9ub2RlKG5pZCkJKE1BWF9OVU1OT0RFUykKKyNkZWZpbmUgbmV4dF9tZW1vcnlfbm9kZShuaWQp CShNQVhfTlVNTk9ERVMpCiAjZGVmaW5lIG5yX25vZGVfaWRzCQkxVQogI2RlZmluZSBucl9vbmxp bmVfbm9kZXMJCTFVCiAKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5k ZXggODIzYzU1ZTE3ZTY0Li5hZWY3MWM0NWM0MjQgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisr KyBiL21tL3Ztc2Nhbi5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8bGludXgvcGFnZXdh bGsuaD4KICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L2N0eXBl Lmg+CisjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgogCiAjaW5jbHVkZSA8YXNtL3RsYmZsdXNo Lmg+CiAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+CkBAIC00MDYzLDEyICs0MDY0LDM5IEBAIHN0YXRp YyB2b2lkIGZyZWVfbW1fd2FsayhzdHJ1Y3QgbHJ1X2dlbl9tbV93YWxrICp3YWxrKQogCQlrZnJl ZSh3YWxrKTsKIH0KIAotc3RhdGljIHZvaWQgaW5jX21pbl9zZXEoc3RydWN0IGxydXZlYyAqbHJ1 dmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBib29sIGluY19taW5fc2VxKHN0cnVjdCBscnV2ZWMgKmxy dXZlYywgaW50IHR5cGUsIGJvb2wgY2FuX3N3YXApCiB7CisJaW50IHpvbmU7CisJaW50IHJlbWFp bmluZyA9IE1BWF9MUlVfQkFUQ0g7CiAJc3RydWN0IGxydV9nZW5fc3RydWN0ICpscnVnZW4gPSAm bHJ1dmVjLT5scnVnZW47CisJaW50IG5ld19nZW4sIG9sZF9nZW4gPSBscnVfZ2VuX2Zyb21fc2Vx KGxydWdlbi0+bWluX3NlcVt0eXBlXSk7CiAKKwlpZiAodHlwZSA9PSBMUlVfR0VOX0FOT04gJiYg IWNhbl9zd2FwKQorCQlnb3RvIGRvbmU7CisKKwlmb3IgKHpvbmUgPSAwOyB6b25lIDwgTUFYX05S X1pPTkVTOyB6b25lKyspIHsKKwkJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCA9ICZscnVnZW4tPmxp c3RzW29sZF9nZW5dW3R5cGVdW3pvbmVdOworCisJCXdoaWxlICghbGlzdF9lbXB0eShoZWFkKSkg eworCQkJc3RydWN0IGZvbGlvICpmb2xpbyA9IGxydV90b19mb2xpbyhoZWFkKTsKKworCQkJVk1f V0FSTl9PTl9PTkNFX0ZPTElPKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pLCBmb2xpbyk7 CisJCQlWTV9XQVJOX09OX09OQ0VfRk9MSU8oZm9saW9fdGVzdF9hY3RpdmUoZm9saW8pLCBmb2xp byk7CisJCQlWTV9XQVJOX09OX09OQ0VfRk9MSU8oZm9saW9faXNfZmlsZV9scnUoZm9saW8pICE9 IHR5cGUsIGZvbGlvKTsKKwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb196b25lbnVtKGZv bGlvKSAhPSB6b25lLCBmb2xpbyk7CisKKwkJCW5ld19nZW4gPSBmb2xpb19pbmNfZ2VuKGxydXZl YywgZm9saW8sIGZhbHNlKTsKKwkJCWxpc3RfbW92ZV90YWlsKCZmb2xpby0+bHJ1LCAmbHJ1Z2Vu LT5saXN0c1tuZXdfZ2VuXVt0eXBlXVt6b25lXSk7CisKKwkJCWlmICghLS1yZW1haW5pbmcpCisJ CQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorZG9uZToKIAlyZXNldF9jdHJsX3BvcyhscnV2ZWMs IHR5cGUsIHRydWUpOwogCVdSSVRFX09OQ0UobHJ1Z2VuLT5taW5fc2VxW3R5cGVdLCBscnVnZW4t Pm1pbl9zZXFbdHlwZV0gKyAxKTsKKworCXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCB0 cnlfdG9faW5jX21pbl9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBib29sIGNhbl9zd2FwKQpA QCAtNDExNCw3ICs0MTQyLDcgQEAgc3RhdGljIGJvb2wgdHJ5X3RvX2luY19taW5fc2VxKHN0cnVj dCBscnV2ZWMgKmxydXZlYywgYm9vbCBjYW5fc3dhcCkKIAlyZXR1cm4gc3VjY2VzczsKIH0KIAot c3RhdGljIHZvaWQgaW5jX21heF9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBib29sIGNhbl9z d2FwKQorc3RhdGljIHZvaWQgaW5jX21heF9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBib29s IGNhbl9zd2FwLCBib29sIGZvcmNlX3NjYW4pCiB7CiAJaW50IHByZXYsIG5leHQ7CiAJaW50IHR5 cGUsIHpvbmU7CkBAIC00MTI4LDkgKzQxNTYsMTMgQEAgc3RhdGljIHZvaWQgaW5jX21heF9zZXEo c3RydWN0IGxydXZlYyAqbHJ1dmVjLCBib29sIGNhbl9zd2FwKQogCQlpZiAoZ2V0X25yX2dlbnMo bHJ1dmVjLCB0eXBlKSAhPSBNQVhfTlJfR0VOUykKIAkJCWNvbnRpbnVlOwogCi0JCVZNX1dBUk5f T05fT05DRSh0eXBlID09IExSVV9HRU5fRklMRSB8fCBjYW5fc3dhcCk7CisJCVZNX1dBUk5fT05f T05DRSghZm9yY2Vfc2NhbiAmJiAodHlwZSA9PSBMUlVfR0VOX0ZJTEUgfHwgY2FuX3N3YXApKTsK IAotCQlpbmNfbWluX3NlcShscnV2ZWMsIHR5cGUpOworCQl3aGlsZSAoIWluY19taW5fc2VxKGxy dXZlYywgdHlwZSwgY2FuX3N3YXApKSB7CisJCQlzcGluX3VubG9ja19pcnEoJmxydXZlYy0+bHJ1 X2xvY2spOworCQkJY29uZF9yZXNjaGVkKCk7CisJCQlzcGluX2xvY2tfaXJxKCZscnV2ZWMtPmxy dV9sb2NrKTsKKwkJfQogCX0KIAogCS8qCkBAIC00MTY3LDcgKzQxOTksNyBAQCBzdGF0aWMgdm9p ZCBpbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIGJvb2wgY2FuX3N3YXApCiB9CiAK IHN0YXRpYyBib29sIHRyeV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVu c2lnbmVkIGxvbmcgbWF4X3NlcSwKLQkJCSAgICAgICBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYywg Ym9vbCBjYW5fc3dhcCkKKwkJCSAgICAgICBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYywgYm9vbCBj YW5fc3dhcCwgYm9vbCBmb3JjZV9zY2FuKQogewogCWJvb2wgc3VjY2VzczsKIAlzdHJ1Y3QgbHJ1 X2dlbl9tbV93YWxrICp3YWxrOwpAQCAtNDE4Miw3ICs0MjE0LDcgQEAgc3RhdGljIGJvb2wgdHJ5 X3RvX2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBtYXhf c2VxLAogCSAqIGhhbmRmdWwgb2YgUFRFcy4gU3ByZWFkaW5nIHRoZSB3b3JrIG91dCBvdmVyIGEg cGVyaW9kIG9mIHRpbWUgdXN1YWxseQogCSAqIGlzIGxlc3MgZWZmaWNpZW50LCBidXQgaXQgYXZv aWRzIGJ1cnN0eSBwYWdlIGZhdWx0cy4KIAkgKi8KLQlpZiAoIShhcmNoX2hhc19od19wdGVfeW91 bmcoKSAmJiBnZXRfY2FwKExSVV9HRU5fTU1fV0FMSykpKSB7CisJaWYgKCFmb3JjZV9zY2FuICYm ICEoYXJjaF9oYXNfaHdfcHRlX3lvdW5nKCkgJiYgZ2V0X2NhcChMUlVfR0VOX01NX1dBTEspKSkg ewogCQlzdWNjZXNzID0gaXRlcmF0ZV9tbV9saXN0X25vd2FsayhscnV2ZWMsIG1heF9zZXEpOwog CQlnb3RvIGRvbmU7CiAJfQpAQCAtNDE5Niw3ICs0MjI4LDcgQEAgc3RhdGljIGJvb2wgdHJ5X3Rv X2luY19tYXhfc2VxKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgdW5zaWduZWQgbG9uZyBtYXhfc2Vx LAogCXdhbGstPmxydXZlYyA9IGxydXZlYzsKIAl3YWxrLT5tYXhfc2VxID0gbWF4X3NlcTsKIAl3 YWxrLT5jYW5fc3dhcCA9IGNhbl9zd2FwOwotCXdhbGstPmZvcmNlX3NjYW4gPSBmYWxzZTsKKwl3 YWxrLT5mb3JjZV9zY2FuID0gZm9yY2Vfc2NhbjsKIAogCWRvIHsKIAkJc3VjY2VzcyA9IGl0ZXJh dGVfbW1fbGlzdChscnV2ZWMsIHdhbGssICZtbSk7CkBAIC00MjE4LDcgKzQyNTAsNyBAQCBzdGF0 aWMgYm9vbCB0cnlfdG9faW5jX21heF9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCB1bnNpZ25l ZCBsb25nIG1heF9zZXEsCiAKIAlWTV9XQVJOX09OX09OQ0UobWF4X3NlcSAhPSBSRUFEX09OQ0Uo bHJ1Z2VuLT5tYXhfc2VxKSk7CiAKLQlpbmNfbWF4X3NlcShscnV2ZWMsIGNhbl9zd2FwKTsKKwlp bmNfbWF4X3NlcShscnV2ZWMsIGNhbl9zd2FwLCBmb3JjZV9zY2FuKTsKIAkvKiBlaXRoZXIgdGhp cyBzZWVzIGFueSB3YWl0ZXJzIG9yIHRoZXkgd2lsbCBzZWUgdXBkYXRlZCBtYXhfc2VxICovCiAJ aWYgKHdxX2hhc19zbGVlcGVyKCZscnV2ZWMtPm1tX3N0YXRlLndhaXQpKQogCQl3YWtlX3VwX2Fs bCgmbHJ1dmVjLT5tbV9zdGF0ZS53YWl0KTsKQEAgLTQzMTcsNyArNDM0OSw3IEBAIHN0YXRpYyBi b29sIGFnZV9scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9s ICpzYywKIAkJbnJfdG9fc2NhbisrOwogCiAJaWYgKG5yX3RvX3NjYW4gJiYgbmVlZF9hZ2luZykK LQkJdHJ5X3RvX2luY19tYXhfc2VxKGxydXZlYywgbWF4X3NlcSwgc2MsIHN3YXBwaW5lc3MpOwor CQl0cnlfdG9faW5jX21heF9zZXEobHJ1dmVjLCBtYXhfc2VxLCBzYywgc3dhcHBpbmVzcywgZmFs c2UpOwogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC00ODg3LDcgKzQ5MTksNyBAQCBzdGF0aWMgbG9u ZyBnZXRfbnJfdG9fc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRy b2wgKnNjLCBib29sCiAJCXJldHVybiAwOwogCX0KIAotCWlmICh0cnlfdG9faW5jX21heF9zZXEo bHJ1dmVjLCBtYXhfc2VxLCBzYywgY2FuX3N3YXApKQorCWlmICh0cnlfdG9faW5jX21heF9zZXEo bHJ1dmVjLCBtYXhfc2VxLCBzYywgY2FuX3N3YXAsIGZhbHNlKSkKIAkJcmV0dXJuIG5yX3RvX3Nj YW47CiAKIAlyZXR1cm4gbWluX3NlcVshY2FuX3N3YXBdICsgTUlOX05SX0dFTlMgPD0gbWF4X3Nl cSA/IG5yX3RvX3NjYW4gOiAwOwpAQCAtNTE3NSw2ICs1MjA3LDM1NCBAQCBzdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBscnVfZ2VuX2F0dHJfZ3JvdXAgPSB7CiAJLmF0dHJzID0gbHJ1X2dl bl9hdHRycywKIH07CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWJ1Z2ZzIGludGVyZmFjZQorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor c3RhdGljIHZvaWQgKmxydV9nZW5fc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90 ICpwb3MpCit7CisJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOworCWxvZmZfdCBucl90b19za2lw ID0gKnBvczsKKworCW0tPnByaXZhdGUgPSBrdm1hbGxvYyhQQVRIX01BWCwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFtLT5wcml2YXRlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCW1lbWNn ID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIE5VTEwsIE5VTEwpOworCWRvIHsKKwkJaW50IG5pZDsK KworCQlmb3JfZWFjaF9ub2RlX3N0YXRlKG5pZCwgTl9NRU1PUlkpIHsKKwkJCWlmICghbnJfdG9f c2tpcC0tKQorCQkJCXJldHVybiBnZXRfbHJ1dmVjKG1lbWNnLCBuaWQpOworCQl9CisJfSB3aGls ZSAoKG1lbWNnID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIG1lbWNnLCBOVUxMKSkpOworCisJcmV0 dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGxydV9nZW5fc2VxX3N0b3Aoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp2KQoreworCWlmICghSVNfRVJSX09SX05VTEwodikpCisJCW1lbV9jZ3Jv dXBfaXRlcl9icmVhayhOVUxMLCBscnV2ZWNfbWVtY2codikpOworCisJa3ZmcmVlKG0tPnByaXZh dGUpOworCW0tPnByaXZhdGUgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZCAqbHJ1X2dlbl9zZXFf bmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKQoreworCWludCBu aWQgPSBscnV2ZWNfcGdkYXQodiktPm5vZGVfaWQ7CisJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNn ID0gbHJ1dmVjX21lbWNnKHYpOworCisJKysqcG9zOworCisJbmlkID0gbmV4dF9tZW1vcnlfbm9k ZShuaWQpOworCWlmIChuaWQgPT0gTUFYX05VTU5PREVTKSB7CisJCW1lbWNnID0gbWVtX2Nncm91 cF9pdGVyKE5VTEwsIG1lbWNnLCBOVUxMKTsKKwkJaWYgKCFtZW1jZykKKwkJCXJldHVybiBOVUxM OworCisJCW5pZCA9IGZpcnN0X21lbW9yeV9ub2RlOworCX0KKworCXJldHVybiBnZXRfbHJ1dmVj KG1lbWNnLCBuaWQpOworfQorCitzdGF0aWMgdm9pZCBscnVfZ2VuX3NlcV9zaG93X2Z1bGwoc3Ry dWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsCisJCQkJICB1bnNpZ25lZCBs b25nIG1heF9zZXEsIHVuc2lnbmVkIGxvbmcgKm1pbl9zZXEsCisJCQkJICB1bnNpZ25lZCBsb25n IHNlcSkKK3sKKwlpbnQgaTsKKwlpbnQgdHlwZSwgdGllcjsKKwlpbnQgaGlzdCA9IGxydV9oaXN0 X2Zyb21fc2VxKHNlcSk7CisJc3RydWN0IGxydV9nZW5fc3RydWN0ICpscnVnZW4gPSAmbHJ1dmVj LT5scnVnZW47CisKKwlmb3IgKHRpZXIgPSAwOyB0aWVyIDwgTUFYX05SX1RJRVJTOyB0aWVyKysp IHsKKwkJc2VxX3ByaW50ZihtLCAiICAgICAgICAgICAgJTEwZCIsIHRpZXIpOworCQlmb3IgKHR5 cGUgPSAwOyB0eXBlIDwgQU5PTl9BTkRfRklMRTsgdHlwZSsrKSB7CisJCQl1bnNpZ25lZCBsb25n IG5bM10gPSB7fTsKKworCQkJaWYgKHNlcSA9PSBtYXhfc2VxKSB7CisJCQkJblswXSA9IFJFQURf T05DRShscnVnZW4tPmF2Z19yZWZhdWx0ZWRbdHlwZV1bdGllcl0pOworCQkJCW5bMV0gPSBSRUFE X09OQ0UobHJ1Z2VuLT5hdmdfdG90YWxbdHlwZV1bdGllcl0pOworCisJCQkJc2VxX3ByaW50Ziht LCAiICUxMGx1UiAlMTBsdVQgJTEwbHUgIiwgblswXSwgblsxXSwgblsyXSk7CisJCQl9IGVsc2Ug aWYgKHNlcSA9PSBtaW5fc2VxW3R5cGVdIHx8IE5SX0hJU1RfR0VOUyA+IDEpIHsKKwkJCQluWzBd ID0gYXRvbWljX2xvbmdfcmVhZCgmbHJ1Z2VuLT5yZWZhdWx0ZWRbaGlzdF1bdHlwZV1bdGllcl0p OworCQkJCW5bMV0gPSBhdG9taWNfbG9uZ19yZWFkKCZscnVnZW4tPmV2aWN0ZWRbaGlzdF1bdHlw ZV1bdGllcl0pOworCQkJCWlmICh0aWVyKQorCQkJCQluWzJdID0gUkVBRF9PTkNFKGxydWdlbi0+ cHJvdGVjdGVkW2hpc3RdW3R5cGVdW3RpZXIgLSAxXSk7CisKKwkJCQlzZXFfcHJpbnRmKG0sICIg JTEwbHVyICUxMGx1ZSAlMTBsdXAiLCBuWzBdLCBuWzFdLCBuWzJdKTsKKwkJCX0gZWxzZQorCQkJ CXNlcV9wdXRzKG0sICIgICAgICAgICAgMCAgICAgICAgICAgMCAgICAgICAgICAgMCAiKTsKKwkJ fQorCQlzZXFfcHV0YyhtLCAnXG4nKTsKKwl9CisKKwlzZXFfcHV0cyhtLCAiICAgICAgICAgICAg ICAgICAgICAgICIpOworCWZvciAoaSA9IDA7IGkgPCBOUl9NTV9TVEFUUzsgaSsrKSB7CisJCWlm IChzZXEgPT0gbWF4X3NlcSAmJiBOUl9ISVNUX0dFTlMgPT0gMSkKKwkJCXNlcV9wcmludGYobSwg IiAlMTBsdSVjIiwgUkVBRF9PTkNFKGxydXZlYy0+bW1fc3RhdGUuc3RhdHNbaGlzdF1baV0pLAor CQkJCSAgIHRvdXBwZXIoTU1fU1RBVF9DT0RFU1tpXSkpOworCQllbHNlIGlmIChzZXEgIT0gbWF4 X3NlcSAmJiBOUl9ISVNUX0dFTlMgPiAxKQorCQkJc2VxX3ByaW50ZihtLCAiICUxMGx1JWMiLCBS RUFEX09OQ0UobHJ1dmVjLT5tbV9zdGF0ZS5zdGF0c1toaXN0XVtpXSksCisJCQkJICAgTU1fU1RB VF9DT0RFU1tpXSk7CisJCWVsc2UKKwkJCXNlcV9wdXRzKG0sICIgICAgICAgICAgMCAiKTsKKwl9 CisJc2VxX3B1dGMobSwgJ1xuJyk7Cit9CisKK3N0YXRpYyBpbnQgbHJ1X2dlbl9zZXFfc2hvdyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpCit7CisJdW5zaWduZWQgbG9uZyBzZXE7CisJYm9v bCBmdWxsID0gIWRlYnVnZnNfcmVhbF9mb3BzKG0tPmZpbGUpLT53cml0ZTsKKwlzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMgPSB2OworCXN0cnVjdCBscnVfZ2VuX3N0cnVjdCAqbHJ1Z2VuID0gJmxydXZl Yy0+bHJ1Z2VuOworCWludCBuaWQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKS0+bm9kZV9pZDsKKwlz dHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cgPSBscnV2ZWNfbWVtY2cobHJ1dmVjKTsKKwlERUZJTkVf TUFYX1NFUShscnV2ZWMpOworCURFRklORV9NSU5fU0VRKGxydXZlYyk7CisKKwlpZiAobmlkID09 IGZpcnN0X21lbW9yeV9ub2RlKSB7CisJCWNvbnN0IGNoYXIgKnBhdGggPSBtZW1jZyA/IG0tPnBy aXZhdGUgOiAiIjsKKworI2lmZGVmIENPTkZJR19NRU1DRworCQlpZiAobWVtY2cpCisJCQljZ3Jv dXBfcGF0aChtZW1jZy0+Y3NzLmNncm91cCwgbS0+cHJpdmF0ZSwgUEFUSF9NQVgpOworI2VuZGlm CisJCXNlcV9wcmludGYobSwgIm1lbWNnICU1aHUgJXNcbiIsIG1lbV9jZ3JvdXBfaWQobWVtY2cp LCBwYXRoKTsKKwl9CisKKwlzZXFfcHJpbnRmKG0sICIgbm9kZSAlNWRcbiIsIG5pZCk7CisKKwlp ZiAoIWZ1bGwpCisJCXNlcSA9IG1pbl9zZXFbTFJVX0dFTl9BTk9OXTsKKwllbHNlIGlmIChtYXhf c2VxID49IE1BWF9OUl9HRU5TKQorCQlzZXEgPSBtYXhfc2VxIC0gTUFYX05SX0dFTlMgKyAxOwor CWVsc2UKKwkJc2VxID0gMDsKKworCWZvciAoOyBzZXEgPD0gbWF4X3NlcTsgc2VxKyspIHsKKwkJ aW50IHR5cGUsIHpvbmU7CisJCWludCBnZW4gPSBscnVfZ2VuX2Zyb21fc2VxKHNlcSk7CisJCXVu c2lnbmVkIGxvbmcgYmlydGggPSBSRUFEX09OQ0UobHJ1dmVjLT5scnVnZW4udGltZXN0YW1wc1tn ZW5dKTsKKworCQlzZXFfcHJpbnRmKG0sICIgJTEwbHUgJTEwdSIsIHNlcSwgamlmZmllc190b19t c2VjcyhqaWZmaWVzIC0gYmlydGgpKTsKKworCQlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgQU5PTl9B TkRfRklMRTsgdHlwZSsrKSB7CisJCQlsb25nIHNpemUgPSAwOworCQkJY2hhciBtYXJrID0gZnVs bCAmJiBzZXEgPCBtaW5fc2VxW3R5cGVdID8gJ3gnIDogJyAnOworCisJCQlmb3IgKHpvbmUgPSAw OyB6b25lIDwgTUFYX05SX1pPTkVTOyB6b25lKyspCisJCQkJc2l6ZSArPSBSRUFEX09OQ0UobHJ1 Z2VuLT5ucl9wYWdlc1tnZW5dW3R5cGVdW3pvbmVdKTsKKworCQkJc2VxX3ByaW50ZihtLCAiICUx MGx1JWMiLCBtYXgoc2l6ZSwgMEwpLCBtYXJrKTsKKwkJfQorCisJCXNlcV9wdXRjKG0sICdcbicp OworCisJCWlmIChmdWxsKQorCQkJbHJ1X2dlbl9zZXFfc2hvd19mdWxsKG0sIGxydXZlYywgbWF4 X3NlcSwgbWluX3NlcSwgc2VxKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBscnVfZ2VuX3NlcV9vcHMgPSB7CisJLnN0YXJ0ID0gbHJ1 X2dlbl9zZXFfc3RhcnQsCisJLnN0b3AgPSBscnVfZ2VuX3NlcV9zdG9wLAorCS5uZXh0ID0gbHJ1 X2dlbl9zZXFfbmV4dCwKKwkuc2hvdyA9IGxydV9nZW5fc2VxX3Nob3csCit9OworCitzdGF0aWMg aW50IHJ1bl9hZ2luZyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgc2VxLCBz dHJ1Y3Qgc2Nhbl9jb250cm9sICpzYywKKwkJICAgICBib29sIGNhbl9zd2FwLCBib29sIGZvcmNl X3NjYW4pCit7CisJREVGSU5FX01BWF9TRVEobHJ1dmVjKTsKKwlERUZJTkVfTUlOX1NFUShscnV2 ZWMpOworCisJaWYgKHNlcSA8IG1heF9zZXEpCisJCXJldHVybiAwOworCisJaWYgKHNlcSA+IG1h eF9zZXEgfHwgKCFmb3JjZV9zY2FuICYmIG1pbl9zZXFbIWNhbl9zd2FwXSArIE1BWF9OUl9HRU5T IC0gMSA8PSBtYXhfc2VxKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0cnlfdG9faW5jX21heF9z ZXEobHJ1dmVjLCBtYXhfc2VxLCBzYywgY2FuX3N3YXAsIGZvcmNlX3NjYW4pOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgcnVuX2V2aWN0aW9uKHN0cnVjdCBscnV2ZWMgKmxydXZlYywg dW5zaWduZWQgbG9uZyBzZXEsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLAorCQkJaW50IHN3YXBw aW5lc3MsIHVuc2lnbmVkIGxvbmcgbnJfdG9fcmVjbGFpbSkKK3sKKwlzdHJ1Y3QgYmxrX3BsdWcg cGx1ZzsKKwlpbnQgZXJyID0gLUVJTlRSOworCURFRklORV9NQVhfU0VRKGxydXZlYyk7CisKKwlp ZiAoc2VxICsgTUlOX05SX0dFTlMgPiBtYXhfc2VxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXNj LT5ucl9yZWNsYWltZWQgPSAwOworCisJYmxrX3N0YXJ0X3BsdWcoJnBsdWcpOworCisJd2hpbGUg KCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworCQlERUZJTkVfTUlOX1NFUShscnV2ZWMpOwor CisJCWlmIChzZXEgPCBtaW5fc2VxWyFzd2FwcGluZXNzXSB8fCBzYy0+bnJfcmVjbGFpbWVkID49 IG5yX3RvX3JlY2xhaW0gfHwKKwkJICAgICFldmljdF9mb2xpb3MobHJ1dmVjLCBzYywgc3dhcHBp bmVzcywgTlVMTCkpIHsKKwkJCWVyciA9IDA7CisJCQlicmVhazsKKwkJfQorCisJCWNvbmRfcmVz Y2hlZCgpOworCX0KKworCWJsa19maW5pc2hfcGx1ZygmcGx1Zyk7CisKKwlyZXR1cm4gZXJyOwor fQorCitzdGF0aWMgaW50IHJ1bl9jbWQoY2hhciBjbWQsIGludCBtZW1jZ19pZCwgaW50IG5pZCwg dW5zaWduZWQgbG9uZyBzZXEsCisJCSAgIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgc3dh cHBpbmVzcywgdW5zaWduZWQgbG9uZyBvcHQpCit7CisJc3RydWN0IGxydXZlYyAqbHJ1dmVjOwor CWludCBlcnIgPSAtRUlOVkFMOworCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IE5VTEw7CisK KwlpZiAoIW1lbV9jZ3JvdXBfZGlzYWJsZWQoKSkgeworCQlyY3VfcmVhZF9sb2NrKCk7CisJCW1l bWNnID0gbWVtX2Nncm91cF9mcm9tX2lkKG1lbWNnX2lkKTsKKyNpZmRlZiBDT05GSUdfTUVNQ0cK KwkJaWYgKG1lbWNnICYmICFjc3NfdHJ5Z2V0KCZtZW1jZy0+Y3NzKSkKKwkJCW1lbWNnID0gTlVM TDsKKyNlbmRpZgorCQlyY3VfcmVhZF91bmxvY2soKTsKKworCQlpZiAoIW1lbWNnKQorCQkJZ290 byBkb25lOworCX0KKwlpZiAobWVtY2dfaWQgIT0gbWVtX2Nncm91cF9pZChtZW1jZykpCisJCWdv dG8gZG9uZTsKKworCWlmIChuaWQgPCAwIHx8IG5pZCA+PSBNQVhfTlVNTk9ERVMgfHwgIW5vZGVf c3RhdGUobmlkLCBOX01FTU9SWSkpCisJCWdvdG8gZG9uZTsKKworCWxydXZlYyA9IGdldF9scnV2 ZWMobWVtY2csIG5pZCk7CisKKwlpZiAoc3dhcHBpbmVzcyA8IDApCisJCXN3YXBwaW5lc3MgPSBn ZXRfc3dhcHBpbmVzcyhscnV2ZWMsIHNjKTsKKwllbHNlIGlmIChzd2FwcGluZXNzID4gMjAwKQor CQlnb3RvIGRvbmU7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgJysnOgorCQllcnIgPSBydW5f YWdpbmcobHJ1dmVjLCBzZXEsIHNjLCBzd2FwcGluZXNzLCBvcHQpOworCQlicmVhazsKKwljYXNl ICctJzoKKwkJZXJyID0gcnVuX2V2aWN0aW9uKGxydXZlYywgc2VxLCBzYywgc3dhcHBpbmVzcywg b3B0KTsKKwkJYnJlYWs7CisJfQorZG9uZToKKwltZW1fY2dyb3VwX3B1dChtZW1jZyk7CisKKwly ZXR1cm4gZXJyOworfQorCitzdGF0aWMgc3NpemVfdCBscnVfZ2VuX3NlcV93cml0ZShzdHJ1Y3Qg ZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnNyYywKKwkJCQkgc2l6ZV90IGxlbiwgbG9m Zl90ICpwb3MpCit7CisJdm9pZCAqYnVmOworCWNoYXIgKmN1ciwgKm5leHQ7CisJdW5zaWduZWQg aW50IGZsYWdzOworCWludCBlcnIgPSAwOworCXN0cnVjdCBzY2FuX2NvbnRyb2wgc2MgPSB7CisJ CS5tYXlfd3JpdGVwYWdlID0gdHJ1ZSwKKwkJLm1heV91bm1hcCA9IHRydWUsCisJCS5tYXlfc3dh cCA9IHRydWUsCisJCS5yZWNsYWltX2lkeCA9IE1BWF9OUl9aT05FUyAtIDEsCisJCS5nZnBfbWFz ayA9IEdGUF9LRVJORUwsCisJfTsKKworCWJ1ZiA9IGt2bWFsbG9jKGxlbiArIDEsIEdGUF9LRVJO RUwpOworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChjb3B5X2Zyb21fdXNl cihidWYsIHNyYywgbGVuKSkgeworCQlrdmZyZWUoYnVmKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJ fQorCisJbmV4dCA9IGJ1ZjsKKwluZXh0W2xlbl0gPSAnXDAnOworCisJc2MucmVjbGFpbV9zdGF0 ZS5tbV93YWxrID0gYWxsb2NfbW1fd2FsaygpOworCWlmICghc2MucmVjbGFpbV9zdGF0ZS5tbV93 YWxrKSB7CisJCWt2ZnJlZShidWYpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlzZXRfdGFz a19yZWNsYWltX3N0YXRlKGN1cnJlbnQsICZzYy5yZWNsYWltX3N0YXRlKTsKKwlmbGFncyA9IG1l bWFsbG9jX25vcmVjbGFpbV9zYXZlKCk7CisKKwl3aGlsZSAoKGN1ciA9IHN0cnNlcCgmbmV4dCwg Iiw7XG4iKSkpIHsKKwkJaW50IG47CisJCWludCBlbmQ7CisJCWNoYXIgY21kOworCQl1bnNpZ25l ZCBpbnQgbWVtY2dfaWQ7CisJCXVuc2lnbmVkIGludCBuaWQ7CisJCXVuc2lnbmVkIGxvbmcgc2Vx OworCQl1bnNpZ25lZCBpbnQgc3dhcHBpbmVzcyA9IC0xOworCQl1bnNpZ25lZCBsb25nIG9wdCA9 IC0xOworCisJCWN1ciA9IHNraXBfc3BhY2VzKGN1cik7CisJCWlmICghKmN1cikKKwkJCWNvbnRp bnVlOworCisJCW4gPSBzc2NhbmYoY3VyLCAiJWMgJXUgJXUgJWx1ICVuICV1ICVuICVsdSAlbiIs ICZjbWQsICZtZW1jZ19pZCwgJm5pZCwKKwkJCSAgICZzZXEsICZlbmQsICZzd2FwcGluZXNzLCAm ZW5kLCAmb3B0LCAmZW5kKTsKKwkJaWYgKG4gPCA0IHx8IGN1cltlbmRdKSB7CisJCQllcnIgPSAt RUlOVkFMOworCQkJYnJlYWs7CisJCX0KKworCQllcnIgPSBydW5fY21kKGNtZCwgbWVtY2dfaWQs IG5pZCwgc2VxLCAmc2MsIHN3YXBwaW5lc3MsIG9wdCk7CisJCWlmIChlcnIpCisJCQlicmVhazsK Kwl9CisKKwltZW1hbGxvY19ub3JlY2xhaW1fcmVzdG9yZShmbGFncyk7CisJc2V0X3Rhc2tfcmVj bGFpbV9zdGF0ZShjdXJyZW50LCBOVUxMKTsKKworCWZyZWVfbW1fd2FsayhzYy5yZWNsYWltX3N0 YXRlLm1tX3dhbGspOworCWt2ZnJlZShidWYpOworCisJcmV0dXJuIGVyciA/IDogbGVuOworfQor CitzdGF0aWMgaW50IGxydV9nZW5fc2VxX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IGZpbGUgKmZpbGUpCit7CisJcmV0dXJuIHNlcV9vcGVuKGZpbGUsICZscnVfZ2VuX3NlcV9vcHMp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBscnVfZ2VuX3J3X2Zv cHMgPSB7CisJLm9wZW4gPSBscnVfZ2VuX3NlcV9vcGVuLAorCS5yZWFkID0gc2VxX3JlYWQsCisJ LndyaXRlID0gbHJ1X2dlbl9zZXFfd3JpdGUsCisJLmxsc2VlayA9IHNlcV9sc2VlaywKKwkucmVs ZWFzZSA9IHNlcV9yZWxlYXNlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgbHJ1X2dlbl9yb19mb3BzID0geworCS5vcGVuID0gbHJ1X2dlbl9zZXFfb3BlbiwKKwku cmVhZCA9IHNlcV9yZWFkLAorCS5sbHNlZWsgPSBzZXFfbHNlZWssCisJLnJlbGVhc2UgPSBzZXFf cmVsZWFzZSwKK307CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAgICAg ICAgICAgICAgICBpbml0aWFsaXphdGlvbgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTUy MzMsNiArNTYxMyw5IEBAIHN0YXRpYyBpbnQgX19pbml0IGluaXRfbHJ1X2dlbih2b2lkKQogCWlm IChzeXNmc19jcmVhdGVfZ3JvdXAobW1fa29iaiwgJmxydV9nZW5fYXR0cl9ncm91cCkpCiAJCXBy X2VycigibHJ1X2dlbjogZmFpbGVkIHRvIGNyZWF0ZSBzeXNmcyBncm91cFxuIik7CiAKKwlkZWJ1 Z2ZzX2NyZWF0ZV9maWxlKCJscnVfZ2VuIiwgMDY0NCwgTlVMTCwgTlVMTCwgJmxydV9nZW5fcndf Zm9wcyk7CisJZGVidWdmc19jcmVhdGVfZmlsZSgibHJ1X2dlbl9mdWxsIiwgMDQ0NCwgTlVMTCwg TlVMTCwgJmxydV9nZW5fcm9fZm9wcyk7CisKIAlyZXR1cm4gMDsKIH07CiBsYXRlX2luaXRjYWxs KGluaXRfbHJ1X2dlbik7Ci0tIAoyLjM2LjAuNTUwLmdiMDkwODUxNzA4LWdvb2cKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==