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 865D4C77B72 for ; Wed, 12 Apr 2023 08:12:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21579900009; Wed, 12 Apr 2023 04:12:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 178C4900002; Wed, 12 Apr 2023 04:12:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 01739900009; Wed, 12 Apr 2023 04:12:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id E4283900002 for ; Wed, 12 Apr 2023 04:12:47 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id BA25DA0F46 for ; Wed, 12 Apr 2023 08:12:47 +0000 (UTC) X-FDA: 80672022774.27.8AE9158 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf26.hostedemail.com (Postfix) with ESMTP id 09BED14000D for ; Wed, 12 Apr 2023 08:12:45 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=IRzekdqY; spf=pass (imf26.hostedemail.com: domain of gregkh@linuxfoundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1681287166; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=CCbnQJPXBYStDXVa08DziYWvdf9IXu6Wa0VmGTOnIjw=; b=oaY7xTkfIA1lnHHe8p9hYQdAZHf+qQA4Z9QWAhsAthsO46iESYe0vOv+9oDP/mxrtUjGmj HfElAuOJHHKDD5zr3lSxv0Wt8UMnp6zI5SJkdSmmdgjriEbwCt63VXr1MRVK078jLB6dQ4 a/2BPdkV2NiVcE+MnqXkw+fULZrIoxg= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=IRzekdqY; spf=pass (imf26.hostedemail.com: domain of gregkh@linuxfoundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681287166; a=rsa-sha256; cv=none; b=pucIA+WtbtOPSHG/+4P1HvD80tb5g9bNfcxghL9ccIzUVLxt3/llCi6CuVnPhIgKhi9dSy DNsKYmgWYdLqeku2fTA78fdcODxkqOfv+rkcLoMW8UurnEOezdWBatYm3mRPEd87EurHyl eY33mtGw7RNsbg+RbIYWYsKLTcD9DSY= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4444F6299B; Wed, 12 Apr 2023 08:12:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54932C433EF; Wed, 12 Apr 2023 08:12:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1681287164; bh=WVIac9Tw+qO6XbMuEv3j4TBm2KiYN69zIN30WH6Q510=; h=Subject:To:Cc:From:Date:In-Reply-To:From; b=IRzekdqYZKXx0p5I4WfZne7HlcH6waarPGTp2JO4PDkjmk3IYuM5pA0zRncf0Ixv9 6F+JfX5XTtih0yQU1lQISJMHo15nlEJiTws7i7lctWzDBatLwUwLNtVWfFiurg2yOs PuZZYgCp/me9iGbZPQPeBJaLbhVEWEm3QGPxLJI4= Subject: Patch "mm: enable maple tree RCU mode by default." has been added to the 6.2-stable tree To: Liam.Howlett@Oracle.com,Liam.Howlett@oracle.com,gregkh@linuxfoundation.org,linux-mm@kvack.org,maple-tree@lists.infradead.org,syzbot+8d95422d3537159ca390@syzkaller.appspotmail.com Cc: From: Date: Wed, 12 Apr 2023 10:12:10 +0200 In-Reply-To: <20230411151055.2910579-15-Liam.Howlett@oracle.com> Message-ID: <2023041210-freezable-pod-444f@gregkh> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit X-stable: commit X-Patchwork-Hint: ignore X-Rspamd-Queue-Id: 09BED14000D X-Stat-Signature: bgoaom1hpcwua84g3mn6wf8hw4qrdcsh X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1681287165-360386 X-HE-Meta: U2FsdGVkX1/fijrqO7LDyFrQ0DmWW5moQ5Wqd0hR2yMNSbAxb2hfGamrgBZ5dPkdxJaWWgsHUrzL3TNUdpsPcpVaJb5QWrbkew0h3AXqRV+sGm2Y4bjYtaY1D88bfduFoENKSIMv2x2a1joaRA+rDPXcQYoYykyvVReQn1QGaEqkf8sb+Jc1mwIrGgZARD9y1HZYsaGdenLPmmbXQsyLVgHz/y2/ewxBTXfz86rcv2OQRW79fa9yBtRwMLd97PnjqkFUrtDatZkhB/q/ubbnJrviSYUHcCGNPy1cKjAobJC/3pUx+0b/+tl/cPJPREi9kA8DlColr7BOpc28BJHudNXMGkSh/FfrEwNpbWnUHh0JELmGGiZbT1fpXmGgiuOilinOFAK4MlzSZzcUQndAUJ6mVbl03c9pAHItYMXDmT2240of8CYGO4mGdi2abYc/wd6pbIwofMMsQL6UE5b8PgSgX9jeGNdJOBJo/+uHYK3q3goEJWEUSSxqcNhgTJ8qTEJFm+HWgdvHLaqwaH8PNHnCsS2IIaEDTuZusoT9Pq0CFnrQB98KccPWO6Zi41WqGZLVOa0p1belSVcanUj+fYRpwAoncjVi55q+dWmsy3/JZAPVG79PDHcrrRsz7rhkZmSmpb4vxQkNTbcUvbIRcH2FpHtxWCf98c6DkOGhWGO6ANf8RGRuDuRewVkuWGM3IHB9ouO5HVvUkwc6oZDKBEiWvXUQKVDlkuqj/k+PUuHhdocDfQezV09qLMn6L8Q7oGYWb/xiUmj6CgfUko9pxHpdYoYFkxbVr1551Xs6OKHlusGmbffbEhChzg+4hVsi3Ld3Eb7gDnTbKYyDajd4AKn87TyYr/EYE0N58OJXjH+KG/DLneGcPwj8eS9nlPZLntv9/Rl5d1qdp3m6EXfwXyhKniHTdnZgHLHRr7BmUkMlVynt8QkgJ0sFBt8zeF24zRnQh6MJdzwCY0hleGn IQfKPz/o FRVHjhKrVvJhH1hfDsugxoPcZBxxuE2QDU5XJBUWFJHMS4yezfm4pagdOiYMdFoYpFgn7mEBgUoQe+d/LtR7p7ldokDxOFsO6W5cdz/rf5tDBWJFifCqI5f+h7+HEG853V87MhxJ/4RwNb8CuwaDJd3H3fbGtpgBcCKqaCaecGNx4gYctaIm9oUVjtbG1qjEAIAhvvvIOYd14NXMFBkOl1zpw2ZSi7+mrMAZlrtIRLN2zAYH3Z5QRv/o+VS6NJjRN1sEEVMXYztLF3JMyH2fP8VKdAC/6KWsMiZ8dYYwSXwkchD5rugdoP29MhKuGIxFcNwTw40VebCjavL46+DPS26GbtesCSpEwqYvn+IE8lFSlz63Nn3Us7YZxgZlXXqYnjfphl0Z04m1QW+ZlUIv+V4tReI2UJkP/KN7cXnd+hQZS6yR5+963EDowuW0VpY/C46Rr6CRdt6VFchs0WnHIBbAYGQWa+31jV9ojorxRqf0HHCoSp4MKd/tlLyNDZw38XXOGXfs04MZ3vUZcuM6oLBxHBjW0dEuWWlaAOwR5fJBfor7sPaLMeRvA+mUWGNdQs8Ikj70N1b3+64cZJ+zJVUkQ3NxKi2pzUiUEELWQ0NW4nvl4mceyP0EfGLJ1/o7g/pt5yem5rjiCtJBg3iZ2INLSFmP3fyJKPNo+lrkOyrAdc5Fb+NXKH9HfawKcBl6n2n8XXqfo6UYN6P6mimLSKSkSgcRv2370jmBiKBDMWIl/TV/FyvDyjXwxlTFuf3AuFU2EaZWlH2eUm84= 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: This is a note to let you know that I've just added the patch titled mm: enable maple tree RCU mode by default. to the 6.2-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: mm-enable-maple-tree-rcu-mode-by-default.patch and it can be found in the queue-6.2 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >From stable-owner@vger.kernel.org Tue Apr 11 17:14:26 2023 From: "Liam R. Howlett" Date: Tue, 11 Apr 2023 11:10:55 -0400 Subject: mm: enable maple tree RCU mode by default. To: Greg Kroah-Hartman , stable@vger.kernel.org Cc: maple-tree@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Liam R. Howlett" , "Liam R . Howlett" , syzbot+8d95422d3537159ca390@syzkaller.appspotmail.com Message-ID: <20230411151055.2910579-15-Liam.Howlett@oracle.com> From: "Liam R. Howlett" commit 3dd4432549415f3c65dd52d5c687629efbf4ece1 upstream. Use the maple tree in RCU mode for VMA tracking. The maple tree tracks the stack and is able to update the pivot (lower/upper boundary) in-place to allow the page fault handler to write to the tree while holding just the mmap read lock. This is safe as the writes to the stack have a guard VMA which ensures there will always be a NULL in the direction of the growth and thus will only update a pivot. It is possible, but not recommended, to have VMAs that grow up/down without guard VMAs. syzbot has constructed a testcase which sets up a VMA to grow and consume the empty space. Overwriting the entire NULL entry causes the tree to be altered in a way that is not safe for concurrent readers; the readers may see a node being rewritten or one that does not match the maple state they are using. Enabling RCU mode allows the concurrent readers to see a stable node and will return the expected result. Link: https://lkml.kernel.org/r/20230227173632.3292573-9-surenb@google.com Cc: stable@vger.kernel.org Fixes: d4af56c5c7c6 ("mm: start tracking VMAs with maple tree") Signed-off-by: Liam R. Howlett Reported-by: syzbot+8d95422d3537159ca390@syzkaller.appspotmail.com Signed-off-by: Greg Kroah-Hartman --- include/linux/mm_types.h | 3 ++- kernel/fork.c | 3 +++ mm/mmap.c | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -810,7 +810,8 @@ struct mm_struct { unsigned long cpu_bitmap[]; }; -#define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN) +#define MM_MT_FLAGS (MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN | \ + MT_FLAGS_USE_RCU) extern struct mm_struct init_mm; /* Pointer magic because the dynamic array size confuses some compilers. */ --- a/kernel/fork.c +++ b/kernel/fork.c @@ -617,6 +617,7 @@ static __latent_entropy int dup_mmap(str if (retval) goto out; + mt_clear_in_rcu(mas.tree); mas_for_each(&old_mas, mpnt, ULONG_MAX) { struct file *file; @@ -703,6 +704,8 @@ static __latent_entropy int dup_mmap(str retval = arch_dup_mmap(oldmm, mm); loop_out: mas_destroy(&mas); + if (!retval) + mt_set_in_rcu(mas.tree); out: mmap_write_unlock(mm); flush_tlb_mm(oldmm); --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2308,7 +2308,7 @@ do_mas_align_munmap(struct ma_state *mas int count = 0; int error = -ENOMEM; MA_STATE(mas_detach, &mt_detach, 0, 0); - mt_init_flags(&mt_detach, MT_FLAGS_LOCK_EXTERN); + mt_init_flags(&mt_detach, mas->tree->ma_flags & MT_FLAGS_LOCK_MASK); mt_set_external_lock(&mt_detach, &mm->mmap_lock); if (mas_preallocate(mas, vma, GFP_KERNEL)) @@ -3095,6 +3095,7 @@ void exit_mmap(struct mm_struct *mm) */ set_bit(MMF_OOM_SKIP, &mm->flags); mmap_write_lock(mm); + mt_clear_in_rcu(&mm->mm_mt); free_pgtables(&tlb, &mm->mm_mt, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING); tlb_finish_mmu(&tlb); Patches currently in stable-queue which might be from stable-owner@vger.kernel.org are queue-6.2/maple_tree-fix-potential-rcu-issue.patch queue-6.2/maple_tree-add-smp_rmb-to-dead-node-detection.patch queue-6.2/maple_tree-add-rcu-lock-checking-to-rcu-callback-functions.patch queue-6.2/maple_tree-fix-handle-of-invalidated-state-in-mas_wr_store_setup.patch queue-6.2/maple_tree-reduce-user-error-potential.patch queue-6.2/maple_tree-fix-mas_prev-and-mas_find-state-handling.patch queue-6.2/maple_tree-remove-gfp_zero-from-kmem_cache_alloc-and-kmem_cache_alloc_bulk.patch queue-6.2/maple_tree-be-more-cautious-about-dead-nodes.patch queue-6.2/mm-enable-maple-tree-rcu-mode-by-default.patch queue-6.2/maple_tree-detect-dead-nodes-in-mas_start.patch queue-6.2/maple_tree-fix-freeing-of-nodes-in-rcu-mode.patch queue-6.2/maple_tree-remove-extra-smp_wmb-from-mas_dead_leaves.patch queue-6.2/maple_tree-refine-ma_state-init-from-mas_start.patch