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 036CBC433EF for ; Wed, 18 May 2022 03:03:26 +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=WBQfhA4iXshqSkeipcHHlhPekT/KkXWxOnYMqJZPR+4=; b=rNWSwHBMQQmQanpUo+N57NuZRJ JNJzHa3HjpmwgyPw560A1lm7hyvGAMVaRqjZqDjiVkcZUPqALz2zTjzlaUDn3kwLVcCoYPvvTg3r/ +tR9YPVc7k9Vkchcx9fGlBXzeEUV9xMOjw5X4miTg85ucx3cc/okBpSFJZSC0Nw49CzFRKj6FkXWO Eeoli495Cj7t8epUXepylHB3cK1EXROwdHE5iLUurw4zeGqvU4xI3KZuDvt0fN0BfmnZPL+MKceG5 mFIPdDWX/bZRkEvSFs7GrfZuVCqAPTKXWZKUaUZRjdqKhVUsRngzmD03ZKL/VHOnEQ7/71tpzDomq RVYXNeAA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9wl-00GmRZ-2a; Wed, 18 May 2022 03:02:00 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr9wT-00GmIb-0D for linux-arm-kernel@bombadil.infradead.org; Wed, 18 May 2022 03:01:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :Cc:To:From:Subject:References:Mime-Version:Message-Id:In-Reply-To:Date: Sender:Reply-To:Content-ID:Content-Description; bh=DIXSaH9RJGkbTuDMTnXDRSvoEI7pCtEeA4wUNDyN3z8=; b=K2jDWQHgdgBQhOy9IhcC+0YiLf Vm2Ra3meHKKttjoXRz9zTLjKIg2p7S5JZKtlJl27thXZ0H5Z34Z70YuPUP0krsh+dNNTLw6nyM4+h YVsaCWsmnbQVEYvjCxfZEmw+qBPTpwLlloKqqQt+cdQkbKfjpanz7f2lkFatlvwEM9tlEJU3j5g5j xKGsPuLxh/dDuV8xBjLlHdeF9caoInuHVjrJaN98coUfY4dQeJBJ2LlQfktbfEefv8slHjcw0plP3 xehW01J3zb/tAtmopoJ+fZcKzb/hMZGMxNnNqEedjcuUX8l7GdUK3KZO5ND/nU6WDJWn1VyiOIBzO 16zk9OCw==; Received: from mail-yw1-x114a.google.com ([2607:f8b0:4864:20::114a]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nr8mI-001OwS-TC for linux-arm-kernel@lists.infradead.org; Wed, 18 May 2022 01:47:10 +0000 Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2fef32314f7so7984037b3.18 for ; Tue, 17 May 2022 18:47:05 -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=DIXSaH9RJGkbTuDMTnXDRSvoEI7pCtEeA4wUNDyN3z8=; b=g0wxsGI7R45H2kF0pWERdLKkyLwtp+Yw0IOEBDlqZo/73VltFoNtGsnpTTiSArgRhy AUeYjOQRLucgcT1BOXjwa8iwyjc/FV4gVMQECeZmAm89brEUh/FlMMzDjbGmAz7sRZKS ZYK6UJRksyC2OA6yMzw37fB2ChJivBQPOwqyRwJa9RYiiTEVoLazjeC7EIFt9WUKkiYA /9UmBdWZAazbCzR+VjrjlnlcaeQghun0EDh1um9NtW846e6uJyKDChbVM31G3CYT6qRo Lbpaf47UJD7WZRJaMWGDTBm43aZ4pjSZ2+FY11zz3ohF53ByYbwB3XT+asa39cay+hYZ J/cA== 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=DIXSaH9RJGkbTuDMTnXDRSvoEI7pCtEeA4wUNDyN3z8=; b=dYLHCLAlSZXKuAoYXbwElDIg3HPUViJnRCqiu9xmDuMRhuDCGlqzzM0yB+KaQScDhp 74FEpv8OcrQuoi+j3bK26GTQb/oXiNiwTP6MFtWGi5yFHnhBVrosoduCtjxiO+dW6/MS EnpCJAJG4kQa3dmu/+wzX57J6/3t/bAS8GH9VIyLzmVeeEWfk8SsuET07wpHRolIYBDP LXXJObmuIp47OnNvPuwFsJZC3stSJPMyh71QnnAL3j3gp8ikBiBAeK1xEHDuvsE8L7e5 0AiIQxKDdLunmZQGJ7WZgcueFYILgtqkSe4ZYwRETFdzMzyLgUqERsxF7kJDuOu/VEPt dkQw== X-Gm-Message-State: AOAM532QyfjDwhCvWpU+G0b1cNG1ltOzJ6s8a8J0tMaqVFCuDZ3tlFDK w1qVsCGLgd+s9F5qIpz0UlMylKZhB/s= X-Google-Smtp-Source: ABdhPJy5gTaQavr8nh6KkIBuBPD+lcWRRCsyNXYFpHXrgvnOQSN+Y4VhOwdpZBaG2OLswrB0zz7ABDWtGC4= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:f7bc:90c9:d86e:4ea8]) (user=yuzhao job=sendgmr) by 2002:a81:d86:0:b0:2ff:2258:f9b3 with SMTP id 128-20020a810d86000000b002ff2258f9b3mr8281904ywn.355.1652838424351; Tue, 17 May 2022 18:47:04 -0700 (PDT) Date: Tue, 17 May 2022 19:46:26 -0600 In-Reply-To: <20220518014632.922072-1-yuzhao@google.com> Message-Id: <20220518014632.922072-8-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 07/14] mm: multi-gen LRU: exploit locality in rmap 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-20220518_024707_534216_77A50A55 X-CRM114-Status: GOOD ( 23.75 ) 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 IGJlY2F1c2UgcGFnZXMgZnJvbQpkaWZmZXJlbnQgVk1BcyAoUEEgc3BhY2UpIGFyZSBub3QgY2Fj aGUgZnJpZW5kbHkgdG8gdGhlIHJtYXAgKFZBCnNwYWNlKS4gRm9yIHdvcmtsb2FkcyBtb3N0bHkg dXNpbmcgbWFwcGVkIHBhZ2VzLCB0aGUgcm1hcCBoYXMgYSBoaWdoCkNQVSBjb3N0IGluIHRoZSBy ZWNsYWltIHBhdGguCgpUaGlzIHBhdGNoIGV4cGxvaXRzIHNwYXRpYWwgbG9jYWxpdHkgdG8gcmVk dWNlIHRoZSB0cmlwcyBpbnRvIHRoZQpybWFwLiBXaGVuIHNocmlua19wYWdlX2xpc3QoKSB3YWxr cyB0aGUgcm1hcCBhbmQgZmluZHMgYSB5b3VuZyBQVEUsIGEKbmV3IGZ1bmN0aW9uIGxydV9nZW5f bG9va19hcm91bmQoKSBzY2FucyBhdCBtb3N0IEJJVFNfUEVSX0xPTkctMQphZGphY2VudCBQVEVz LiBPbiBmaW5kaW5nIGFub3RoZXIgeW91bmcgUFRFLCBpdCBjbGVhcnMgdGhlIGFjY2Vzc2VkCmJp dCBhbmQgdXBkYXRlcyB0aGUgZ2VuIGNvdW50ZXIgb2YgdGhlIHBhZ2UgbWFwcGVkIGJ5IHRoaXMg UFRFIHRvCihtYXhfc2VxJU1BWF9OUl9HRU5TKSsxLgoKU2VydmVyIGJlbmNobWFyayByZXN1bHRz OgogIFNpbmdsZSB3b3JrbG9hZDoKICAgIGZpbyAoYnVmZmVyZWQgSS9PKTogbm8gY2hhbmdlCgog IFNpbmdsZSB3b3JrbG9hZDoKICAgIG1lbWNhY2hlZCAoYW5vbik6ICtbNS41LCA3LjVdJQogICAg ICAgICAgICAgICAgT3BzL3NlYyAgICAgIEtCL3NlYwogICAgICBwYXRjaDEtNjogMTEyMDY0My43 MCAgIDQzNTg4LjA2CiAgICAgIHBhdGNoMS03OiAxMTkzOTE4LjkzICAgNDY0MzguMTUKCiAgQ29u ZmlndXJhdGlvbnM6CiAgICBubyBjaGFuZ2UKCkNsaWVudCBiZW5jaG1hcmsgcmVzdWx0czoKICBr c3dhcGQgcHJvZmlsZXM6CiAgICBwYXRjaDEtNgogICAgICAzNS45OSUgIGx6bzF4XzFfZG9fY29t cHJlc3MgKHJlYWwgd29yaykKICAgICAgMTkuNDAlICBwYWdlX3ZtYV9tYXBwZWRfd2FsawogICAg ICAgNi4zMSUgIF9yYXdfc3Bpbl91bmxvY2tfaXJxCiAgICAgICAzLjk1JSAgZG9fcmF3X3NwaW5f bG9jawogICAgICAgMi4zOSUgIGFub25fdm1hX2ludGVydmFsX3RyZWVfaXRlcl9maXJzdAogICAg ICAgMi4yNSUgIHB0ZXBfY2xlYXJfZmx1c2gKICAgICAgIDEuOTIlICBfX2Fub25fdm1hX2ludGVy dmFsX3RyZWVfc3VidHJlZV9zZWFyY2gKICAgICAgIDEuNzAlICBmb2xpb19yZWZlcmVuY2VkX29u ZQogICAgICAgMS42OCUgIF9fenJhbV9idmVjX3dyaXRlCiAgICAgICAxLjQzJSAgYW5vbl92bWFf aW50ZXJ2YWxfdHJlZV9pdGVyX25leHQKCiAgICBwYXRjaDEtNwogICAgICA0NS45MCUgIGx6bzF4 XzFfZG9fY29tcHJlc3MgKHJlYWwgd29yaykKICAgICAgIDkuMTQlICBwYWdlX3ZtYV9tYXBwZWRf d2FsawogICAgICAgNi44MSUgIF9yYXdfc3Bpbl91bmxvY2tfaXJxCiAgICAgICAyLjgwJSAgcHRl cF9jbGVhcl9mbHVzaAogICAgICAgMi4zNCUgIF9fenJhbV9idmVjX3dyaXRlCiAgICAgICAyLjI5 JSAgZG9fcmF3X3NwaW5fbG9jawogICAgICAgMS44NCUgIGxydV9nZW5fbG9va19hcm91bmQKICAg ICAgIDEuNzglICBtZW1tb3ZlCiAgICAgICAxLjc0JSAgb2JqX21hbGxvYwogICAgICAgMS41MCUg IGZyZWVfdW5yZWZfcGFnZV9saXN0CgogIENvbmZpZ3VyYXRpb25zOgogICAgbm8gY2hhbmdlCgpT aWduZWQtb2ZmLWJ5OiBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEJyaWFu IEdlZmZvbiA8YmdlZmZvbkBnb29nbGUuY29tPgpBY2tlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVm ZmVucyAoaGVmdGlnKSA8aGVmdGlnQGFyY2hsaW51eC5vcmc+CkFja2VkLWJ5OiBPbGVrc2FuZHIg TmF0YWxlbmtvIDxvbGVrc2FuZHJAbmF0YWxlbmtvLm5hbWU+CkFja2VkLWJ5OiBTdGV2ZW4gQmFy cmV0dCA8c3RldmVuQGxpcXVvcml4Lm5ldD4KQWNrZWQtYnk6IFN1bGVpbWFuIFNvdWhsYWwgPHN1 bGVpbWFuQGdvb2dsZS5jb20+ClRlc3RlZC1ieTogRGFuaWVsIEJ5cm5lIDxkamJ5cm5lQG10dS5l ZHU+ClRlc3RlZC1ieTogRG9uYWxkIENhcnIgPGRAY2hhb3MtcmVpbnMuY29tPgpUZXN0ZWQtYnk6 IEhvbGdlciBIb2Zmc3TDpHR0ZSA8aG9sZ2VyQGFwcGxpZWQtYXN5bmNocm9ueS5jb20+ClRlc3Rl ZC1ieTogS29uc3RhbnRpbiBLaGFybGFtb3YgPEhpLUFuZ2VsQHlhbmRleC5ydT4KVGVzdGVkLWJ5 OiBTaHVhbmcgWmhhaSA8c3poYWkyQGNzLnJvY2hlc3Rlci5lZHU+ClRlc3RlZC1ieTogU29maWEg VHJpbmggPHNvZmlhLnRyaW5oQGVkaS53b3Jrcz4KVGVzdGVkLWJ5OiBWYWliaGF2IEphaW4gPHZh aWJoYXZAbGludXguaWJtLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCB8ICAz MSArKysrKysrKwogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAgfCAgIDUgKysKIGluY2x1ZGUv bGludXgvbW16b25lLmggICAgIHwgICA2ICsrCiBtbS9pbnRlcm5hbC5oICAgICAgICAgICAgICB8 ICAgMSArCiBtbS9tZW1jb250cm9sLmMgICAgICAgICAgICB8ICAgMSArCiBtbS9ybWFwLmMgICAg ICAgICAgICAgICAgICB8ICAgNyArKwogbW0vc3dhcC5jICAgICAgICAgICAgICAgICAgfCAgIDQg Ky0KIG1tL3Ztc2Nhbi5jICAgICAgICAgICAgICAgIHwgMTU3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmggYi9p bmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaAppbmRleCA4OWIxNDcyOWQ1OWYuLjJiZmRjYzc3NjQ4 YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgKKysrIGIvaW5jbHVkZS9s aW51eC9tZW1jb250cm9sLmgKQEAgLTQzOCw2ICs0MzgsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVj dCBvYmpfY2dyb3VwICpfX2ZvbGlvX29iamNnKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAgKiAtIExS VSBpc29sYXRpb24KICAqIC0gbG9ja19wYWdlX21lbWNnKCkKICAqIC0gZXhjbHVzaXZlIHJlZmVy ZW5jZQorICogLSBtZW1fY2dyb3VwX3RyeWxvY2tfcGFnZXMoKQogICoKICAqIEZvciBhIGttZW0g Zm9saW8gYSBjYWxsZXIgc2hvdWxkIGhvbGQgYW4gcmN1IHJlYWQgbG9jayB0byBwcm90ZWN0IG1l bWNnCiAgKiBhc3NvY2lhdGVkIHdpdGggYSBrbWVtIGZvbGlvIGZyb20gYmVpbmcgcmVsZWFzZWQu CkBAIC00OTksNiArNTAwLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX2Nncm91cCAqZm9s aW9fbWVtY2dfcmN1KHN0cnVjdCBmb2xpbyAqZm9saW8pCiAgKiAtIExSVSBpc29sYXRpb24KICAq IC0gbG9ja19wYWdlX21lbWNnKCkKICAqIC0gZXhjbHVzaXZlIHJlZmVyZW5jZQorICogLSBtZW1f Y2dyb3VwX3RyeWxvY2tfcGFnZXMoKQogICoKICAqIEZvciBhIGttZW0gcGFnZSBhIGNhbGxlciBz aG91bGQgaG9sZCBhbiByY3UgcmVhZCBsb2NrIHRvIHByb3RlY3QgbWVtY2cKICAqIGFzc29jaWF0 ZWQgd2l0aCBhIGttZW0gcGFnZSBmcm9tIGJlaW5nIHJlbGVhc2VkLgpAQCAtOTQ4LDYgKzk1MCwy MyBAQCB2b2lkIHVubG9ja19wYWdlX21lbWNnKHN0cnVjdCBwYWdlICpwYWdlKTsKIAogdm9pZCBf X21vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpZHgsIGludCB2 YWwpOwogCisvKiB0cnkgdG8gc3RhYmxpemUgZm9saW9fbWVtY2coKSBmb3IgYWxsIHRoZSBwYWdl cyBpbiBhIG1lbWNnICovCitzdGF0aWMgaW5saW5lIGJvb2wgbWVtX2Nncm91cF90cnlsb2NrX3Bh Z2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKK3sKKwlyY3VfcmVhZF9sb2NrKCk7CisKKwlp ZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpIHx8ICFhdG9taWNfcmVhZCgmbWVtY2ctPm1vdmluZ19h Y2NvdW50KSkKKwkJcmV0dXJuIHRydWU7CisKKwlyY3VfcmVhZF91bmxvY2soKTsKKwlyZXR1cm4g ZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX3VubG9ja19wYWdlcyh2 b2lkKQoreworCXJjdV9yZWFkX3VubG9jaygpOworfQorCiAvKiBpZHggY2FuIGJlIG9mIHR5cGUg ZW51bSBtZW1jZ19zdGF0X2l0ZW0gb3Igbm9kZV9zdGF0X2l0ZW0gKi8KIHN0YXRpYyBpbmxpbmUg dm9pZCBtb2RfbWVtY2dfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAogCQkJCSAgIGlu dCBpZHgsIGludCB2YWwpCkBAIC0xMzg2LDYgKzE0MDUsMTggQEAgc3RhdGljIGlubGluZSB2b2lk IGZvbGlvX21lbWNnX3VubG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewogfQogCitzdGF0aWMg aW5saW5lIGJvb2wgbWVtX2Nncm91cF90cnlsb2NrX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICpt ZW1jZykKK3sKKwkvKiB0byBtYXRjaCBmb2xpb19tZW1jZ19yY3UoKSAqLworCXJjdV9yZWFkX2xv Y2soKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIG1lbV9jZ3JvdXBf dW5sb2NrX3BhZ2VzKHZvaWQpCit7CisJcmN1X3JlYWRfdW5sb2NrKCk7Cit9CisKIHN0YXRpYyBp bmxpbmUgdm9pZCBtZW1fY2dyb3VwX2hhbmRsZV9vdmVyX2hpZ2godm9pZCkKIHsKIH0KZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA4OTRj Mjg5YzJjMDYuLjRlOGFiNGFkNDQ3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisr KyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtMTUyMyw2ICsxNTIzLDExIEBAIHN0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBmb2xpb19wZm4oc3RydWN0IGZvbGlvICpmb2xpbykKIAlyZXR1cm4g cGFnZV90b19wZm4oJmZvbGlvLT5wYWdlKTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZm9s aW8gKnBmbl9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbikKK3sKKwlyZXR1cm4gcGFnZV9mb2xpbyhw Zm5fdG9fcGFnZShwZm4pKTsKK30KKwogc3RhdGljIGlubGluZSBhdG9taWNfdCAqZm9saW9fcGlu Y291bnRfcHRyKHN0cnVjdCBmb2xpbyAqZm9saW8pCiB7CiAJcmV0dXJuICZmb2xpb19wYWdlKGZv bGlvLCAxKS0+Y29tcG91bmRfcGluY291bnQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21t em9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCAyZDAyM2QyNDNlNzMuLmYwYjk4 MDM2MjE4NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaAorKysgYi9pbmNsdWRl L2xpbnV4L21tem9uZS5oCkBAIC0zNzQsNiArMzc0LDcgQEAgZW51bSBscnV2ZWNfZmxhZ3Mgewog I2lmbmRlZiBfX0dFTkVSQVRJTkdfQk9VTkRTX0gKIAogc3RydWN0IGxydXZlYzsKK3N0cnVjdCBw YWdlX3ZtYV9tYXBwZWRfd2FsazsKIAogI2RlZmluZSBMUlVfR0VOX01BU0sJCSgoQklUKExSVV9H RU5fV0lEVEgpIC0gMSkgPDwgTFJVX0dFTl9QR09GRikKICNkZWZpbmUgTFJVX1JFRlNfTUFTSwkJ KChCSVQoTFJVX1JFRlNfV0lEVEgpIC0gMSkgPDwgTFJVX1JFRlNfUEdPRkYpCkBAIC00MjksNiAr NDMwLDcgQEAgc3RydWN0IGxydV9nZW5fc3RydWN0IHsKIH07CiAKIHZvaWQgbHJ1X2dlbl9pbml0 X2xydXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpOwordm9pZCBscnVfZ2VuX2xvb2tfYXJvdW5k KHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdyk7CiAKICNpZmRlZiBDT05GSUdfTUVN Q0cKIHZvaWQgbHJ1X2dlbl9pbml0X21lbWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyk7CkBA IC00NDEsNiArNDQzLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBscnVfZ2VuX2luaXRfbHJ1dmVj KHN0cnVjdCBscnV2ZWMgKmxydXZlYykKIHsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGxydV9n ZW5fbG9va19hcm91bmQoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13KQoreworfQor CiAjaWZkZWYgQ09ORklHX01FTUNHCiBzdGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X21l bWNnKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKIHsKZGlmZiAtLWdpdCBhL21tL2ludGVybmFs LmggYi9tbS9pbnRlcm5hbC5oCmluZGV4IGNmMTYyODBjZTEzMi4uNTlkMjQyMmI2NDdkIDEwMDY0 NAotLS0gYS9tbS9pbnRlcm5hbC5oCisrKyBiL21tL2ludGVybmFsLmgKQEAgLTY4LDYgKzY4LDcg QEAgdm1fZmF1bHRfdCBkb19zd2FwX3BhZ2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwogdm9pZCBm b2xpb19yb3RhdGVfcmVjbGFpbWFibGUoc3RydWN0IGZvbGlvICpmb2xpbyk7CiBib29sIF9fZm9s aW9fZW5kX3dyaXRlYmFjayhzdHJ1Y3QgZm9saW8gKmZvbGlvKTsKIHZvaWQgZGVhY3RpdmF0ZV9m aWxlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pOwordm9pZCBmb2xpb19hY3RpdmF0ZShzdHJ1 Y3QgZm9saW8gKmZvbGlvKTsKIAogdm9pZCBmcmVlX3BndGFibGVzKHN0cnVjdCBtbXVfZ2F0aGVy ICp0bGIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqc3RhcnRfdm1hLAogCQl1bnNpZ25lZCBsb25n IGZsb29yLCB1bnNpZ25lZCBsb25nIGNlaWxpbmcpOwpkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJv bC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDJlZTA3NGY4MGU3Mi4uOThhYTcyMGFjNjM5IDEw MDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKKysrIGIvbW0vbWVtY29udHJvbC5jCkBAIC0yNzY5 LDYgKzI3NjksNyBAQCBzdGF0aWMgdm9pZCBjb21taXRfY2hhcmdlKHN0cnVjdCBmb2xpbyAqZm9s aW8sIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKIAkgKiAtIExSVSBpc29sYXRpb24KIAkgKiAt IGxvY2tfcGFnZV9tZW1jZygpCiAJICogLSBleGNsdXNpdmUgcmVmZXJlbmNlCisJICogLSBtZW1f Y2dyb3VwX3RyeWxvY2tfcGFnZXMoKQogCSAqLwogCWZvbGlvLT5tZW1jZ19kYXRhID0gKHVuc2ln bmVkIGxvbmcpbWVtY2c7CiB9CmRpZmYgLS1naXQgYS9tbS9ybWFwLmMgYi9tbS9ybWFwLmMKaW5k ZXggZmVkYjgyMzcxZWZlLi43Y2I3ZWYyOTA4OGEgMTAwNjQ0Ci0tLSBhL21tL3JtYXAuYworKysg Yi9tbS9ybWFwLmMKQEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRlIDxsaW51eC9wYWdlX2lkbGUu aD4KICNpbmNsdWRlIDxsaW51eC9tZW1yZW1hcC5oPgogI2luY2x1ZGUgPGxpbnV4L3VzZXJmYXVs dGZkX2suaD4KKyNpbmNsdWRlIDxsaW51eC9tbV9pbmxpbmUuaD4KIAogI2luY2x1ZGUgPGFzbS90 bGJmbHVzaC5oPgogCkBAIC04MjEsNiArODIyLDEyIEBAIHN0YXRpYyBib29sIGZvbGlvX3JlZmVy ZW5jZWRfb25lKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCX0KIAogCQlpZiAocHZtdy5wdGUpIHsK KwkJCWlmIChscnVfZ2VuX2VuYWJsZWQoKSAmJiBwdGVfeW91bmcoKnB2bXcucHRlKSAmJgorCQkJ ICAgICEodm1hLT52bV9mbGFncyAmIChWTV9TRVFfUkVBRCB8IFZNX1JBTkRfUkVBRCkpKSB7CisJ CQkJbHJ1X2dlbl9sb29rX2Fyb3VuZCgmcHZtdyk7CisJCQkJcmVmZXJlbmNlZCsrOworCQkJfQor CiAJCQlpZiAocHRlcF9jbGVhcl9mbHVzaF95b3VuZ19ub3RpZnkodm1hLCBhZGRyZXNzLAogCQkJ CQkJcHZtdy5wdGUpKSB7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL21tL3N3YXAuYyBiL21tL3N3YXAu YwppbmRleCBhOTlkMjIzMDhmMjguLjBhYTFkMGIzM2Q0MiAxMDA2NDQKLS0tIGEvbW0vc3dhcC5j CisrKyBiL21tL3N3YXAuYwpAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyBib29sIG5lZWRfYWN0 aXZhdGVfcGFnZV9kcmFpbihpbnQgY3B1KQogCXJldHVybiBwYWdldmVjX2NvdW50KCZwZXJfY3B1 KGxydV9wdmVjcy5hY3RpdmF0ZV9wYWdlLCBjcHUpKSAhPSAwOwogfQogCi1zdGF0aWMgdm9pZCBm b2xpb19hY3RpdmF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKQordm9pZCBmb2xpb19hY3RpdmF0ZShz dHJ1Y3QgZm9saW8gKmZvbGlvKQogewogCWlmIChmb2xpb190ZXN0X2xydShmb2xpbykgJiYgIWZv bGlvX3Rlc3RfYWN0aXZlKGZvbGlvKSAmJgogCSAgICAhZm9saW9fdGVzdF91bmV2aWN0YWJsZShm b2xpbykpIHsKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWN0aXZhdGVf cGFnZV9kcmFpbihpbnQgY3B1KQogewogfQogCi1zdGF0aWMgdm9pZCBmb2xpb19hY3RpdmF0ZShz dHJ1Y3QgZm9saW8gKmZvbGlvKQordm9pZCBmb2xpb19hY3RpdmF0ZShzdHJ1Y3QgZm9saW8gKmZv bGlvKQogewogCXN0cnVjdCBscnV2ZWMgKmxydXZlYzsKIApkaWZmIC0tZ2l0IGEvbW0vdm1zY2Fu LmMgYi9tbS92bXNjYW4uYwppbmRleCA4OTFmMGFiNjliM2EuLmNmODlhMjhjM2IwZSAxMDA2NDQK LS0tIGEvbW0vdm1zY2FuLmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTE1NTQsNiArMTU1NCwxMSBA QCBzdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19wYWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAq cGFnZV9saXN0LAogCQlpZiAoIXNjLT5tYXlfdW5tYXAgJiYgcGFnZV9tYXBwZWQocGFnZSkpCiAJ CQlnb3RvIGtlZXBfbG9ja2VkOwogCisJCS8qIGZvbGlvX3VwZGF0ZV9nZW4oKSB0cmllZCB0byBw cm9tb3RlIHRoaXMgcGFnZT8gKi8KKwkJaWYgKGxydV9nZW5fZW5hYmxlZCgpICYmICFpZ25vcmVf cmVmZXJlbmNlcyAmJgorCQkgICAgcGFnZV9tYXBwZWQocGFnZSkgJiYgUGFnZVJlZmVyZW5jZWQo cGFnZSkpCisJCQlnb3RvIGtlZXBfbG9ja2VkOworCiAJCW1heV9lbnRlcl9mcyA9IChzYy0+Z2Zw X21hc2sgJiBfX0dGUF9GUykgfHwKIAkJCShQYWdlU3dhcENhY2hlKHBhZ2UpICYmIChzYy0+Z2Zw X21hc2sgJiBfX0dGUF9JTykpOwogCkBAIC0zMTM3LDYgKzMxNDIsMjggQEAgc3RhdGljIGJvb2wg cG9zaXRpdmVfY3RybF9lcnIoc3RydWN0IGN0cmxfcG9zICpzcCwgc3RydWN0IGN0cmxfcG9zICpw dikKICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWdpbmcKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiAKK3N0YXRpYyBpbnQgZm9saW9fdXBkYXRlX2dlbihzdHJ1Y3QgZm9saW8gKmZv bGlvLCBpbnQgZ2VuKQoreworCXVuc2lnbmVkIGxvbmcgbmV3X2ZsYWdzLCBvbGRfZmxhZ3MgPSBS RUFEX09OQ0UoZm9saW8tPmZsYWdzKTsKKworCVZNX1dBUk5fT05fT05DRShnZW4gPj0gTUFYX05S X0dFTlMpOworCVZNX1dBUk5fT05fT05DRSghcmN1X3JlYWRfbG9ja19oZWxkKCkpOworCisJZG8g eworCQkvKiBscnVfZ2VuX2RlbF9mb2xpbygpIGhhcyBpc29sYXRlZCB0aGlzIHBhZ2U/ICovCisJ CWlmICghKG9sZF9mbGFncyAmIExSVV9HRU5fTUFTSykpIHsKKwkJCS8qIGZvciBzaHJpbmtfcGFn ZV9saXN0KCkgKi8KKwkJCW5ld19mbGFncyA9IG9sZF9mbGFncyB8IEJJVChQR19yZWZlcmVuY2Vk KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJbmV3X2ZsYWdzID0gb2xkX2ZsYWdzICYgfihMUlVf R0VOX01BU0sgfCBMUlVfUkVGU19NQVNLIHwgTFJVX1JFRlNfRkxBR1MpOworCQluZXdfZmxhZ3Mg fD0gKGdlbiArIDFVTCkgPDwgTFJVX0dFTl9QR09GRjsKKwl9IHdoaWxlICghdHJ5X2NtcHhjaGco JmZvbGlvLT5mbGFncywgJm9sZF9mbGFncywgbmV3X2ZsYWdzKSk7CisKKwlyZXR1cm4gKChvbGRf ZmxhZ3MgJiBMUlVfR0VOX01BU0spID4+IExSVV9HRU5fUEdPRkYpIC0gMTsKK30KKwogc3RhdGlj IGludCBmb2xpb19pbmNfZ2VuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpm b2xpbywgYm9vbCByZWNsYWltaW5nKQogewogCWludCB0eXBlID0gZm9saW9faXNfZmlsZV9scnUo Zm9saW8pOwpAQCAtMzE0Nyw2ICszMTc0LDExIEBAIHN0YXRpYyBpbnQgZm9saW9faW5jX2dlbihz dHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGJvb2wgcmVjbGFpCiAJ Vk1fV0FSTl9PTl9PTkNFX0ZPTElPKCEob2xkX2ZsYWdzICYgTFJVX0dFTl9NQVNLKSwgZm9saW8p OwogCiAJZG8geworCQluZXdfZ2VuID0gKChvbGRfZmxhZ3MgJiBMUlVfR0VOX01BU0spID4+IExS VV9HRU5fUEdPRkYpIC0gMTsKKwkJLyogZm9saW9fdXBkYXRlX2dlbigpIGhhcyBwcm9tb3RlZCB0 aGlzIHBhZ2U/ICovCisJCWlmIChuZXdfZ2VuID49IDAgJiYgbmV3X2dlbiAhPSBvbGRfZ2VuKQor CQkJcmV0dXJuIG5ld19nZW47CisKIAkJbmV3X2dlbiA9IChvbGRfZ2VuICsgMSkgJSBNQVhfTlJf R0VOUzsKIAogCQluZXdfZmxhZ3MgPSBvbGRfZmxhZ3MgJiB+KExSVV9HRU5fTUFTSyB8IExSVV9S RUZTX01BU0sgfCBMUlVfUkVGU19GTEFHUyk7CkBAIC0zMzY1LDYgKzMzOTcsMTI1IEBAIHN0YXRp YyB2b2lkIGxydV9nZW5fYWdlX25vZGUoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgc3RydWN0 IHNjYW5fY29udHJvbCAqc2MpCiAJfSB3aGlsZSAoKG1lbWNnID0gbWVtX2Nncm91cF9pdGVyKE5V TEwsIG1lbWNnLCBOVUxMKSkpOwogfQogCisvKgorICogVGhpcyBmdW5jdGlvbiBleHBsb2l0cyBz cGF0aWFsIGxvY2FsaXR5IHdoZW4gc2hyaW5rX3BhZ2VfbGlzdCgpIHdhbGtzIHRoZQorICogcm1h cC4gSXQgc2NhbnMgdGhlIGFkamFjZW50IFBURXMgb2YgYSB5b3VuZyBQVEUgYW5kIHByb21vdGVz IGhvdCBwYWdlcy4KKyAqLwordm9pZCBscnVfZ2VuX2xvb2tfYXJvdW5kKHN0cnVjdCBwYWdlX3Zt YV9tYXBwZWRfd2FsayAqcHZtdykKK3sKKwlpbnQgaTsKKwlwdGVfdCAqcHRlOworCXVuc2lnbmVk IGxvbmcgc3RhcnQ7CisJdW5zaWduZWQgbG9uZyBlbmQ7CisJdW5zaWduZWQgbG9uZyBhZGRyOwor CXVuc2lnbmVkIGxvbmcgYml0bWFwW0JJVFNfVE9fTE9OR1MoTUlOX0xSVV9CQVRDSCldID0ge307 CisJc3RydWN0IGZvbGlvICpmb2xpbyA9IHBmbl9mb2xpbyhwdm13LT5wZm4pOworCXN0cnVjdCBt ZW1fY2dyb3VwICptZW1jZyA9IGZvbGlvX21lbWNnKGZvbGlvKTsKKwlzdHJ1Y3QgcGdsaXN0X2Rh dGEgKnBnZGF0ID0gZm9saW9fcGdkYXQoZm9saW8pOworCXN0cnVjdCBscnV2ZWMgKmxydXZlYyA9 IG1lbV9jZ3JvdXBfbHJ1dmVjKG1lbWNnLCBwZ2RhdCk7CisJREVGSU5FX01BWF9TRVEobHJ1dmVj KTsKKwlpbnQgb2xkX2dlbiwgbmV3X2dlbiA9IGxydV9nZW5fZnJvbV9zZXEobWF4X3NlcSk7CisK Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKHB2bXctPnB0bCk7CisJVk1fV0FSTl9PTl9PTkNFX0ZPTElP KGZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSwgZm9saW8pOworCisJaWYgKHNwaW5faXNfY29udGVuZGVk KHB2bXctPnB0bCkpCisJCXJldHVybjsKKworCXN0YXJ0ID0gbWF4KHB2bXctPmFkZHJlc3MgJiBQ TURfTUFTSywgcHZtdy0+dm1hLT52bV9zdGFydCk7CisJZW5kID0gcG1kX2FkZHJfZW5kKHB2bXct PmFkZHJlc3MsIHB2bXctPnZtYS0+dm1fZW5kKTsKKworCWlmIChlbmQgLSBzdGFydCA+IE1JTl9M UlVfQkFUQ0ggKiBQQUdFX1NJWkUpIHsKKwkJaWYgKHB2bXctPmFkZHJlc3MgLSBzdGFydCA8IE1J Tl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkUgLyAyKQorCQkJZW5kID0gc3RhcnQgKyBNSU5fTFJVX0JB VENIICogUEFHRV9TSVpFOworCQllbHNlIGlmIChlbmQgLSBwdm13LT5hZGRyZXNzIDwgTUlOX0xS VV9CQVRDSCAqIFBBR0VfU0laRSAvIDIpCisJCQlzdGFydCA9IGVuZCAtIE1JTl9MUlVfQkFUQ0gg KiBQQUdFX1NJWkU7CisJCWVsc2UgeworCQkJc3RhcnQgPSBwdm13LT5hZGRyZXNzIC0gTUlOX0xS VV9CQVRDSCAqIFBBR0VfU0laRSAvIDI7CisJCQllbmQgPSBwdm13LT5hZGRyZXNzICsgTUlOX0xS VV9CQVRDSCAqIFBBR0VfU0laRSAvIDI7CisJCX0KKwl9CisKKwlwdGUgPSBwdm13LT5wdGUgLSAo cHZtdy0+YWRkcmVzcyAtIHN0YXJ0KSAvIFBBR0VfU0laRTsKKworCXJjdV9yZWFkX2xvY2soKTsK KwlhcmNoX2VudGVyX2xhenlfbW11X21vZGUoKTsKKworCWZvciAoaSA9IDAsIGFkZHIgPSBzdGFy dDsgYWRkciAhPSBlbmQ7IGkrKywgYWRkciArPSBQQUdFX1NJWkUpIHsKKwkJdW5zaWduZWQgbG9u ZyBwZm4gPSBwdGVfcGZuKHB0ZVtpXSk7CisKKwkJVk1fV0FSTl9PTl9PTkNFKGFkZHIgPCBwdm13 LT52bWEtPnZtX3N0YXJ0IHx8IGFkZHIgPj0gcHZtdy0+dm1hLT52bV9lbmQpOworCisJCWlmICgh cHRlX3ByZXNlbnQocHRlW2ldKSB8fCBpc196ZXJvX3BmbihwZm4pKQorCQkJY29udGludWU7CisK KwkJaWYgKFdBUk5fT05fT05DRShwdGVfZGV2bWFwKHB0ZVtpXSkgfHwgcHRlX3NwZWNpYWwocHRl W2ldKSkpCisJCQljb250aW51ZTsKKworCQlpZiAoIXB0ZV95b3VuZyhwdGVbaV0pKQorCQkJY29u dGludWU7CisKKwkJVk1fV0FSTl9PTl9PTkNFKCFwZm5fdmFsaWQocGZuKSk7CisJCWlmIChwZm4g PCBwZ2RhdC0+bm9kZV9zdGFydF9wZm4gfHwgcGZuID49IHBnZGF0X2VuZF9wZm4ocGdkYXQpKQor CQkJY29udGludWU7CisKKwkJZm9saW8gPSBwZm5fZm9saW8ocGZuKTsKKwkJaWYgKGZvbGlvX25p ZChmb2xpbykgIT0gcGdkYXQtPm5vZGVfaWQpCisJCQljb250aW51ZTsKKworCQlpZiAoZm9saW9f bWVtY2dfcmN1KGZvbGlvKSAhPSBtZW1jZykKKwkJCWNvbnRpbnVlOworCisJCWlmICghcHRlcF90 ZXN0X2FuZF9jbGVhcl95b3VuZyhwdm13LT52bWEsIGFkZHIsIHB0ZSArIGkpKQorCQkJY29udGlu dWU7CisKKwkJaWYgKHB0ZV9kaXJ0eShwdGVbaV0pICYmICFmb2xpb190ZXN0X2RpcnR5KGZvbGlv KSAmJgorCQkgICAgIShmb2xpb190ZXN0X2Fub24oZm9saW8pICYmIGZvbGlvX3Rlc3Rfc3dhcGJh Y2tlZChmb2xpbykgJiYKKwkJICAgICAgIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpCisJ CQlmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTsKKworCQlvbGRfZ2VuID0gZm9saW9fbHJ1X2dlbihm b2xpbyk7CisJCWlmIChvbGRfZ2VuIDwgMCkKKwkJCWZvbGlvX3NldF9yZWZlcmVuY2VkKGZvbGlv KTsKKwkJZWxzZSBpZiAob2xkX2dlbiAhPSBuZXdfZ2VuKQorCQkJX19zZXRfYml0KGksIGJpdG1h cCk7CisJfQorCisJYXJjaF9sZWF2ZV9sYXp5X21tdV9tb2RlKCk7CisJcmN1X3JlYWRfdW5sb2Nr KCk7CisKKwlpZiAoYml0bWFwX3dlaWdodChiaXRtYXAsIE1JTl9MUlVfQkFUQ0gpIDwgUEFHRVZF Q19TSVpFKSB7CisJCWZvcl9lYWNoX3NldF9iaXQoaSwgYml0bWFwLCBNSU5fTFJVX0JBVENIKSB7 CisJCQlmb2xpbyA9IHBmbl9mb2xpbyhwdGVfcGZuKHB0ZVtpXSkpOworCQkJZm9saW9fYWN0aXZh dGUoZm9saW8pOworCQl9CisJCXJldHVybjsKKwl9CisKKwkvKiBmb2xpb191cGRhdGVfZ2VuKCkg cmVxdWlyZXMgc3RhYmxlIGZvbGlvX21lbWNnKCkgKi8KKwlpZiAoIW1lbV9jZ3JvdXBfdHJ5bG9j a19wYWdlcyhtZW1jZykpCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnEoJmxydXZlYy0+bHJ1 X2xvY2spOworCW5ld19nZW4gPSBscnVfZ2VuX2Zyb21fc2VxKGxydXZlYy0+bHJ1Z2VuLm1heF9z ZXEpOworCisJZm9yX2VhY2hfc2V0X2JpdChpLCBiaXRtYXAsIE1JTl9MUlVfQkFUQ0gpIHsKKwkJ Zm9saW8gPSBwZm5fZm9saW8ocHRlX3BmbihwdGVbaV0pKTsKKwkJaWYgKGZvbGlvX21lbWNnX3Jj dShmb2xpbykgIT0gbWVtY2cpCisJCQljb250aW51ZTsKKworCQlvbGRfZ2VuID0gZm9saW9fdXBk YXRlX2dlbihmb2xpbywgbmV3X2dlbik7CisJCWlmIChvbGRfZ2VuIDwgMCB8fCBvbGRfZ2VuID09 IG5ld19nZW4pCisJCQljb250aW51ZTsKKworCQlscnVfZ2VuX3VwZGF0ZV9zaXplKGxydXZlYywg Zm9saW8sIG9sZF9nZW4sIG5ld19nZW4pOworCX0KKworCXNwaW5fdW5sb2NrX2lycSgmbHJ1dmVj LT5scnVfbG9jayk7CisKKwltZW1fY2dyb3VwX3VubG9ja19wYWdlcygpOworfQorCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGV2aWN0aW9u CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMzQwMSw2ICszNTUyLDEyIEBAIHN0YXRpYyBi b29sIHNvcnRfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlv LCBpbnQgdGllcl9pZHgpCiAJCXJldHVybiB0cnVlOwogCX0KIAorCS8qIHByb21vdGVkICovCisJ aWYgKGdlbiAhPSBscnVfZ2VuX2Zyb21fc2VxKGxydWdlbi0+bWluX3NlcVt0eXBlXSkpIHsKKwkJ bGlzdF9tb3ZlKCZmb2xpby0+bHJ1LCAmbHJ1Z2VuLT5saXN0c1tnZW5dW3R5cGVdW3pvbmVdKTsK KwkJcmV0dXJuIHRydWU7CisJfQorCiAJLyogcHJvdGVjdGVkICovCiAJaWYgKHRpZXIgPiB0aWVy X2lkeCkgewogCQlpbnQgaGlzdCA9IGxydV9oaXN0X2Zyb21fc2VxKGxydWdlbi0+bWluX3NlcVt0 eXBlXSk7Ci0tIAoyLjM2LjAuNTUwLmdiMDkwODUxNzA4LWdvb2cKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==