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 AD515C433EF for ; Tue, 8 Feb 2022 08:21:48 +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=/5i6o9DIunu97nnH275E2BWQh/MzYXnpW1/jSuilmxY=; b=AoG6QcvUbQGQ4M2M7glQnVobwn eNtJPAXTW7YLV1AOULucABE5zZ3X/h6ixliF+P3lW73R/Uv4oc3WmEQEwihz9F19mw/82udG+vbNB zYLOntlSR0dYvtdL8gKgIO7AtvHiTxHMH1N4CUpElzhDxq/9gkeWR20ZVVv1d3cL5T3+Gs30UcgTR xsCv1dCaV8wIrPAFYqeVbmXpEqhr6sv3PFecagnDGdVNdDHtXIxegjxYanQAEEqBksDnVvFeVOBdm iRezGuwPDeYVnPpe572OsMOgbHWBUxPLmBPaDJJ0/dIlY3cKHnVKDANzRRFUQPkZ/vOrTrfN5GDC6 pB/qzD7w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHLj5-00Cu4N-6N; Tue, 08 Feb 2022 08:19:51 +0000 Received: from mail-yb1-xb49.google.com ([2607:f8b0:4864:20::b49]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHLiq-00Ctw9-UA for linux-arm-kernel@lists.infradead.org; Tue, 08 Feb 2022 08:19:43 +0000 Received: by mail-yb1-xb49.google.com with SMTP id q145-20020a25d997000000b0061da49d79daso12235342ybg.11 for ; Tue, 08 Feb 2022 00:19:36 -0800 (PST) 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=mlBJxyMkItOu6IgMi+GHvGvX+5G+zwrvhk7GXBAZ5bk=; b=RXdHgs+QjQ1IbSZQs8+/R5bHm6h48lbp9WYhrPRLkpRFMDsiZmIsxL1umsK3+Ez+4X mXZlUcPgbU1dvKd0nl4yD885R2A5XyhpoxRdiuwFgrdpyTM3xHvG/5gpX/0eDyoDzkP6 5KqmeRY2K3W4MPiBLEKb0m0rOOwgfRfuoggcoZ3tRN940zaUf1E5FlnUYFRcGxjqibtB 1K93nUemHaZ4LW35fX6TU+FYjrJ5TkZAp+UXkJkqykYPaX7tBs1WoW9kIPkEDbCZVOhL /zA2+tqDDCWbFQtue1NBQnfBomKzIEt+VyAqecJ/FfYIzBMNIxT1+5fqdXOutkV9SyPN G0ng== 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=mlBJxyMkItOu6IgMi+GHvGvX+5G+zwrvhk7GXBAZ5bk=; b=63Pn3VNeQ0NbdP6mOC2R1cLRYMbbp3Ctr3uP5b4mQjmS0VXlsTciib1q7yQ1r8FKkl ON16KTM9VtBTWZ02e2W8NwOUrwwbjhC4mF9lkhZ9s1cRUl1+PV2P8JAbZUWZogI4c4Ze nu0p7QoGfN6dnwi5mBIXpLMwJ1RruVs78ahBnnB/uDkHQ3rNcmO/JVYmrAtFglwAHZkb XJlJgRt61CuYFSyYuHgFMoEdcFqwa5J6zi1nCZg+/UKfzVOylxmTK7TrD10T0QfbWAuR QBPt7MjAuKHL93e1Wx74pl6ypSsHG76WeW48KZhcCB5j4J6vYU8n9xShwDpKLg4ufC8b LXig== X-Gm-Message-State: AOAM530g9qEN/sZ3a/P+jpDb3ab10E8x0xHygMz+9mu0hQHIjPVMrQUw 09H3H82z0J02d5X+D8gp9N/BIUaMyA0= X-Google-Smtp-Source: ABdhPJzKibHc4pzcQGPQRJzl4ovcyubmt0fHiy42kZ9jM5sd+Quj96FPbdHEwtKXbvgY863CeMe5Dq9dTA8= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:5f31:19c3:21f5:7300]) (user=yuzhao job=sendgmr) by 2002:a5b:551:: with SMTP id r17mr3537349ybp.54.1644308375675; Tue, 08 Feb 2022 00:19:35 -0800 (PST) Date: Tue, 8 Feb 2022 01:18:56 -0700 In-Reply-To: <20220208081902.3550911-1-yuzhao@google.com> Message-Id: <20220208081902.3550911-7-yuzhao@google.com> Mime-Version: 1.0 References: <20220208081902.3550911-1-yuzhao@google.com> X-Mailer: git-send-email 2.35.0.263.gb82422642f-goog Subject: [PATCH v7 06/12] mm: multigenerational LRU: exploit locality in rmap From: Yu Zhao To: Andrew Morton , Johannes Weiner , Mel Gorman , Michal Hocko Cc: Andi Kleen , Aneesh Kumar , Barry Song <21cnbao@gmail.com>, Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Michael Larabel , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, page-reclaim@google.com, x86@kernel.org, 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220208_001937_042594_1639D6C2 X-CRM114-Status: GOOD ( 25.80 ) 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 U2VhcmNoaW5nIHRoZSBybWFwIGZvciBQVEVzIG1hcHBpbmcgZWFjaCBwYWdlIG9uIGFuIExSVSBs aXN0ICh0byB0ZXN0CmFuZCBjbGVhciB0aGUgYWNjZXNzZWQgYml0KSBjYW4gYmUgZXhwZW5zaXZl IGJlY2F1c2UgcGFnZXMgZnJvbQpkaWZmZXJlbnQgVk1BcyBhcmVuJ3QgY2FjaGUgZnJpZW5kbHkg dG8gdGhlIHJtYXAuIEZvciB3b3JrbG9hZHMgbW9zdGx5CnVzaW5nIG1hcHBlZCBwYWdlcywgdGhl IHJtYXAgaGFzIGEgaGlnaCBDUFUgY29zdCBpbiB0aGUgcmVjbGFpbSBwYXRoLgoKVGhpcyBwYXRj aCBleHBsb2l0cyBzcGF0aWFsIGxvY2FsaXR5IHRvIHJlZHVjZSB0aGUgdHJpcHMgaW50byB0aGUK cm1hcC4gV2hlbiBzaHJpbmtfcGFnZV9saXN0KCkgd2Fsa3MgdGhlIHJtYXAgYW5kIGZpbmRzIGEg eW91bmcgUFRFLCBhCm5ldyBmdW5jdGlvbiBscnVfZ2VuX2xvb2tfYXJvdW5kKCkgc2NhbnMgYXQg bW9zdCBCSVRTX1BFUl9MT05HLTEKYWRqYWNlbnQgUFRFcy4gT24gZmluZGluZyBhbm90aGVyIHlv dW5nIFBURSwgaXQgY2xlYXJzIHRoZSBhY2Nlc3NlZApiaXQgYW5kIHVwZGF0ZXMgdGhlIGdlbiBj b3VudGVyIG9mIHRoZSBwYWdlIG1hcHBlZCBieSB0aGlzIFBURSB0bwoobWF4X3NlcSVNQVhfTlJf R0VOUykrMS4KClNlcnZlciBiZW5jaG1hcmsgcmVzdWx0czoKICBTaW5nbGUgd29ya2xvYWQ6CiAg ICBmaW8gKGJ1ZmZlcmVkIEkvTyk6IG5vIGNoYW5nZQoKICBTaW5nbGUgd29ya2xvYWQ6CiAgICBt ZW1jYWNoZWQgKGFub24pOiArWzMuNSwgNS41XSUKICAgICAgICAgICAgICAgIE9wcy9zZWMgICAg ICBLQi9zZWMKICAgICAgcGF0Y2gxLTU6IDk3MjUyNi4wNyAgICAzNzgyNi45NQogICAgICBwYXRj aDEtNjogMTAxNTI5Mi44MyAgIDM5NDkwLjM4CgogIENvbmZpZ3VyYXRpb25zOgogICAgbm8gY2hh bmdlCgpDbGllbnQgYmVuY2htYXJrIHJlc3VsdHM6CiAga3N3YXBkIHByb2ZpbGVzOgogICAgcGF0 Y2gxLTUKICAgICAgMzkuNzMlICBsem8xeF8xX2RvX2NvbXByZXNzIChyZWFsIHdvcmspCiAgICAg IDE0Ljk2JSAgcGFnZV92bWFfbWFwcGVkX3dhbGsKICAgICAgIDYuOTclICBfcmF3X3NwaW5fdW5s b2NrX2lycQogICAgICAgMy4wNyUgIGRvX3Jhd19zcGluX2xvY2sKICAgICAgIDIuNTMlICBhbm9u X3ZtYV9pbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QKICAgICAgIDIuMDQlICBwdGVwX2NsZWFyX2Zs dXNoCiAgICAgICAxLjgyJSAgX196cmFtX2J2ZWNfd3JpdGUKICAgICAgIDEuNzYlICBfX2Fub25f dm1hX2ludGVydmFsX3RyZWVfc3VidHJlZV9zZWFyY2gKICAgICAgIDEuNTclICBtZW1tb3ZlCiAg ICAgICAxLjQ1JSAgZnJlZV91bnJlZl9wYWdlX2xpc3QKCiAgICBwYXRjaDEtNgogICAgICA0NS40 OSUgIGx6bzF4XzFfZG9fY29tcHJlc3MgKHJlYWwgd29yaykKICAgICAgIDcuMzglICBwYWdlX3Zt YV9tYXBwZWRfd2FsawogICAgICAgNy4yNCUgIF9yYXdfc3Bpbl91bmxvY2tfaXJxCiAgICAgICAy LjY0JSAgcHRlcF9jbGVhcl9mbHVzaAogICAgICAgMi4zMSUgIF9fenJhbV9idmVjX3dyaXRlCiAg ICAgICAyLjEzJSAgZG9fcmF3X3NwaW5fbG9jawogICAgICAgMi4wOSUgIGxydV9nZW5fbG9va19h cm91bmQKICAgICAgIDEuODklICBmcmVlX3VucmVmX3BhZ2VfbGlzdAogICAgICAgMS44NSUgIG1l bW1vdmUKICAgICAgIDEuNzQlICBvYmpfbWFsbG9jCgogIENvbmZpZ3VyYXRpb25zOgogICAgbm8g Y2hhbmdlCgpTaWduZWQtb2ZmLWJ5OiBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNvbT4KQWNrZWQt Ynk6IEJyaWFuIEdlZmZvbiA8YmdlZmZvbkBnb29nbGUuY29tPgpBY2tlZC1ieTogSmFuIEFsZXhh bmRlciBTdGVmZmVucyAoaGVmdGlnKSA8aGVmdGlnQGFyY2hsaW51eC5vcmc+CkFja2VkLWJ5OiBP bGVrc2FuZHIgTmF0YWxlbmtvIDxvbGVrc2FuZHJAbmF0YWxlbmtvLm5hbWU+CkFja2VkLWJ5OiBT dGV2ZW4gQmFycmV0dCA8c3RldmVuQGxpcXVvcml4Lm5ldD4KQWNrZWQtYnk6IFN1bGVpbWFuIFNv dWhsYWwgPHN1bGVpbWFuQGdvb2dsZS5jb20+ClRlc3RlZC1ieTogRGFuaWVsIEJ5cm5lIDxkamJ5 cm5lQG10dS5lZHU+ClRlc3RlZC1ieTogRG9uYWxkIENhcnIgPGRAY2hhb3MtcmVpbnMuY29tPgpU ZXN0ZWQtYnk6IEhvbGdlciBIb2Zmc3TDpHR0ZSA8aG9sZ2VyQGFwcGxpZWQtYXN5bmNocm9ueS5j b20+ClRlc3RlZC1ieTogS29uc3RhbnRpbiBLaGFybGFtb3YgPEhpLUFuZ2VsQHlhbmRleC5ydT4K VGVzdGVkLWJ5OiBTaHVhbmcgWmhhaSA8c3poYWkyQGNzLnJvY2hlc3Rlci5lZHU+ClRlc3RlZC1i eTogU29maWEgVHJpbmggPHNvZmlhLnRyaW5oQGVkaS53b3Jrcz4KLS0tCiBpbmNsdWRlL2xpbnV4 L21lbWNvbnRyb2wuaCB8ICAzMSArKysrKysrKwogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAg fCAgIDUgKysKIGluY2x1ZGUvbGludXgvbW16b25lLmggICAgIHwgICA2ICsrCiBpbmNsdWRlL2xp bnV4L3N3YXAuaCAgICAgICB8ICAgMSArCiBtbS9tZW1jb250cm9sLmMgICAgICAgICAgICB8ICAg MSArCiBtbS9ybWFwLmMgICAgICAgICAgICAgICAgICB8ICAgNyArKwogbW0vc3dhcC5jICAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIG1tL3Ztc2Nhbi5jICAgICAgICAgICAgICAgIHwgMTU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjA4 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9tZW1jb250cm9sLmggYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaAppbmRleCBiNzJkNzUx NDFlMTIuLjUxYzliYzhlOTY1ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tZW1jb250cm9s LmgKKysrIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgKQEAgLTQzNiw2ICs0MzYsNyBAQCBz dGF0aWMgaW5saW5lIHN0cnVjdCBvYmpfY2dyb3VwICpfX2ZvbGlvX29iamNnKHN0cnVjdCBmb2xp byAqZm9saW8pCiAgKiAtIExSVSBpc29sYXRpb24KICAqIC0gbG9ja19wYWdlX21lbWNnKCkKICAq IC0gZXhjbHVzaXZlIHJlZmVyZW5jZQorICogLSBtZW1fY2dyb3VwX3RyeWxvY2tfcGFnZXMoKQog ICoKICAqIEZvciBhIGttZW0gZm9saW8gYSBjYWxsZXIgc2hvdWxkIGhvbGQgYW4gcmN1IHJlYWQg bG9jayB0byBwcm90ZWN0IG1lbWNnCiAgKiBhc3NvY2lhdGVkIHdpdGggYSBrbWVtIGZvbGlvIGZy b20gYmVpbmcgcmVsZWFzZWQuCkBAIC00OTcsNiArNDk4LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgbWVtX2Nncm91cCAqZm9saW9fbWVtY2dfcmN1KHN0cnVjdCBmb2xpbyAqZm9saW8pCiAgKiAt IExSVSBpc29sYXRpb24KICAqIC0gbG9ja19wYWdlX21lbWNnKCkKICAqIC0gZXhjbHVzaXZlIHJl ZmVyZW5jZQorICogLSBtZW1fY2dyb3VwX3RyeWxvY2tfcGFnZXMoKQogICoKICAqIEZvciBhIGtt ZW0gcGFnZSBhIGNhbGxlciBzaG91bGQgaG9sZCBhbiByY3UgcmVhZCBsb2NrIHRvIHByb3RlY3Qg bWVtY2cKICAqIGFzc29jaWF0ZWQgd2l0aCBhIGttZW0gcGFnZSBmcm9tIGJlaW5nIHJlbGVhc2Vk LgpAQCAtOTM0LDYgKzkzNiwyMyBAQCB2b2lkIHVubG9ja19wYWdlX21lbWNnKHN0cnVjdCBwYWdl ICpwYWdlKTsKIAogdm9pZCBfX21vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt Y2csIGludCBpZHgsIGludCB2YWwpOwogCisvKiB0cnkgdG8gc3RhYmxpemUgZm9saW9fbWVtY2co KSBmb3IgYWxsIHRoZSBwYWdlcyBpbiBhIG1lbWNnICovCitzdGF0aWMgaW5saW5lIGJvb2wgbWVt X2Nncm91cF90cnlsb2NrX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKK3sKKwlyY3Vf cmVhZF9sb2NrKCk7CisKKwlpZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpIHx8ICFhdG9taWNfcmVh ZCgmbWVtY2ctPm1vdmluZ19hY2NvdW50KSkKKwkJcmV0dXJuIHRydWU7CisKKwlyY3VfcmVhZF91 bmxvY2soKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dy b3VwX3VubG9ja19wYWdlcyh2b2lkKQoreworCXJjdV9yZWFkX3VubG9jaygpOworfQorCiAvKiBp ZHggY2FuIGJlIG9mIHR5cGUgZW51bSBtZW1jZ19zdGF0X2l0ZW0gb3Igbm9kZV9zdGF0X2l0ZW0g Ki8KIHN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbWVtY2dfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXAg Km1lbWNnLAogCQkJCSAgIGludCBpZHgsIGludCB2YWwpCkBAIC0xMzcxLDYgKzEzOTAsMTggQEAg c3RhdGljIGlubGluZSB2b2lkIGZvbGlvX21lbWNnX3VubG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlv KQogewogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF90cnlsb2NrX3BhZ2VzKHN0 cnVjdCBtZW1fY2dyb3VwICptZW1jZykKK3sKKwkvKiB0byBtYXRjaCBmb2xpb19tZW1jZ19yY3Uo KSAqLworCXJjdV9yZWFkX2xvY2soKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIG1lbV9jZ3JvdXBfdW5sb2NrX3BhZ2VzKHZvaWQpCit7CisJcmN1X3JlYWRfdW5sb2Nr KCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX2hhbmRsZV9vdmVyX2hpZ2go dm9pZCkKIHsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGlu dXgvbW0uaAppbmRleCBiNGI5ODg2YmEyNzcuLjdkNzBiNDJiNjdlMSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMTU4OCw2ICsxNTg4 LDExIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmb2xpb19wZm4oc3RydWN0IGZvbGlv ICpmb2xpbykKIAlyZXR1cm4gcGFnZV90b19wZm4oJmZvbGlvLT5wYWdlKTsKIH0KIAorc3RhdGlj IGlubGluZSBzdHJ1Y3QgZm9saW8gKnBmbl9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbikKK3sKKwly ZXR1cm4gcGFnZV9mb2xpbyhwZm5fdG9fcGFnZShwZm4pKTsKK30KKwogLyogTUlHUkFURV9DTUEg YW5kIFpPTkVfTU9WQUJMRSBkbyBub3QgYWxsb3cgcGluIHBhZ2VzICovCiAjaWZkZWYgQ09ORklH X01JR1JBVElPTgogc3RhdGljIGlubGluZSBib29sIGlzX3Bpbm5hYmxlX3BhZ2Uoc3RydWN0IHBh Z2UgKnBhZ2UpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9s aW51eC9tbXpvbmUuaAppbmRleCAzODcwZGQ5MjQ2YTIuLjNkNmVhMzBhMmJkYiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBA IC0zMDQsNiArMzA0LDcgQEAgZW51bSBscnV2ZWNfZmxhZ3MgewogfTsKIAogc3RydWN0IGxydXZl YzsKK3N0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsazsKIAogI2RlZmluZSBMUlVfR0VOX01BU0sJ CSgoQklUKExSVV9HRU5fV0lEVEgpIC0gMSkgPDwgTFJVX0dFTl9QR09GRikKICNkZWZpbmUgTFJV X1JFRlNfTUFTSwkJKChCSVQoTFJVX1JFRlNfV0lEVEgpIC0gMSkgPDwgTFJVX1JFRlNfUEdPRkYp CkBAIC0zODYsNiArMzg3LDcgQEAgc3RydWN0IGxydV9nZW5fc3RydWN0IHsKIH07CiAKIHZvaWQg bHJ1X2dlbl9pbml0X3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IGxydXZl YyAqbHJ1dmVjKTsKK3ZvaWQgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFw cGVkX3dhbGsgKnB2bXcpOwogCiAjaWZkZWYgQ09ORklHX01FTUNHCiB2b2lkIGxydV9nZW5faW5p dF9tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpOwpAQCAtMzk4LDYgKzQwMCwxMCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICpt ZW1jZywgc3RydWN0IGxydXZlYyAqbAogewogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dl bl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGsgKnB2bXcpCit7Cit9CisK ICNpZmRlZiBDT05GSUdfTUVNQ0cKIHN0YXRpYyBpbmxpbmUgdm9pZCBscnVfZ2VuX2luaXRfbWVt Y2coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaAppbmRleCAxZDM4ZDk0NzVjNGQuLmIzNzUy MGQzZmYxZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmgKKysrIGIvaW5jbHVkZS9s aW51eC9zd2FwLmgKQEAgLTM3Miw2ICszNzIsNyBAQCBleHRlcm4gdm9pZCBscnVfYWRkX2RyYWlu KHZvaWQpOwogZXh0ZXJuIHZvaWQgbHJ1X2FkZF9kcmFpbl9jcHUoaW50IGNwdSk7CiBleHRlcm4g dm9pZCBscnVfYWRkX2RyYWluX2NwdV96b25lKHN0cnVjdCB6b25lICp6b25lKTsKIGV4dGVybiB2 b2lkIGxydV9hZGRfZHJhaW5fYWxsKHZvaWQpOworZXh0ZXJuIHZvaWQgZm9saW9fYWN0aXZhdGUo c3RydWN0IGZvbGlvICpmb2xpbyk7CiBleHRlcm4gdm9pZCBkZWFjdGl2YXRlX2ZpbGVfcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSk7CiBleHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Uoc3RydWN0IHBh Z2UgKnBhZ2UpOwogZXh0ZXJuIHZvaWQgbWFya19wYWdlX2xhenlmcmVlKHN0cnVjdCBwYWdlICpw YWdlKTsKZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwppbmRl eCBjYWJiNTA4NTUzMWIuLjc0MzczZGYxOWQ4NCAxMDA2NDQKLS0tIGEvbW0vbWVtY29udHJvbC5j CisrKyBiL21tL21lbWNvbnRyb2wuYwpAQCAtMjc0NCw2ICsyNzQ0LDcgQEAgc3RhdGljIHZvaWQg Y29tbWl0X2NoYXJnZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt Y2cpCiAJICogLSBMUlUgaXNvbGF0aW9uCiAJICogLSBsb2NrX3BhZ2VfbWVtY2coKQogCSAqIC0g ZXhjbHVzaXZlIHJlZmVyZW5jZQorCSAqIC0gbWVtX2Nncm91cF90cnlsb2NrX3BhZ2VzKCkKIAkg Ki8KIAlmb2xpby0+bWVtY2dfZGF0YSA9ICh1bnNpZ25lZCBsb25nKW1lbWNnOwogfQpkaWZmIC0t Z2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jCmluZGV4IDZhMWU4YzdmNjIxMy4uMTEyZTc3ZGM2 MmY0IDEwMDY0NAotLS0gYS9tbS9ybWFwLmMKKysrIGIvbW0vcm1hcC5jCkBAIC03Myw2ICs3Myw3 IEBACiAjaW5jbHVkZSA8bGludXgvcGFnZV9pZGxlLmg+CiAjaW5jbHVkZSA8bGludXgvbWVtcmVt YXAuaD4KICNpbmNsdWRlIDxsaW51eC91c2VyZmF1bHRmZF9rLmg+CisjaW5jbHVkZSA8bGludXgv bW1faW5saW5lLmg+CiAKICNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KIApAQCAtODE5LDYgKzgy MCwxMiBAQCBzdGF0aWMgYm9vbCBwYWdlX3JlZmVyZW5jZWRfb25lKHN0cnVjdCBwYWdlICpwYWdl LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJfQogCiAJCWlmIChwdm13LnB0ZSkgewor CQkJaWYgKGxydV9nZW5fZW5hYmxlZCgpICYmIHB0ZV95b3VuZygqcHZtdy5wdGUpICYmCisJCQkg ICAgISh2bWEtPnZtX2ZsYWdzICYgKFZNX1NFUV9SRUFEIHwgVk1fUkFORF9SRUFEKSkpIHsKKwkJ CQlscnVfZ2VuX2xvb2tfYXJvdW5kKCZwdm13KTsKKwkJCQlyZWZlcmVuY2VkKys7CisJCQl9CisK IAkJCWlmIChwdGVwX2NsZWFyX2ZsdXNoX3lvdW5nX25vdGlmeSh2bWEsIGFkZHJlc3MsCiAJCQkJ CQlwdm13LnB0ZSkpIHsKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvbW0vc3dhcC5jIGIvbW0vc3dhcC5j CmluZGV4IGY1YzBiY2FjOGRjZC4uZTY1ZTc1MjBiZWJmIDEwMDY0NAotLS0gYS9tbS9zd2FwLmMK KysrIGIvbW0vc3dhcC5jCkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIGJvb2wgbmVlZF9hY3Rp dmF0ZV9wYWdlX2RyYWluKGludCBjcHUpCiAJcmV0dXJuIHBhZ2V2ZWNfY291bnQoJnBlcl9jcHUo bHJ1X3B2ZWNzLmFjdGl2YXRlX3BhZ2UsIGNwdSkpICE9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGZv bGlvX2FjdGl2YXRlKHN0cnVjdCBmb2xpbyAqZm9saW8pCit2b2lkIGZvbGlvX2FjdGl2YXRlKHN0 cnVjdCBmb2xpbyAqZm9saW8pCiB7CiAJaWYgKGZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSAmJiAhZm9s aW9fdGVzdF9hY3RpdmUoZm9saW8pICYmCiAJICAgICFmb2xpb190ZXN0X3VuZXZpY3RhYmxlKGZv bGlvKSkgewpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3RpdmF0ZV9w YWdlX2RyYWluKGludCBjcHUpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIGZvbGlvX2FjdGl2YXRlKHN0 cnVjdCBmb2xpbyAqZm9saW8pCit2b2lkIGZvbGlvX2FjdGl2YXRlKHN0cnVjdCBmb2xpbyAqZm9s aW8pCiB7CiAJc3RydWN0IGxydXZlYyAqbHJ1dmVjOwogCmRpZmYgLS1naXQgYS9tbS92bXNjYW4u YyBiL21tL3Ztc2Nhbi5jCmluZGV4IDVmMGQ5MjgzODcxMi4uOTMzZDQ2YWUyZjY4IDEwMDY0NAot LS0gYS9tbS92bXNjYW4uYworKysgYi9tbS92bXNjYW4uYwpAQCAtMTU1Niw2ICsxNTU2LDExIEBA IHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpw YWdlX2xpc3QsCiAJCWlmICghc2MtPm1heV91bm1hcCAmJiBwYWdlX21hcHBlZChwYWdlKSkKIAkJ CWdvdG8ga2VlcF9sb2NrZWQ7CiAKKwkJLyogZm9saW9fdXBkYXRlX2dlbigpIHRyaWVkIHRvIHBy b21vdGUgdGhpcyBwYWdlPyAqLworCQlpZiAobHJ1X2dlbl9lbmFibGVkKCkgJiYgIWlnbm9yZV9y ZWZlcmVuY2VzICYmCisJCSAgICBwYWdlX21hcHBlZChwYWdlKSAmJiBQYWdlUmVmZXJlbmNlZChw YWdlKSkKKwkJCWdvdG8ga2VlcF9sb2NrZWQ7CisKIAkJbWF5X2VudGVyX2ZzID0gKHNjLT5nZnBf bWFzayAmIF9fR0ZQX0ZTKSB8fAogCQkJKFBhZ2VTd2FwQ2FjaGUocGFnZSkgJiYgKHNjLT5nZnBf bWFzayAmIF9fR0ZQX0lPKSk7CiAKQEAgLTMyMjcsNiArMzIzMiwzMSBAQCBzdGF0aWMgYm9vbCBw b3NpdGl2ZV9jdHJsX2VycihzdHJ1Y3QgY3RybF9wb3MgKnNwLCBzdHJ1Y3QgY3RybF9wb3MgKnB2 KQogICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhZ2luZwogICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KIAorc3RhdGljIGludCBmb2xpb191cGRhdGVfZ2VuKHN0cnVjdCBmb2xpbyAqZm9s aW8sIGludCBnZW4pCit7CisJdW5zaWduZWQgbG9uZyBvbGRfZmxhZ3MsIG5ld19mbGFnczsKKwor CVZNX0JVR19PTihnZW4gPj0gTUFYX05SX0dFTlMpOworCVZNX0JVR19PTighcmN1X3JlYWRfbG9j a19oZWxkKCkpOworCisJZG8geworCQluZXdfZmxhZ3MgPSBvbGRfZmxhZ3MgPSBSRUFEX09OQ0Uo Zm9saW8tPmZsYWdzKTsKKworCQkvKiBmb3Igc2hyaW5rX3BhZ2VfbGlzdCgpICovCisJCWlmICgh KG5ld19mbGFncyAmIExSVV9HRU5fTUFTSykpIHsKKwkJCW5ld19mbGFncyB8PSBCSVQoUEdfcmVm ZXJlbmNlZCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCW5ld19mbGFncyAmPSB+TFJVX0dFTl9N QVNLOworCQluZXdfZmxhZ3MgfD0gKGdlbiArIDFVTCkgPDwgTFJVX0dFTl9QR09GRjsKKwkJbmV3 X2ZsYWdzICY9IH4oTFJVX1JFRlNfTUFTSyB8IExSVV9SRUZTX0ZMQUdTKTsKKwl9IHdoaWxlIChu ZXdfZmxhZ3MgIT0gb2xkX2ZsYWdzICYmCisJCSBjbXB4Y2hnKCZmb2xpby0+ZmxhZ3MsIG9sZF9m bGFncywgbmV3X2ZsYWdzKSAhPSBvbGRfZmxhZ3MpOworCisJcmV0dXJuICgob2xkX2ZsYWdzICYg TFJVX0dFTl9NQVNLKSA+PiBMUlVfR0VOX1BHT0ZGKSAtIDE7Cit9CisKIHN0YXRpYyBpbnQgZm9s aW9faW5jX2dlbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJv b2wgcmVjbGFpbWluZykKIHsKIAl1bnNpZ25lZCBsb25nIG9sZF9mbGFncywgbmV3X2ZsYWdzOwpA QCAtMzIzOSw2ICszMjY5LDEwIEBAIHN0YXRpYyBpbnQgZm9saW9faW5jX2dlbihzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmVjbGFpCiAJCVZNX0JVR19P Tl9GT0xJTyghKG5ld19mbGFncyAmIExSVV9HRU5fTUFTSyksIGZvbGlvKTsKIAogCQluZXdfZ2Vu ID0gKChuZXdfZmxhZ3MgJiBMUlVfR0VOX01BU0spID4+IExSVV9HRU5fUEdPRkYpIC0gMTsKKwkJ LyogZm9saW9fdXBkYXRlX2dlbigpIGhhcyBwcm9tb3RlZCB0aGlzIHBhZ2U/ICovCisJCWlmIChu ZXdfZ2VuID49IDAgJiYgbmV3X2dlbiAhPSBvbGRfZ2VuKQorCQkJcmV0dXJuIG5ld19nZW47CisK IAkJbmV3X2dlbiA9IChvbGRfZ2VuICsgMSkgJSBNQVhfTlJfR0VOUzsKIAogCQluZXdfZmxhZ3Mg Jj0gfkxSVV9HRU5fTUFTSzsKQEAgLTM0MzQsNiArMzQ2OCwxMjIgQEAgc3RhdGljIHZvaWQgbHJ1 X2dlbl9hZ2Vfbm9kZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250 cm9sICpzYykKIAl9IHdoaWxlICgobWVtY2cgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgbWVtY2cs IE5VTEwpKSk7CiB9CiAKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGV4cGxvaXRzIHNwYXRpYWwgbG9j YWxpdHkgd2hlbiBzaHJpbmtfcGFnZV9saXN0KCkgd2Fsa3MgdGhlCisgKiBybWFwLiBJdCBzY2Fu cyB0aGUgYWRqYWNlbnQgUFRFcyBvZiBhIHlvdW5nIFBURSBhbmQgcHJvbW90ZXMgaG90IHBhZ2Vz LgorICovCit2b2lkIGxydV9nZW5fbG9va19hcm91bmQoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93 YWxrICpwdm13KQoreworCWludCBpOworCXB0ZV90ICpwdGU7CisJdW5zaWduZWQgbG9uZyBzdGFy dDsKKwl1bnNpZ25lZCBsb25nIGVuZDsKKwl1bnNpZ25lZCBsb25nIGFkZHI7CisJc3RydWN0IGZv bGlvICpmb2xpbzsKKwl1bnNpZ25lZCBsb25nIGJpdG1hcFtCSVRTX1RPX0xPTkdTKE1JTl9MUlVf QkFUQ0gpXSA9IHt9OworCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyA9IHBhZ2VfbWVtY2cocHZt dy0+cGFnZSk7CisJc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCA9IHBhZ2VfcGdkYXQocHZtdy0+ cGFnZSk7CisJc3RydWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2cs IHBnZGF0KTsKKwlERUZJTkVfTUFYX1NFUShscnV2ZWMpOworCWludCBvbGRfZ2VuLCBuZXdfZ2Vu ID0gbHJ1X2dlbl9mcm9tX3NlcShtYXhfc2VxKTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQocHZt dy0+cHRsKTsKKwlWTV9CVUdfT05fUEFHRShQYWdlTFJVKHB2bXctPnBhZ2UpLCBwdm13LT5wYWdl KTsKKworCXN0YXJ0ID0gbWF4KHB2bXctPmFkZHJlc3MgJiBQTURfTUFTSywgcHZtdy0+dm1hLT52 bV9zdGFydCk7CisJZW5kID0gcG1kX2FkZHJfZW5kKHB2bXctPmFkZHJlc3MsIHB2bXctPnZtYS0+ dm1fZW5kKTsKKworCWlmIChlbmQgLSBzdGFydCA+IE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkUp IHsKKwkJaWYgKHB2bXctPmFkZHJlc3MgLSBzdGFydCA8IE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJ WkUgLyAyKQorCQkJZW5kID0gc3RhcnQgKyBNSU5fTFJVX0JBVENIICogUEFHRV9TSVpFOworCQll bHNlIGlmIChlbmQgLSBwdm13LT5hZGRyZXNzIDwgTUlOX0xSVV9CQVRDSCAqIFBBR0VfU0laRSAv IDIpCisJCQlzdGFydCA9IGVuZCAtIE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkU7CisJCWVsc2Ug eworCQkJc3RhcnQgPSBwdm13LT5hZGRyZXNzIC0gTUlOX0xSVV9CQVRDSCAqIFBBR0VfU0laRSAv IDI7CisJCQllbmQgPSBwdm13LT5hZGRyZXNzICsgTUlOX0xSVV9CQVRDSCAqIFBBR0VfU0laRSAv IDI7CisJCX0KKwl9CisKKwlwdGUgPSBwdm13LT5wdGUgLSAocHZtdy0+YWRkcmVzcyAtIHN0YXJ0 KSAvIFBBR0VfU0laRTsKKworCXJjdV9yZWFkX2xvY2soKTsKKwlhcmNoX2VudGVyX2xhenlfbW11 X21vZGUoKTsKKworCWZvciAoaSA9IDAsIGFkZHIgPSBzdGFydDsgYWRkciAhPSBlbmQ7IGkrKywg YWRkciArPSBQQUdFX1NJWkUpIHsKKwkJdW5zaWduZWQgbG9uZyBwZm4gPSBwdGVfcGZuKHB0ZVtp XSk7CisKKwkJVk1fQlVHX09OKGFkZHIgPCBwdm13LT52bWEtPnZtX3N0YXJ0IHx8IGFkZHIgPj0g cHZtdy0+dm1hLT52bV9lbmQpOworCisJCWlmICghcHRlX3ByZXNlbnQocHRlW2ldKSB8fCBpc196 ZXJvX3BmbihwZm4pKQorCQkJY29udGludWU7CisKKwkJaWYgKFdBUk5fT05fT05DRShwdGVfZGV2 bWFwKHB0ZVtpXSkgfHwgcHRlX3NwZWNpYWwocHRlW2ldKSkpCisJCQljb250aW51ZTsKKworCQlp ZiAoIXB0ZV95b3VuZyhwdGVbaV0pKQorCQkJY29udGludWU7CisKKwkJVk1fQlVHX09OKCFwZm5f dmFsaWQocGZuKSk7CisJCWlmIChwZm4gPCBwZ2RhdC0+bm9kZV9zdGFydF9wZm4gfHwgcGZuID49 IHBnZGF0X2VuZF9wZm4ocGdkYXQpKQorCQkJY29udGludWU7CisKKwkJZm9saW8gPSBwZm5fZm9s aW8ocGZuKTsKKwkJaWYgKGZvbGlvX25pZChmb2xpbykgIT0gcGdkYXQtPm5vZGVfaWQpCisJCQlj b250aW51ZTsKKworCQlpZiAoZm9saW9fbWVtY2dfcmN1KGZvbGlvKSAhPSBtZW1jZykKKwkJCWNv bnRpbnVlOworCisJCWlmICghcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhwdm13LT52bWEsIGFk ZHIsIHB0ZSArIGkpKQorCQkJY29udGludWU7CisKKwkJaWYgKHB0ZV9kaXJ0eShwdGVbaV0pICYm ICFmb2xpb190ZXN0X2RpcnR5KGZvbGlvKSAmJgorCQkgICAgIShmb2xpb190ZXN0X2Fub24oZm9s aW8pICYmIGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykgJiYKKwkJICAgICAgIWZvbGlvX3Rl c3Rfc3dhcGNhY2hlKGZvbGlvKSkpCisJCQlmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKKworCQlv bGRfZ2VuID0gZm9saW9fbHJ1X2dlbihmb2xpbyk7CisJCWlmIChvbGRfZ2VuIDwgMCkKKwkJCWZv bGlvX3NldF9yZWZlcmVuY2VkKGZvbGlvKTsKKwkJZWxzZSBpZiAob2xkX2dlbiAhPSBuZXdfZ2Vu KQorCQkJX19zZXRfYml0KGksIGJpdG1hcCk7CisJfQorCisJYXJjaF9sZWF2ZV9sYXp5X21tdV9t b2RlKCk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlpZiAoYml0bWFwX3dlaWdodChiaXRtYXAs IE1JTl9MUlVfQkFUQ0gpIDwgUEFHRVZFQ19TSVpFKSB7CisJCWZvcl9lYWNoX3NldF9iaXQoaSwg Yml0bWFwLCBNSU5fTFJVX0JBVENIKSB7CisJCQlmb2xpbyA9IHBhZ2VfZm9saW8ocHRlX3BhZ2Uo cHRlW2ldKSk7CisJCQlmb2xpb19hY3RpdmF0ZShmb2xpbyk7CisJCX0KKwkJcmV0dXJuOworCX0K KworCS8qIGZvbGlvX3VwZGF0ZV9nZW4oKSByZXF1aXJlcyBzdGFibGUgZm9saW9fbWVtY2coKSAq LworCWlmICghbWVtX2Nncm91cF90cnlsb2NrX3BhZ2VzKG1lbWNnKSkKKwkJcmV0dXJuOworCisJ c3Bpbl9sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7CisJbmV3X2dlbiA9IGxydV9nZW5fZnJv bV9zZXEobHJ1dmVjLT5scnVnZW4ubWF4X3NlcSk7CisKKwlmb3JfZWFjaF9zZXRfYml0KGksIGJp dG1hcCwgTUlOX0xSVV9CQVRDSCkgeworCQlmb2xpbyA9IHBhZ2VfZm9saW8ocHRlX3BhZ2UocHRl W2ldKSk7CisJCWlmIChmb2xpb19tZW1jZ19yY3UoZm9saW8pICE9IG1lbWNnKQorCQkJY29udGlu dWU7CisKKwkJb2xkX2dlbiA9IGZvbGlvX3VwZGF0ZV9nZW4oZm9saW8sIG5ld19nZW4pOworCQlp ZiAob2xkX2dlbiA8IDAgfHwgb2xkX2dlbiA9PSBuZXdfZ2VuKQorCQkJY29udGludWU7CisKKwkJ bHJ1X2dlbl9iYWxhbmNlX3NpemUobHJ1dmVjLCBmb2xpbywgb2xkX2dlbiwgbmV3X2dlbik7CisJ fQorCisJc3Bpbl91bmxvY2tfaXJxKCZscnV2ZWMtPmxydV9sb2NrKTsKKworCW1lbV9jZ3JvdXBf dW5sb2NrX3BhZ2VzKCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGUgZXZpY3Rpb24KICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBA IC0zNDY3LDYgKzM2MTcsMTEgQEAgc3RhdGljIGJvb2wgc29ydF9mb2xpbyhzdHJ1Y3QgbHJ1dmVj ICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCB0aWVyX2lkeCkKIAkJcmV0dXJuIHRy dWU7CiAJfQogCisJaWYgKGdlbiAhPSBscnVfZ2VuX2Zyb21fc2VxKGxydWdlbi0+bWluX3NlcVt0 eXBlXSkpIHsKKwkJbGlzdF9tb3ZlKCZmb2xpby0+bHJ1LCAmbHJ1Z2VuLT5saXN0c1tnZW5dW3R5 cGVdW3pvbmVdKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCiAJaWYgKHRpZXIgPiB0aWVyX2lkeCkg ewogCQlpbnQgaGlzdCA9IGxydV9oaXN0X2Zyb21fc2VxKGxydWdlbi0+bWluX3NlcVt0eXBlXSk7 CiAKLS0gCjIuMzUuMC4yNjMuZ2I4MjQyMjY0MmYtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK