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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0E576C369DC for ; Tue, 29 Apr 2025 09:07:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4EE3C6B000D; Tue, 29 Apr 2025 05:07:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 44B4A6B0011; Tue, 29 Apr 2025 05:07:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 252296B0012; Tue, 29 Apr 2025 05:07:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id F41166B000D for ; Tue, 29 Apr 2025 05:07:31 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id CB9001A0899 for ; Tue, 29 Apr 2025 09:07:33 +0000 (UTC) X-FDA: 83386503186.13.8B962BB Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by imf13.hostedemail.com (Postfix) with ESMTP id 028722000B for ; Tue, 29 Apr 2025 09:07:31 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VfxhmGer; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745917652; a=rsa-sha256; cv=none; b=eNWXrROyzSun84Vhezp/dJfTF7LX2I6OYQEZzyMgX7zslBf7W+Lh/rUQIhH1oKZy02bB3x anvByMpIpzXnbSmXZ9uqP8cTfkjrDyCa71PMeE4JBTCq/Tdg5SEXvzS9BnjAnePFgXWz66 jMGUtbE2IK20AK6elYAnSVKrDIHLK6c= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VfxhmGer; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745917652; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=y2xaet/qaO7StLKSUFi1BdbnaxAzWHRJULWFd8OTYBM=; b=1b+8zQXB/tOwRhNLHE6efmZTPFZsKh7fBdzGK0rhAnFaNLsEMr3X8wUsNsghOWP457HQ0+ u6PAteQtegw4zXP/qhiQ/vwsHg0NJTuUo/xgIw26cQ2PM4POh3tlqhQoxRHExAK5RLvNWn /j3ao/aWMLUwbg4xiOOb68qGW/Cy8H4= Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5f728aeedacso6260134a12.2 for ; Tue, 29 Apr 2025 02:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745917651; x=1746522451; darn=kvack.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=y2xaet/qaO7StLKSUFi1BdbnaxAzWHRJULWFd8OTYBM=; b=VfxhmGerWcPvjtgXW9p0d0zgc/wD5rZVBrQnIl2fAVhdh7ALlG9OQ0SwkFxpubOq30 awGM5oGwhLVEWPF7Ufy0lmqIEl0u8RBPjOOgiWV6OWn/t/65zEz9heD8hyS1UQnbEne9 aDKLlBqO+AtkK8G5gl5VS4yKuEviawwYhFM+bXE8Ks0xK08iITNyMLJUrb1a9AfSm6BW +kLuEOu51RbTGnzff08zRe7Egh+fnVkP7DzqWZOu2c7v7OzDIlqgsGHlK5vsHyIMd23k Gg8DZ+V5KT0M2Q3npvhechTdakmkD6u95V+iZY0j/BSnfXeSdBE8RoctuAotaItel1KE MiQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745917651; x=1746522451; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=y2xaet/qaO7StLKSUFi1BdbnaxAzWHRJULWFd8OTYBM=; b=RpT05oO+AfO3qpDauI7+vSArZ266LrZQVl1RTevokbndv/rwvGnjrisU7JoGp5ho+2 CA/WJCih1Bu6ugOsJ62k06apCQ74ZQceRsgTFWMLESMxgKSBjFIF4D6iNCowodCRSUGT ccALGZYNhAHztZ//44nDU+5hBul8fAMXm/w8jEhk2dwgKRobmYgPHs3MduuHDuU0cdEo t7pPKRacWJt8QnPfxKTYGjOSLSZHWNR3yqGBflCsC8fGzXvifJPwhHNXdCArPWPJ4xYa 9p8m3C6r4uY7AMLkS4TZv1yVPUmR+vQguUm4m1cGG9MVCUKw1fOHOPN9qi8w1I+YcC6Y EpKA== X-Forwarded-Encrypted: i=1; AJvYcCW0VDZL/2czcKUxD0acIyRPaMj9skf8xZDvTj6kB5Iei57N3Qnw6twBl8l3Yqh6yQfgc8C2E24JWQ==@kvack.org X-Gm-Message-State: AOJu0Ywshj+1wAE2ihE+evOHvwajMWLIpdJ8wVJX/ZdKONIDwjns17D0 CbBMkDL0lh/UzWDFX5P0AQ7Xt86luRIef3jGntTE55NWa4SvfqS5 X-Gm-Gg: ASbGnctXlIKJfD0EDQve90MieR+8XRaMIxEtNf+S6Xv8yo+O38XzSeSgaZTJ62dQE97 X5YB3DSYXp+oHwvaX1gFcWZaq1SqarNrZgoKhMMgCu/ZVQkT2AGESAmrrZAnwEiJynSq8dKGOMm eYWuGKj/tXLMSkbM/dX+/qfiojQAGfVeEF8r1lVprQKijgoZhYUZtOfEwssx3PfVnNQLCIKzv03 ysSGYhKTZjEuuwbOzrhwxE7po40gANiBKD054IleTxn8GNEOqRimJ0zdCfMcz6K/3UmCpmh49Hl OuQvvwCRBdxymSfwiFBiqJNw9Zh5IpQjr5l6fehe X-Google-Smtp-Source: AGHT+IErzmwF0Jxc/V0rYnr/xZZRieNnA5cIR1kSW8riSvqDas7TY84wgCKSHaAN1jIORChIcDfcNQ== X-Received: by 2002:a17:907:3f08:b0:ac7:d0fe:e9e4 with SMTP id a640c23a62f3a-acec4c9c498mr303865466b.19.1745917650365; Tue, 29 Apr 2025 02:07:30 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6ecfa347sm766416266b.91.2025.04.29.02.07.29 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 Apr 2025 02:07:29 -0700 (PDT) From: Wei Yang To: akpm@linux-foundation.org Cc: david@redhat.com, lorenzo.stoakes@oracle.com, riel@surriel.com, vbabka@suse.cz, harry.yoo@oracle.com, jannh@google.com, baohua@kernel.org, linux-mm@kvack.org, Wei Yang Subject: [RFC Patch 5/5] anon_vma: add test to assert no double-reuse Date: Tue, 29 Apr 2025 09:06:39 +0000 Message-Id: <20250429090639.784-6-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20250429090639.784-1-richard.weiyang@gmail.com> References: <20250429090639.784-1-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Queue-Id: 028722000B X-Rspamd-Server: rspam04 X-Stat-Signature: jtrrep3t9gzgg6moch5o18rt5ozxbhpm X-HE-Tag: 1745917651-156271 X-HE-Meta: U2FsdGVkX1++olv9UlzF2o+X+R/dOeJKuSLEgA/S453uXIP6u5klfT41LNUP7/64Y0klb3e3hQGSgC+Vsx49kAv1LyLhSyF1G9Zpv7Gfi4SEFwt3vjOmEMpSCTyxsZL3xbR2bGysXWs22+gMRYGOSm8OKGS7S9WVEgSkSLIY9JAPMfxJitWSh8dmo5K/m40DevZOy8X6JDnqMjrj5MQlcW+fjvKLVTJSPI2j9p6s59AupexLbtKmBhzBP9mmMBgfiPGjaoA1yhkiOzGKDBR6/LQTu2utBGNsJzpZJsh3VejbTUnc4dvY+lhOKb4NN5sx2JnQfmebADWoY1kX9nGeWJCl9oLD4oVsaxDfHlkWTNn21Ecp6n0e0etSgHZreqQzJq+DhKM7W/3ZKmQ/jSQWfzd4SbNe56v2n7NOR52UmAsKbIE5gk6UVr4l4GqvqplR5kNdKAFgaHgEdzwuco0WFUTCq7EAXo7yw6FdVi5/gFydXg2WPINzYJvH9IRrKyqGiQeIrtdzWDx/AzArHMSsM3hwfgS63IWdpkrKRhqHh9WJv+nn3WCePDZmKVeZplz4WHYaewRlvScJRP/FRfmg0/yCw3+yfW+TNe2LbvGximmm8Ckql1kqGLw7eD/piQ2UP6GLL4RuHCrf4kGUibGAH/zsq5MVuXh/mYA0SVXtVlvn7MEfYy8pa/28FuUueYB+d1gBfYs113bWD8tuQHYgGMkjeTFPacJFojsEUVASiTDxGtJNSZv5Z4CgxaI6P5cFQBMu0iiMBTfStokByKXRag+M2iknzs+4If+YeKet6SrFAyWXarmA2+PdFEy+G6BvXTkqfuUy1eo/kpclPXuGsZOm3/k3SPG527prLtPFfue33nTlkvRvC/WrrwplssngTTf3T7EDHDeJjYN9WhI8CLXqx1Q/3IUgPEA+KNcPCGtY0I+vpk8iZdH5pSkuNPnx8E8Lz+l0bdL6ZYboy44 sze4lpHT TTjsbmBEohdVEDTR37s6bUKw7tYrPEhOjOw+HB3BIu1Ov8J2qcIGXhwu8I9C/T6Xf1//D3AreoaB08VZJCtL71e+TylxeuljgrbtdNrxuwsr8+7iqTOTP5dm73d5gCaaGa3hpSaXVeSV0NcAopJ9wwogq+shE5qwikqQ/ANK2C38k6pp2Wnkv0dU7x6ajwviBZeSDq+jr1sU0gjvRZ/Et3C7eiJXi638N29Fpr+D0udpg/27fpO5G3WhzDDwPbZVdndoTrkGXX3fOKAmA+wELJGceHfo3Tny2rNvmFhmsn9PfBL4U5drDo0+InRKxpQBfAIoCqPPAZWaSowTjfbLSu1xNKhzsAydAFAluWKy1z8Mq5HeLnckSgrQLGOPxPKBKloUedkemVC9dsY38gLLc+0SXwVeigKG/YOn8v01IlWMBpoH6ngFUwHk8yl6bb1yGUiWTZrXkeQGoL0XT9DJdv7SNw0FvtZsTBRbD73wQwzB6JXGLDM58npSa4e7jJVKoLu1iHsCT2j1P6wUE12DxiF1MnQkMoVgkjYiUqry+A2EgvjQlCtMhwm+TpI+CkkVIaUS/qnUSBEO65sW7imE+qHrgObbTkvdd0GLgO9Hb4dUlEpbGzdeTZjTV8PFu3icJctFUY0+O+mKwTGTR8buhhVIimK+pdxY8FAnqcKzXfVwSbXM68SvEZDHrZw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: commit 2555283eb40d ("mm/rmap: Fix anon_vma->degree ambiguity leading to double-reuse") fixed anon_vma double-reuse issue introduced by commit 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy"). Add a test case to assert no double-reuse. Signed-off-by: Wei Yang Cc: David Hildenbrand Cc: Barry Song Cc: Jann Horn Cc: Rik van Riel Cc: Vlastimil Babka Cc: Harry Yoo --- tools/testing/anon_vma/anon_vma.c | 47 ++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/tools/testing/anon_vma/anon_vma.c b/tools/testing/anon_vma/anon_vma.c index 495cd02ea661..633a62f5acba 100644 --- a/tools/testing/anon_vma/anon_vma.c +++ b/tools/testing/anon_vma/anon_vma.c @@ -558,7 +558,7 @@ static bool test_mergeable_vma(void) static bool test_reuse_anon_vma(void) { - struct vm_area_struct *root_vma, *vma, *vma1, *vma2; + struct vm_area_struct *root_vma, *vma, *vma1, *vma2, *vma3; struct anon_vma *root_anon_vma, *reused_anon_vma; struct anon_vma_chain *avc; @@ -690,6 +690,51 @@ static bool test_reuse_anon_vma(void) ASSERT_TRUE(avc->vma == vma1 || avc->vma == vma2); } + /* Fork from vma2 */ + /* + * When commit 7a3ef208e662 ("mm: prevent endless growth of anon_vma + * hierarchy") introduce anon_vma reuse, it embedded an issue of + * double-reuse. + * + * It happens when vma2 reuse an existing anon_vma and we fork from + * vma2 later. Before commit 2555283eb40d ("mm/rmap: Fix + * anon_vma->degree ambiguity leading to double-reuse"), the forked + * vma3 would reuse vma1->anon_vma, which is already in use. + * + * The following case assert vma1->anon_vma will not double-reuse. + * + * root_anon_vma + * +-----------+ + * | | + * +-----------+ + * \ + * | + * \ + * |\ vma1 + * | \ +-----------+ + * | > | av| != root_anon_vma + * | +-----------+ + * \ + * |\ vma2 + * | \ +-----------+ + * | > | av| == reused_anon_vma + * | +-----------+ + * \ + * \ vma3 + * \ +-----------+ + * > | av| != vma1->anon_vma + * +-----------+ + */ + /* vma1->anon_vma already has active vma */ + ASSERT_NE(NULL, vma1->anon_vma); + vma3 = alloc_vma(0x3000, 0x5000, 3); + anon_vma_fork(vma3, vma2); + ASSERT_NE(NULL, vma3->anon_vma); + /* Root is root_vma->anon_vma */ + ASSERT_EQ(vma3->anon_vma->root, root_anon_vma); + /* vma1->anon_vma is NOT reused here */ + ASSERT_NE(vma3->anon_vma, vma1->anon_vma); + cleanup(); ASSERT_EQ(0, nr_allocated); -- 2.34.1