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=-11.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MISSING_HEADERS,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 4D567C433DF for ; Wed, 14 Oct 2020 00:55:33 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DD311208B3 for ; Wed, 14 Oct 2020 00:55:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SnYkyghM"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=google.com header.i=@google.com header.b="XDA/zDw/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DD311208B3 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:From:Subject:References:Mime-Version:Message-Id: In-Reply-To:Date:Reply-To:To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0xXSe/ubfhdMWhfGUR57ytoGOHMPHVNjukItd3aenpI=; b=SnYkyghMjgLPjPS32MsQ2ND3I DOhEqRuexEIQsTHk1KuYB6vNdcWMEPtPku4MV2nGvMwN1AnAOd8yGr/gjEkVqCDaDKFvAubQb+qCA BxXtE+dLzHVj/IyxI+BwkV5DCjyfSsahBdjgfVl1z77umLwqcIf/WrJ1cr13yDuJfWkvnUBNxumpi 2ySu5NGL8G8I6mCrunZwfs1d4ORGbbVfgFToMbYqAH4KZ2vv/Z1OQQcYh49EikJAgzSoD3O22olq1 N0LrNVn1n2frLUoTuzCFKJlPUmvOH2ma9WqHa01syk+95xDzNv3jqfysXQ9n2EqyhEx9ACqI6de0C xe8CKZIAQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kSV3P-0002wX-V7; Wed, 14 Oct 2020 00:54:07 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kSV3M-0002uz-GD for linux-arm-kernel@lists.infradead.org; Wed, 14 Oct 2020 00:54:06 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id x14so1591895ybg.7 for ; Tue, 13 Oct 2020 17:54:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:date:in-reply-to:message-id:mime-version:references:subject :from:cc:content-transfer-encoding; bh=vil/uL7k8s9vtbowO5/5vNSXN57mCTz8YajPzcwGOYo=; b=XDA/zDw/XziikYhzcUiHrGjIxpVIVjsuR9oRHfgopmN2G+FSJh8fDAtoxxvf627uGA iijgtyy6sMJFryyZcrZV5JHg9hBeIUIl0GuxU9bf3W3GUCP0VMFueM3+CK2OYa4KRlrL HQaKTszHv/rYbztZozLRE8eBAsjnChz/ka3ho4Lp/Uj1K7l9L5ZPC5AbPWFYaapn1/uK CFuThUhXbUqxGnG2JLYdgc6SnvDv80arqBxvSGU5KmyyWwijiDNoAtPpEvmytb0uANq2 qp5ovFKzC8CAlEEa8DHUvfgdnMHcdNq2rlWjDXdbAnoVETxxxXkzSOlBsjbv+igxRP3u 7y5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:in-reply-to:message-id:mime-version :references:subject:from:cc:content-transfer-encoding; bh=vil/uL7k8s9vtbowO5/5vNSXN57mCTz8YajPzcwGOYo=; b=d8zDVsfmGDcqX234lbXd+h7iEgCsJd7UmJC8i9+VBJxDv6B5IdMf+HbCpsE/4zR56r 8UAW4a220Lr8eCrBRvC85PD8eG2QoWmdHjozLQfIbRAhhr2f2BB+ZiAZxprmqP3qFY/l t2zon+841fBL1xqy2W5CCN+qdpWs9RS5+voe2ZAPlG89ThMmTgKlvo4RhT0NW6N649sf 4mUhNjN+U4QiwHBMuiHu/hHcaFRWcO28CusmF30GAkTbK2mo+1LxADzJLrIEDHahMIcY NMtq7vWqvaTSUy54UDsNbJWB4ZCKsdqc4PxAPIYhFPRlzXKoY8niOBiuBuYSGHMiFWmd MyUA== X-Gm-Message-State: AOAM531WF0felDiyDXOqVIZ5lINkEZeg5MFzwHWWt1LX+MCj6cwBea3W pu4n4GKPd+eLkA//OkNPSDb1ferFsBOvBF+Tcg== X-Google-Smtp-Source: ABdhPJwKdKSl7EYGwQz8WliaY39Q2V0m15g/zQ6c3ooOMo8q2QDX1m6UP5TWoz4wBtmijgyCk1XJ9v3pM8UzX2UpvQ== X-Received: from kaleshsingh.c.googlers.com ([fda3:e722:ac3:10:14:4d90:c0a8:2145]) (user=kaleshsingh job=sendgmr) by 2002:a25:ab23:: with SMTP id u32mr3791534ybi.221.1602636840675; Tue, 13 Oct 2020 17:54:00 -0700 (PDT) Date: Wed, 14 Oct 2020 00:53:06 +0000 In-Reply-To: <20201014005320.2233162-1-kaleshsingh@google.com> Message-Id: <20201014005320.2233162-2-kaleshsingh@google.com> Mime-Version: 1.0 References: <20201014005320.2233162-1-kaleshsingh@google.com> X-Mailer: git-send-email 2.28.0.1011.ga647a8990f-goog Subject: [PATCH v4 1/5] kselftests: vm: Add mremap tests From: Kalesh Singh X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201013_205404_560725_16F03BF1 X-CRM114-Status: GOOD ( 34.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: joelaf@google.com, Gavin Shan , Brian Geffon , Peter Zijlstra , Catalin Marinas , kaleshsingh@google.com, Ram Pai , Dave Hansen , Will Deacon , lokeshgidra@google.com, linux-kselftest@vger.kernel.org, "H. Peter Anvin" , Christian Brauner , Shuah Khan , Mina Almasry , Jia He , Arnd Bergmann , "Aneesh Kumar K.V" , Masahiro Yamada , x86@kernel.org, Krzysztof Kozlowski , Steven Price , Ingo Molnar , Sami Tolvanen , kernel-team@android.com, Hassan Naveed , Masami Hiramatsu , Ralph Campbell , Kees Cook , minchan@google.com, Anshuman Khandual , John Hubbard , Frederic Weisbecker , Borislav Petkov , Josh Poimboeuf , Thomas Gleixner , Zi Yan , surenb@google.com, linux-arm-kernel@lists.infradead.org, SeongJae Park , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mike Rapoport , Andrew Morton , "Kirill A . Shutemov" , Sandipan Das 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 VGVzdCBtcmVtYXAgb24gcmVnaW9ucyBvZiB2YXJpb3VzIHNpemVzIGFuZCBhbGlnbm1lbnRzIGFu ZCB2YWxpZGF0ZQpkYXRhIGFmdGVyIHJlbWFwcGluZy4gQWxzbyBwcm92aWRlIHRvdGFsIHRpbWUg Zm9yIHJlbWFwcGluZwp0aGUgcmVnaW9uIHdoaWNoIGlzIHVzZWZ1bCBmb3IgcGVyZm9ybWFuY2Ug Y29tcGFyaXNvbiBvZiB0aGUgbXJlbWFwCm9wdGltaXphdGlvbnMgdGhhdCBtb3ZlIHBhZ2VzIGF0 IHRoZSBQTUQvUFVEIGxldmVscyBpZiBIQVZFX01PVkVfUE1ECmFuZC9vciBIQVZFX01PVkVfUFVE IGFyZSBlbmFibGVkLgoKU2lnbmVkLW9mZi1ieTogS2FsZXNoIFNpbmdoIDxrYWxlc2hzaW5naEBn b29nbGUuY29tPgpSZXZpZXdlZC1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29t PgpDYzogU2h1YWggS2hhbiA8c2h1YWhAa2VybmVsLm9yZz4KQ2M6IEFuZHJldyBNb3J0b24gPGFr cG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBLaXJpbGwgQS4gU2h1dGVtb3YgPGtpcmlsbC5z aHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+Ci0tLQpDaGFuZ2VzIGluIHYyOgogIC0gUmVkdWNlIHRl c3QgdGltZSBieSBvbmx5IHZhbGlkYXRpbmcgYSBjZXJ0YWluIHRocmVzaG9sZCBvZiB0aGUKICAg IHJlbWFwcGVkIHJlZ2lvbiAoNE1CIGJ5IGRlZmF1bHQpLiBUaGUgLXQgZmxhZyBjYW4gYmUgdXNl ZCB0bwogICAgc2V0IGEgY3VzdG9tIHRocmVzaG9sZCBpbiBNQiBvciBubyB0aHJlc2hvbGQgYnkg cGFzc2luZyAwLiAoLXQwKS4KICAgIG1yZW1hcCB0aW1lIGlzIG5vdCBwcm92aWRlZCBpbiBzdGRv dXQgZm9yIG9ubHkgcGFydGlhbGx5IHZhbGlkYXRlZAogICAgcmVnaW9ucy4gVGhpcyB0aW1lIGlz IG9ubHkgYXBwbGljYWJsZSBmb3IgY29tcGFyaXNvbiBpZiB0aGUgZW50aXJlCiAgICBtYXBwZWQg cmVnaW9uIHdhcyBmYXVsdGVkIGluLgogIC0gVXNlIGEgcmFuZG9tIHBhdHRlcm4gZm9yIHZhbGlk YXRpbmcgdGhlIHJlbWFwcGVkIHJlZ2lvbi4gVGhlIC1wCiAgICBmbGFnIGNhbiBiZSB1c2VkIHRv IHJ1biB0aGUgdGVzdHMgd2l0aCBhIHNwZWNpZmllZCBzZWVkIGZvciB0aGUKICAgIHJhbmRvbSBw YXR0ZXJuLgogIC0gUHJpbnQgdGVzdCBjb25maWdzICh0aHJlc2hvbGRfbWIgYW5kIHBhdHRlcm5f c2VlZCkgdG8gc3Rkb3V0LgogIC0gUmVtb3ZlIE1BS0VfU0lNUExFX1RFU1QgbWFjcm8uCiAgLSBE ZWZpbmUgbmFtZWQgZmxhZ3MgaW5zdGVhZCBvZiAwIC8gMS4KICAtIEFkZCBjb21tZW50cyBmb3Ig ZGVzdGluYXRpb24gYWRkcmVzcycgYWxpZ25fbWFzayBhbmQgb2Zmc2V0LgoKQ2hhbmdlcyBpbiB2 MzoKICAtIFJlbW92ZSB1bnVzZWQgUEFUVEVSTl9TSVpFIGRlZmluaXRpb24uCiAgLSBNYWtlIGxp bmVzIDgwIGNvbHMgb3IgbGVzcyB3aGVyZSB0aGV5IGRvbuKAmXQgbmVlZCB0byBiZSBsb25nZXIu CiAgLSBBZGQgSm9obiBIdWJiYXJk4oCZcyBSZXZpZXdlZC1ieSB0YWcuCgogdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvdm0vLmdpdGlnbm9yZSAgICB8ICAgMSArCiB0b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy92bS9NYWtlZmlsZSAgICAgIHwgICAxICsKIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zt L21yZW1hcF90ZXN0LmMgfCAzNDQgKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3ZtL3J1bl92bXRlc3RzICAgfCAgMTEgKwogNCBmaWxlcyBjaGFuZ2VkLCAz NTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3ZtL21yZW1hcF90ZXN0LmMKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy92bS8uZ2l0aWdub3JlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vLmdpdGlnbm9yZQpp bmRleCA4NDllODIyNjM5NWEuLmIzYTE4M2MzNmNiNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvdm0vLmdpdGlnbm9yZQorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92 bS8uZ2l0aWdub3JlCkBAIC04LDYgKzgsNyBAQCB0aHVnZS1nZW4KIGNvbXBhY3Rpb25fdGVzdAog bWxvY2syLXRlc3RzCiBtcmVtYXBfZG9udHVubWFwCittcmVtYXBfdGVzdAogb24tZmF1bHQtbGlt aXQKIHRyYW5zaHVnZS1zdHJlc3MKIHByb3RlY3Rpb25fa2V5cwpkaWZmIC0tZ2l0IGEvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvdm0vTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92 bS9NYWtlZmlsZQppbmRleCBhOTAyNjcwNmQ1OTcuLmYwNDQ4MDhiNDVmYSAxMDA2NDQKLS0tIGEv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdGluZy9z ZWxmdGVzdHMvdm0vTWFrZWZpbGUKQEAgLTE2LDYgKzE2LDcgQEAgVEVTVF9HRU5fRklMRVMgKz0g bWFwX3BvcHVsYXRlCiBURVNUX0dFTl9GSUxFUyArPSBtbG9jay1yYW5kb20tdGVzdAogVEVTVF9H RU5fRklMRVMgKz0gbWxvY2syLXRlc3RzCiBURVNUX0dFTl9GSUxFUyArPSBtcmVtYXBfZG9udHVu bWFwCitURVNUX0dFTl9GSUxFUyArPSBtcmVtYXBfdGVzdAogVEVTVF9HRU5fRklMRVMgKz0gb24t ZmF1bHQtbGltaXQKIFRFU1RfR0VOX0ZJTEVTICs9IHRodWdlLWdlbgogVEVTVF9HRU5fRklMRVMg Kz0gdHJhbnNodWdlLXN0cmVzcwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv dm0vbXJlbWFwX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZtL21yZW1hcF90ZXN0 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YzM5MWQwMTY5MjIK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92bS9tcmVtYXBfdGVz dC5jCkBAIC0wLDAgKzEsMzQ0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MAorLyoKKyAqIENvcHlyaWdodCAyMDIwIEdvb2dsZSBMTEMKKyAqLworI2RlZmluZSBfR05VX1NP VVJDRQorCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKwor I2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgorCisjZGVmaW5lIEVYUEVDVF9TVUNDRVNTIDAKKyNk ZWZpbmUgRVhQRUNUX0ZBSUxVUkUgMQorI2RlZmluZSBOT05fT1ZFUkxBUFBJTkcgMAorI2RlZmlu ZSBPVkVSTEFQUElORyAxCisjZGVmaW5lIE5TX1BFUl9TRUMgMTAwMDAwMDAwMFVMTAorI2RlZmlu ZSBWQUxJREFUSU9OX0RFRkFVTFRfVEhSRVNIT0xEIDQJLyogNE1CICovCisjZGVmaW5lIFZBTElE QVRJT05fTk9fVEhSRVNIT0xEIDAJLyogVmVyaWZ5IHRoZSBlbnRpcmUgcmVnaW9uICovCisKKyNk ZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCisjZGVmaW5l IE1JTihYLCBZKSAoKFgpIDwgKFkpID8gKFgpIDogKFkpKQorCitzdHJ1Y3QgY29uZmlnIHsKKwl1 bnNpZ25lZCBsb25nIGxvbmcgc3JjX2FsaWdubWVudDsKKwl1bnNpZ25lZCBsb25nIGxvbmcgZGVz dF9hbGlnbm1lbnQ7CisJdW5zaWduZWQgbG9uZyBsb25nIHJlZ2lvbl9zaXplOworCWludCBvdmVy bGFwcGluZzsKK307CisKK3N0cnVjdCB0ZXN0IHsKKwljb25zdCBjaGFyICpuYW1lOworCXN0cnVj dCBjb25maWcgY29uZmlnOworCWludCBleHBlY3RfZmFpbHVyZTsKK307CisKK2VudW0geworCV8x S0IgPSAxVUxMIDw8IDEwLAkvKiAxS0IgLT4gbm90IHBhZ2UgYWxpZ25lZCAqLworCV80S0IgPSA0 VUxMIDw8IDEwLAorCV84S0IgPSA4VUxMIDw8IDEwLAorCV8xTUIgPSAxVUxMIDw8IDIwLAorCV8y TUIgPSAyVUxMIDw8IDIwLAorCV80TUIgPSA0VUxMIDw8IDIwLAorCV8xR0IgPSAxVUxMIDw8IDMw LAorCV8yR0IgPSAyVUxMIDw8IDMwLAorCVBURSA9IF80S0IsCisJUE1EID0gXzJNQiwKKwlQVUQg PSBfMUdCLAorfTsKKworI2RlZmluZSBNQUtFX1RFU1Qoc291cmNlX2FsaWduLCBkZXN0aW5hdGlv bl9hbGlnbiwgc2l6ZSwJXAorCQkgIG92ZXJsYXBzLCBzaG91bGRfZmFpbCwgdGVzdF9uYW1lKQkJ XAorewkJCQkJCQkJXAorCS5uYW1lID0gdGVzdF9uYW1lLAkJCQkJXAorCS5jb25maWcgPSB7CQkJ CQkJXAorCQkuc3JjX2FsaWdubWVudCA9IHNvdXJjZV9hbGlnbiwJCQlcCisJCS5kZXN0X2FsaWdu bWVudCA9IGRlc3RpbmF0aW9uX2FsaWduLAkJXAorCQkucmVnaW9uX3NpemUgPSBzaXplLAkJCQlc CisJCS5vdmVybGFwcGluZyA9IG92ZXJsYXBzLAkJCVwKKwl9LAkJCQkJCQlcCisJLmV4cGVjdF9m YWlsdXJlID0gc2hvdWxkX2ZhaWwJCQkJXAorfQorCisvKgorICogUmV0dXJucyB0aGUgc3RhcnQg YWRkcmVzcyBvZiB0aGUgbWFwcGluZyBvbiBzdWNjZXNzLCBlbHNlIHJldHVybnMKKyAqIE5VTEwg b24gZmFpbHVyZS4KKyAqLworc3RhdGljIHZvaWQgKmdldF9zb3VyY2VfbWFwcGluZyhzdHJ1Y3Qg Y29uZmlnIGMpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIGFkZHIgPSAwVUxMOworCXZvaWQgKnNy Y19hZGRyID0gTlVMTDsKK3JldHJ5OgorCWFkZHIgKz0gYy5zcmNfYWxpZ25tZW50OworCXNyY19h ZGRyID0gbW1hcCgodm9pZCAqKSBhZGRyLCBjLnJlZ2lvbl9zaXplLCBQUk9UX1JFQUQgfCBQUk9U X1dSSVRFLAorCQkJTUFQX0ZJWEVEIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9TSEFSRUQsIC0xLCAw KTsKKwlpZiAoc3JjX2FkZHIgPT0gTUFQX0ZBSUxFRCkgeworCQlpZiAoZXJybm8gPT0gRVBFUk0p CisJCQlnb3RvIHJldHJ5OworCQlnb3RvIGVycm9yOworCX0KKwkvKgorCSAqIENoZWNrIHRoYXQg dGhlIGFkZHJlc3MgaXMgYWxpZ25lZCB0byB0aGUgc3BlY2lmaWVkIGFsaWdubWVudC4KKwkgKiBB ZGRyZXNzZXMgd2hpY2ggaGF2ZSBhbGlnbm1lbnRzIHRoYXQgYXJlIG11bHRpcGxlcyBvZiB0aGF0 CisJICogc3BlY2lmaWVkIGFyZSBub3QgY29uc2lkZXJlZCB2YWxpZC4gRm9yIGluc3RhbmNlLCAx R0IgYWRkcmVzcyBpcworCSAqIDJNQi1hbGlnbmVkLCBob3dldmVyIGl0IHdpbGwgbm90IGJlIGNv bnNpZGVyZWQgdmFsaWQgZm9yIGEKKwkgKiByZXF1ZXN0ZWQgYWxpZ25tZW50IG9mIDJNQi4gVGhp cyBpcyBkb25lIHRvIHJlZHVjZSBjb2luY2lkZW50YWwKKwkgKiBhbGlnbm1lbnQgaW4gdGhlIHRl c3RzLgorCSAqLworCWlmICgoKHVuc2lnbmVkIGxvbmcgbG9uZykgc3JjX2FkZHIgJiAoYy5zcmNf YWxpZ25tZW50IC0gMSkpIHx8CisJCQkhKCh1bnNpZ25lZCBsb25nIGxvbmcpIHNyY19hZGRyICYg Yy5zcmNfYWxpZ25tZW50KSkKKwkJZ290byByZXRyeTsKKworCWlmICghc3JjX2FkZHIpCisJCWdv dG8gZXJyb3I7CisKKwlyZXR1cm4gc3JjX2FkZHI7CitlcnJvcjoKKwlrc2Z0X3ByaW50X21zZygi RmFpbGVkIHRvIG1hcCBzb3VyY2UgcmVnaW9uOiAlc1xuIiwKKwkJCXN0cmVycm9yKGVycm5vKSk7 CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qIFJldHVybnMgdGhlIHRpbWUgdGFrZW4gZm9yIHRoZSBy ZW1hcCBvbiBzdWNjZXNzIGVsc2UgcmV0dXJucyAtMS4gKi8KK3N0YXRpYyBsb25nIGxvbmcgcmVt YXBfcmVnaW9uKHN0cnVjdCBjb25maWcgYywgdW5zaWduZWQgaW50IHRocmVzaG9sZF9tYiwKKwkJ CSAgICAgIGNoYXIgcGF0dGVybl9zZWVkKQoreworCXZvaWQgKmFkZHIsICpzcmNfYWRkciwgKmRl c3RfYWRkcjsKKwl1bnNpZ25lZCBsb25nIGxvbmcgaTsKKwlzdHJ1Y3QgdGltZXNwZWMgdF9zdGFy dCA9IHswLCAwfSwgdF9lbmQgPSB7MCwgMH07CisJbG9uZyBsb25nICBzdGFydF9ucywgZW5kX25z LCBhbGlnbl9tYXNrLCByZXQsIG9mZnNldDsKKwl1bnNpZ25lZCBsb25nIGxvbmcgdGhyZXNob2xk OworCisJaWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFUSU9OX05PX1RIUkVTSE9MRCkKKwkJdGhy ZXNob2xkID0gYy5yZWdpb25fc2l6ZTsKKwllbHNlCisJCXRocmVzaG9sZCA9IE1JTih0aHJlc2hv bGRfbWIgKiBfMU1CLCBjLnJlZ2lvbl9zaXplKTsKKworCXNyY19hZGRyID0gZ2V0X3NvdXJjZV9t YXBwaW5nKGMpOworCWlmICghc3JjX2FkZHIpIHsKKwkJcmV0ID0gLTE7CisJCWdvdG8gb3V0Owor CX0KKworCS8qIFNldCBieXRlIHBhdHRlcm4gKi8KKwlzcmFuZChwYXR0ZXJuX3NlZWQpOworCWZv ciAoaSA9IDA7IGkgPCB0aHJlc2hvbGQ7IGkrKykKKwkJbWVtc2V0KChjaGFyICopIHNyY19hZGRy ICsgaSwgKGNoYXIpIHJhbmQoKSwgMSk7CisKKwkvKiBNYXNrIHRvIHplcm8gb3V0IGxvd2VyIGJp dHMgb2YgYWRkcmVzcyBmb3IgYWxpZ25tZW50ICovCisJYWxpZ25fbWFzayA9IH4oYy5kZXN0X2Fs aWdubWVudCAtIDEpOworCS8qIE9mZnNldCBvZiBkZXN0aW5hdGlvbiBhZGRyZXNzIGZyb20gdGhl IGVuZCBvZiB0aGUgc291cmNlIHJlZ2lvbiAqLworCW9mZnNldCA9IChjLm92ZXJsYXBwaW5nKSA/ IC1jLmRlc3RfYWxpZ25tZW50IDogYy5kZXN0X2FsaWdubWVudDsKKwlhZGRyID0gKHZvaWQgKikg KCgodW5zaWduZWQgbG9uZyBsb25nKSBzcmNfYWRkciArIGMucmVnaW9uX3NpemUKKwkJCSAgKyBv ZmZzZXQpICYgYWxpZ25fbWFzayk7CisKKwkvKiBTZWUgY29tbWVudCBpbiBnZXRfc291cmNlX21h cHBpbmcoKSAqLworCWlmICghKCh1bnNpZ25lZCBsb25nIGxvbmcpIGFkZHIgJiBjLmRlc3RfYWxp Z25tZW50KSkKKwkJYWRkciA9ICh2b2lkICopICgodW5zaWduZWQgbG9uZyBsb25nKSBhZGRyIHwg Yy5kZXN0X2FsaWdubWVudCk7CisKKwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRf c3RhcnQpOworCWRlc3RfYWRkciA9IG1yZW1hcChzcmNfYWRkciwgYy5yZWdpb25fc2l6ZSwgYy5y ZWdpb25fc2l6ZSwKKwkJCU1SRU1BUF9NQVlNT1ZFfE1SRU1BUF9GSVhFRCwgKGNoYXIgKikgYWRk cik7CisJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0X2VuZCk7CisKKwlpZiAoZGVz dF9hZGRyID09IE1BUF9GQUlMRUQpIHsKKwkJa3NmdF9wcmludF9tc2coIm1yZW1hcCBmYWlsZWQ6 ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQlyZXQgPSAtMTsKKwkJZ290byBjbGVhbl91cF9z cmM7CisJfQorCisJLyogVmVyaWZ5IGJ5dGUgcGF0dGVybiBhZnRlciByZW1hcHBpbmcgKi8KKwlz cmFuZChwYXR0ZXJuX3NlZWQpOworCWZvciAoaSA9IDA7IGkgPCB0aHJlc2hvbGQ7IGkrKykgewor CQljaGFyIGMgPSAoY2hhcikgcmFuZCgpOworCisJCWlmICgoKGNoYXIgKikgZGVzdF9hZGRyKVtp XSAhPSBjKSB7CisJCQlrc2Z0X3ByaW50X21zZygiRGF0YSBhZnRlciByZW1hcCBkb2Vzbid0IG1h dGNoIGF0IG9mZnNldCAlZFxuIiwKKwkJCQkgICAgICAgaSk7CisJCQlrc2Z0X3ByaW50X21zZygi RXhwZWN0ZWQ6ICUjeFx0IEdvdDogJSN4XG4iLCBjICYgMHhmZiwKKwkJCQkJKChjaGFyICopIGRl c3RfYWRkcilbaV0gJiAweGZmKTsKKwkJCXJldCA9IC0xOworCQkJZ290byBjbGVhbl91cF9kZXN0 OworCQl9CisJfQorCisJc3RhcnRfbnMgPSB0X3N0YXJ0LnR2X3NlYyAqIE5TX1BFUl9TRUMgKyB0 X3N0YXJ0LnR2X25zZWM7CisJZW5kX25zID0gdF9lbmQudHZfc2VjICogTlNfUEVSX1NFQyArIHRf ZW5kLnR2X25zZWM7CisJcmV0ID0gZW5kX25zIC0gc3RhcnRfbnM7CisKKy8qCisgKiBTaW5jZSB0 aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBzcGVjaWZpZWQgdXNpbmcgTVJFTUFQX0ZJWEVELCBz dWJzZXF1ZW50CisgKiBtcmVtYXAgd2lsbCB1bm1hcCBhbnkgcHJldmlvdXMgbWFwcGluZyBhdCB0 aGUgYWRkcmVzcyByYW5nZSBzcGVjaWZpZWQgYnkKKyAqIGRlc3RfYWRkciBhbmQgcmVnaW9uX3Np emUuIFRoaXMgc2lnbmlmaWNhbnRseSBhZmZlY3RzIHRoZSByZW1hcCB0aW1lIG9mCisgKiBzdWJz ZXF1ZW50IHRlc3RzLiBTbyB3ZSBjbGVhbiB1cCBtYXBwaW5ncyBhZnRlciBlYWNoIHRlc3QuCisg Ki8KK2NsZWFuX3VwX2Rlc3Q6CisJbXVubWFwKGRlc3RfYWRkciwgYy5yZWdpb25fc2l6ZSk7Citj bGVhbl91cF9zcmM6CisJbXVubWFwKHNyY19hZGRyLCBjLnJlZ2lvbl9zaXplKTsKK291dDoKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3Qg dGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsCisJCQkJIHVuc2lnbmVkIGludCB0aHJlc2hv bGRfbWIsCisJCQkJIHVuc2lnbmVkIGludCBwYXR0ZXJuX3NlZWQpCit7CisJbG9uZyBsb25nIHJl bWFwX3RpbWUgPSByZW1hcF9yZWdpb24odGVzdF9jYXNlLmNvbmZpZywgdGhyZXNob2xkX21iLAor CQkJCQkgICAgcGF0dGVybl9zZWVkKTsKKworCWlmIChyZW1hcF90aW1lIDwgMCkgeworCQlpZiAo dGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKQorCQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCIlc1xu XHRFeHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxuIiwKKwkJCQkJICAgICAgdGVzdF9jYXNlLm5hbWUp OworCQllbHNlIHsKKwkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgiJXNcbiIsIHRlc3RfY2FzZS5u YW1lKTsKKwkJCSpmYWlsdXJlcyArPSAxOworCQl9CisJfSBlbHNlIHsKKwkJLyoKKwkJICogQ29t cGFyaW5nIG1yZW1hcCB0aW1lIGlzIG9ubHkgYXBwbGljYWJsZSBpZiBlbnRpcmUgcmVnaW9uCisJ CSAqIHdhcyBmYXVsdGVkIGluLgorCQkgKi8KKwkJaWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFU SU9OX05PX1RIUkVTSE9MRCB8fAorCQkgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSA8 PSB0aHJlc2hvbGRfbWIgKiBfMU1CKQorCQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCIlc1xuXHRt cmVtYXAgdGltZTogJTEybGxkbnNcbiIsCisJCQkJCSAgICAgIHRlc3RfY2FzZS5uYW1lLCByZW1h cF90aW1lKTsKKwkJZWxzZQorCQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCIlc1xuIiwgdGVzdF9j YXNlLm5hbWUpOworCX0KK30KKworc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqY21kKQor eworCWZwcmludGYoc3RkZXJyLAorCQkiVXNhZ2U6ICVzIFtbLXQgPHRocmVzaG9sZF9tYj5dIFst cCA8cGF0dGVybl9zZWVkPl1dXG4iCisJCSItdFx0IG9ubHkgdmFsaWRhdGUgdGhyZXNob2xkX21i IG9mIHRoZSByZW1hcHBlZCByZWdpb25cbiIKKwkJIiAgXHQgaWYgMCBpcyBzdXBwbGllZCBubyB0 aHJlc2hvbGQgaXMgdXNlZDsgYWxsIHRlc3RzXG4iCisJCSIgIFx0IGFyZSBydW4gYW5kIHJlbWFw cGVkIHJlZ2lvbnMgdmFsaWRhdGVkIGZ1bGx5LlxuIgorCQkiICBcdCBUaGUgZGVmYXVsdCB0aHJl c2hvbGQgdXNlZCBpcyA0TUIuXG4iCisJCSItcFx0IHByb3ZpZGUgYSBzZWVkIHRvIGdlbmVyYXRl IHRoZSByYW5kb20gcGF0dGVybiBmb3JcbiIKKwkJIiAgXHQgdmFsaWRhdGluZyB0aGUgcmVtYXBw ZWQgcmVnaW9uLlxuIiwgY21kKTsKK30KKworc3RhdGljIGludCBwYXJzZV9hcmdzKGludCBhcmdj LCBjaGFyICoqYXJndiwgdW5zaWduZWQgaW50ICp0aHJlc2hvbGRfbWIsCisJCSAgICAgIHVuc2ln bmVkIGludCAqcGF0dGVybl9zZWVkKQoreworCWNvbnN0IGNoYXIgKm9wdHN0ciA9ICJ0OnA6IjsK KwlpbnQgb3B0OworCisJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgb3B0c3RyKSkg IT0gLTEpIHsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAndCc6CisJCQkqdGhyZXNob2xkX21i ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3AnOgorCQkJKnBhdHRlcm5fc2Vl ZCA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UoYXJndlsw XSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlpZiAob3B0aW5kIDwgYXJnYykgeworCQl1 c2FnZShhcmd2WzBdKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQorCitpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGZhaWx1cmVzID0gMDsKKwlpbnQg aSwgcnVuX3BlcmZfdGVzdHM7CisJdW5zaWduZWQgaW50IHRocmVzaG9sZF9tYiA9IFZBTElEQVRJ T05fREVGQVVMVF9USFJFU0hPTEQ7CisJdW5zaWduZWQgaW50IHBhdHRlcm5fc2VlZDsKKwl0aW1l X3QgdDsKKworCXBhdHRlcm5fc2VlZCA9ICh1bnNpZ25lZCBpbnQpIHRpbWUoJnQpOworCisJaWYg KHBhcnNlX2FyZ3MoYXJnYywgYXJndiwgJnRocmVzaG9sZF9tYiwgJnBhdHRlcm5fc2VlZCkgPCAw KQorCQlleGl0KEVYSVRfRkFJTFVSRSk7CisKKwlrc2Z0X3ByaW50X21zZygiVGVzdCBjb25maWdz OlxuXHR0aHJlc2hvbGRfbWI9JXVcblx0cGF0dGVybl9zZWVkPSV1XG5cbiIsCisJCSAgICAgICB0 aHJlc2hvbGRfbWIsIHBhdHRlcm5fc2VlZCk7CisKKwlzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2VzW10g PSB7CisJCS8qIEV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlcyAqLworCQlNQUtFX1RFU1QoXzRLQiwg XzRLQiwgXzRLQiwgT1ZFUkxBUFBJTkcsIEVYUEVDVF9GQUlMVVJFLAorCQkgICJtcmVtYXAgLSBT b3VyY2UgYW5kIERlc3RpbmF0aW9uIFJlZ2lvbnMgT3ZlcmxhcHBpbmciKSwKKwkJTUFLRV9URVNU KF80S0IsIF8xS0IsIF80S0IsIE5PTl9PVkVSTEFQUElORywgRVhQRUNUX0ZBSUxVUkUsCisJCSAg Im1yZW1hcCAtIERlc3RpbmF0aW9uIEFkZHJlc3MgTWlzYWxpZ25lZCAoMUtCLWFsaWduZWQpIiks CisJCU1BS0VfVEVTVChfMUtCLCBfNEtCLCBfNEtCLCBOT05fT1ZFUkxBUFBJTkcsIEVYUEVDVF9G QUlMVVJFLAorCQkgICJtcmVtYXAgLSBTb3VyY2UgQWRkcmVzcyBNaXNhbGlnbmVkICgxS0ItYWxp Z25lZCkiKSwKKworCQkvKiBTcmMgYWRkciBQVEUgYWxpZ25lZCAqLworCQlNQUtFX1RFU1QoUFRF LCBQVEUsIF84S0IsIE5PTl9PVkVSTEFQUElORywgRVhQRUNUX1NVQ0NFU1MsCisJCSAgIjhLQiBt cmVtYXAgLSBTb3VyY2UgUFRFLWFsaWduZWQsIERlc3RpbmF0aW9uIFBURS1hbGlnbmVkIiksCisK KwkJLyogU3JjIGFkZHIgMU1CIGFsaWduZWQgKi8KKwkJTUFLRV9URVNUKF8xTUIsIFBURSwgXzJN QiwgTk9OX09WRVJMQVBQSU5HLCBFWFBFQ1RfU1VDQ0VTUywKKwkJICAiMk1CIG1yZW1hcCAtIFNv dXJjZSAxTUItYWxpZ25lZCwgRGVzdGluYXRpb24gUFRFLWFsaWduZWQiKSwKKwkJTUFLRV9URVNU KF8xTUIsIF8xTUIsIF8yTUIsIE5PTl9PVkVSTEFQUElORywgRVhQRUNUX1NVQ0NFU1MsCisJCSAg IjJNQiBtcmVtYXAgLSBTb3VyY2UgMU1CLWFsaWduZWQsIERlc3RpbmF0aW9uIDFNQi1hbGlnbmVk IiksCisKKwkJLyogU3JjIGFkZHIgUE1EIGFsaWduZWQgKi8KKwkJTUFLRV9URVNUKFBNRCwgUFRF LCBfNE1CLCBOT05fT1ZFUkxBUFBJTkcsIEVYUEVDVF9TVUNDRVNTLAorCQkgICI0TUIgbXJlbWFw IC0gU291cmNlIFBNRC1hbGlnbmVkLCBEZXN0aW5hdGlvbiBQVEUtYWxpZ25lZCIpLAorCQlNQUtF X1RFU1QoUE1ELCBfMU1CLCBfNE1CLCBOT05fT1ZFUkxBUFBJTkcsIEVYUEVDVF9TVUNDRVNTLAor CQkgICI0TUIgbXJlbWFwIC0gU291cmNlIFBNRC1hbGlnbmVkLCBEZXN0aW5hdGlvbiAxTUItYWxp Z25lZCIpLAorCQlNQUtFX1RFU1QoUE1ELCBQTUQsIF80TUIsIE5PTl9PVkVSTEFQUElORywgRVhQ RUNUX1NVQ0NFU1MsCisJCSAgIjRNQiBtcmVtYXAgLSBTb3VyY2UgUE1ELWFsaWduZWQsIERlc3Rp bmF0aW9uIFBNRC1hbGlnbmVkIiksCisKKwkJLyogU3JjIGFkZHIgUFVEIGFsaWduZWQgKi8KKwkJ TUFLRV9URVNUKFBVRCwgUFRFLCBfMkdCLCBOT05fT1ZFUkxBUFBJTkcsIEVYUEVDVF9TVUNDRVNT LAorCQkgICIyR0IgbXJlbWFwIC0gU291cmNlIFBVRC1hbGlnbmVkLCBEZXN0aW5hdGlvbiBQVEUt YWxpZ25lZCIpLAorCQlNQUtFX1RFU1QoUFVELCBfMU1CLCBfMkdCLCBOT05fT1ZFUkxBUFBJTkcs IEVYUEVDVF9TVUNDRVNTLAorCQkgICIyR0IgbXJlbWFwIC0gU291cmNlIFBVRC1hbGlnbmVkLCBE ZXN0aW5hdGlvbiAxTUItYWxpZ25lZCIpLAorCQlNQUtFX1RFU1QoUFVELCBQTUQsIF8yR0IsIE5P Tl9PVkVSTEFQUElORywgRVhQRUNUX1NVQ0NFU1MsCisJCSAgIjJHQiBtcmVtYXAgLSBTb3VyY2Ug UFVELWFsaWduZWQsIERlc3RpbmF0aW9uIFBNRC1hbGlnbmVkIiksCisJCU1BS0VfVEVTVChQVUQs IFBVRCwgXzJHQiwgTk9OX09WRVJMQVBQSU5HLCBFWFBFQ1RfU1VDQ0VTUywKKwkJICAiMkdCIG1y ZW1hcCAtIFNvdXJjZSBQVUQtYWxpZ25lZCwgRGVzdGluYXRpb24gUFVELWFsaWduZWQiKSwKKwl9 OworCisJc3RydWN0IHRlc3QgcGVyZl90ZXN0X2Nhc2VzW10gPSB7CisJCS8qCisJCSAqIG1yZW1h cCAxR0IgcmVnaW9uIC0gUGFnZSB0YWJsZSBsZXZlbCBhbGlnbmVkIHRpbWUKKwkJICogY29tcGFy aXNvbi4KKwkJICovCisJCU1BS0VfVEVTVChQVEUsIFBURSwgXzFHQiwgTk9OX09WRVJMQVBQSU5H LCBFWFBFQ1RfU1VDQ0VTUywKKwkJICAiMUdCIG1yZW1hcCAtIFNvdXJjZSBQVEUtYWxpZ25lZCwg RGVzdGluYXRpb24gUFRFLWFsaWduZWQiKSwKKwkJTUFLRV9URVNUKFBNRCwgUE1ELCBfMUdCLCBO T05fT1ZFUkxBUFBJTkcsIEVYUEVDVF9TVUNDRVNTLAorCQkgICIxR0IgbXJlbWFwIC0gU291cmNl IFBNRC1hbGlnbmVkLCBEZXN0aW5hdGlvbiBQTUQtYWxpZ25lZCIpLAorCQlNQUtFX1RFU1QoUFVE LCBQVUQsIF8xR0IsIE5PTl9PVkVSTEFQUElORywgRVhQRUNUX1NVQ0NFU1MsCisJCSAgIjFHQiBt cmVtYXAgLSBTb3VyY2UgUFVELWFsaWduZWQsIERlc3RpbmF0aW9uIFBVRC1hbGlnbmVkIiksCisJ fTsKKworCXJ1bl9wZXJmX3Rlc3RzID0gICh0aHJlc2hvbGRfbWIgPT0gVkFMSURBVElPTl9OT19U SFJFU0hPTEQpIHx8CisJCQkJKHRocmVzaG9sZF9tYiAqIF8xTUIgPj0gXzFHQik7CisKKwlrc2Z0 X3NldF9wbGFuKEFSUkFZX1NJWkUodGVzdF9jYXNlcykgKyAocnVuX3BlcmZfdGVzdHMgPworCQkg ICAgICBBUlJBWV9TSVpFKHBlcmZfdGVzdF9jYXNlcykgOiAwKSk7CisKKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSh0ZXN0X2Nhc2VzKTsgaSsrKQorCQlydW5fbXJlbWFwX3Rlc3RfY2FzZSh0 ZXN0X2Nhc2VzW2ldLCAmZmFpbHVyZXMsIHRocmVzaG9sZF9tYiwKKwkJCQkgICAgIHBhdHRlcm5f c2VlZCk7CisKKwlpZiAocnVuX3BlcmZfdGVzdHMpIHsKKwkJa3NmdF9wcmludF9tc2coIlxuJXNc biIsCisJCSAibXJlbWFwIEhBVkVfTU9WRV9QTUQvUFVEIG9wdGltaXphdGlvbiB0aW1lIGNvbXBh cmlzb24gZm9yIDFHQiByZWdpb246Iik7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBl cmZfdGVzdF9jYXNlcyk7IGkrKykKKwkJCXJ1bl9tcmVtYXBfdGVzdF9jYXNlKHBlcmZfdGVzdF9j YXNlc1tpXSwgJmZhaWx1cmVzLAorCQkJCQkgICAgIHRocmVzaG9sZF9tYiwgcGF0dGVybl9zZWVk KTsKKwl9CisKKwlpZiAoZmFpbHVyZXMgPiAwKQorCQlrc2Z0X2V4aXRfZmFpbCgpOworCWVsc2UK KwkJa3NmdF9leGl0X3Bhc3MoKTsKK30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3ZtL3J1bl92bXRlc3RzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vcnVuX3ZtdGVz dHMKaW5kZXggYTNmNGYzMGYwYTJlLi5kNTc4YWQ4MzE4MTMgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL3ZtL3J1bl92bXRlc3RzCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3ZtL3J1bl92bXRlc3RzCkBAIC0yNDEsNiArMjQxLDE3IEBAIGVsc2UKIAllY2hvICJbUEFT U10iCiBmaQogCitlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tIgorZWNobyAicnVubmluZyBtcmVt YXBfdGVzdCIKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0iCisuL21yZW1hcF90ZXN0CitpZiBb ICQ/IC1uZSAwIF07IHRoZW4KKwllY2hvICJbRkFJTF0iCisJZXhpdGNvZGU9MQorZWxzZQorCWVj aG8gIltQQVNTXSIKK2ZpCisKIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tIgogZWNobyAicnVubmlu ZyB0aHVnZS1nZW4iCiBlY2hvICItLS0tLS0tLS0tLS0tLS0tLSIKLS0gCjIuMjguMC4xMDExLmdh NjQ3YTg5OTBmLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==