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 7BD6DC77B71 for ; Wed, 12 Apr 2023 08:13:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12AC728000C; Wed, 12 Apr 2023 04:13:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0DA3E280003; Wed, 12 Apr 2023 04:13:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EE4DE28000C; Wed, 12 Apr 2023 04:13:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DC047280003 for ; Wed, 12 Apr 2023 04:13:57 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B3AF4160F58 for ; Wed, 12 Apr 2023 08:13:57 +0000 (UTC) X-FDA: 80672025714.22.8ABF792 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf16.hostedemail.com (Postfix) with ESMTP id E8EEE180010 for ; Wed, 12 Apr 2023 08:13:55 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=x1oQmp3T; spf=pass (imf16.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=1681287236; 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=ldrAwX0s4tWJfM+DxxHo9BHsWJt018lHAEXJZghydyQ=; b=4uAqSKuT1fsxpaB9oKPhJxoCNO4dLgNHF5QggiUSk3F4eoHznpEaPiA6ZuDnAPkU1ilsHv 0JlJgRhAiSvzyMd6MUX6siaNaGdiIaqJpswhm1q8KeO7jeLs4pBli1j1veko9Mlxk6SLzE 7Pg7ED/Wj1p322/XxkZ6YB7+S6agsHY= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=x1oQmp3T; spf=pass (imf16.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=1681287236; a=rsa-sha256; cv=none; b=JItbHVBUcZ39td25CiNLZBDuAv0OcQ2rRB5Rb5fEsjsVTY7mIeoWuSocGb0QJpEwb/Ziaa r1SgPNOwgyp+iX6ZxiWgbff+LXahj9Ug43HGsp9ZcDJja3b7Kv9NmNjo/Y5viZKb37Rpj3 1ZrAqOto9zH6wJaRsL9rUJYgwITvbbs= 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 32B69629C7; Wed, 12 Apr 2023 08:13:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45660C4339B; Wed, 12 Apr 2023 08:13:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1681287234; bh=xmCV+AXrf7PGnA0uishTVEAkyJ8S8SWWnNwHW1FN44o=; h=Subject:To:Cc:From:Date:In-Reply-To:From; b=x1oQmp3TZlbCf3Nie9b8eSH1adFIgeeW7Tp2Twad1VK6njdv14znPb+aWhH7EnArX PtjwI30Gq6J6enhXOKYkx0cTDpkaXEwGWxUKQsO9IT/2nPSANNlm3eGkzVq81LHH8N 8opLqc9YhuNJmXKLjdp2vxOtd5CyFKOi5m3BSa9g= Subject: Patch "mm: enable maple tree RCU mode by default." has been added to the 6.1-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:13:32 +0200 In-Reply-To: <20230411151055.2910579-15-Liam.Howlett@oracle.com> Message-ID: <2023041231-rocky-submerge-209c@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-Server: rspam05 X-Rspamd-Queue-Id: E8EEE180010 X-Stat-Signature: pr6ad9fpgwtibj3pn8dhp55857pws3oc X-Rspam-User: X-HE-Tag: 1681287235-225724 X-HE-Meta: U2FsdGVkX19J1bWw7vxcuPacI5WUu0Mp7CZd7anvd/gjRwVvq2l7K3Z70zjX4cDvik88yfEH0cVw5VN5WNBaS8+U1Oxm3CwmIvx935T1hXoUVLEA8CZ97UdUpxMTj9h0TcXYnt6uDEufXrauA+l3PYDdtNv3dJPgX4tC2xZYawfzrzmO2DghM3+qoU3uh4daZoEEw8JNZTYjEhIqBT12dhb04+fNSHZoSe8zS8STo1VM8eKFTneL9Zj4+DK7C5wMzdT/nZKwx+i0WDzejvSSnK0KOsp84tABCiNWqNL8JCSazhsgJQSp6OyvM3c/SOBiNU5XDSG1H/GNZW4Fh3iMyemyGkSZukX0tU4W61+6oSf1KcL4YM8zGCC5D99wYb5shInC7b1PtMJcWHkI0Tfv43zT30HtmD0sxx7r8K2H6MiLNEcGcNYnDqpevADk5DKLGtRT4dkpVEpJWCnvznsj/6f6Rc13urfvUaZGX9DPGg2ztjFemBXVg9ZQKHFMDHBuCkwzuZSwdG8MLINlKWPwR+E6pQ9c5D7rTF5gl8/O+UPvmlVWxEKg9NZW51sAdIF3tnkFWjThpFYUbaLr8x4aqKqTn/jh7R4ScCoNDN1xL2d9AYurrIdfleieeMThvDi6PZLr1ImyIbKRjeW0WV2mzSN7caVUT9b4NcCvdCoHj6gvIVeqFrbYAST6hZQ41UWUgoTeH7j/IJLKWtCUv/5VkJMQkWPtIgYVD9RdfTmSbawCB3eh9l6NGgUTtn0+RFvCoAL6XAq5vIiWWs8sIOlQUgRy5wBjaUKNdwaADy29lA9MZHEKUa/XOMmZg2GjyavsarXT1W/x+2//0bylHWc98unANHoTHgCZ4OCpqEINny/ubHaYjEhrViqbyHDOLLGnKUVoZI8d8g0cIIU97jjov5eBwljFpQTjuWugXr6GFw6NetZ19L3Pg1B0bl7dXMYMghY5TC8dZc7pkE/iSv1 9bf2mLmN p5muXeP73DupSeh528Holr75QZFffJOskuwLXb7xPMd9EvtbijgB3JVZdLhQ2KU6WkDq8m4ITZ7cbZAOUm6fbItAN865M4uQ2CQRL9icRuN7xf3SUl2LviHh/FQtVEkTL4uPBfc28kwXt0x8yXRqNaqObSAEqiMcKy82hDoBfk7+63186itGwMqTh7yobpIa+An5NjQRL2HZi6vGm2MLmr7WLjC1PUYCuktqeznQL2QATkzWbO/0ukeSm5jZNXTt3c/oSv31urvZYNqAInrAWPU/kq4ygWEe6lSvhZ5hSzwtRyLU5DX63CcDzPZ6CFKELAa9ery2miGYVPPgn5Zrjj6kgHw4WCfnGDHIJVly9n9CTVaawB51L1tzvpHvh2Gr+HUkEUECNhFnQ9oindUUCYH53HH4OyYfF/1L0qms5R9HGTRAiq/kWDj+U2uuGUo1u0aD4AwsI9W1VdWmTULOwDSoZ1Y4TkJVa8UpQtJCZxVp5Ua76l3rtCZsc4V0AFmAhDQlPuuon4NlE+qLrB4YhOx98GTivmFB/9pBw4BP+PXNQlVByHTYx9Nzzlr94G9jDxAL9xm97ppIS2HcWbHxujQ28OOp8mKv+Q8x6IhQheMdqoXXZnmpa8iMHLJ5GqOY+Um6SBd/kUIb3LBNpOtndYwIIV8IpPZY6p7LB0oDP5rZUO/GO1+DNs/sPqzpFnvAyLDwytmMsV4fyUhHD+Gtsipf3UgkADgIxZFqBrDqBh9wsPXvn2dLYov5ATkFySMoTYcbmaJ/n3b+7A0I= 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.1-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.1 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 @@ -725,7 +725,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.1/maple_tree-fix-potential-rcu-issue.patch queue-6.1/maple_tree-add-smp_rmb-to-dead-node-detection.patch queue-6.1/maple_tree-add-rcu-lock-checking-to-rcu-callback-functions.patch queue-6.1/maple_tree-fix-handle-of-invalidated-state-in-mas_wr_store_setup.patch queue-6.1/maple_tree-reduce-user-error-potential.patch queue-6.1/maple_tree-fix-mas_prev-and-mas_find-state-handling.patch queue-6.1/maple_tree-remove-gfp_zero-from-kmem_cache_alloc-and-kmem_cache_alloc_bulk.patch queue-6.1/maple_tree-be-more-cautious-about-dead-nodes.patch queue-6.1/mm-enable-maple-tree-rcu-mode-by-default.patch queue-6.1/maple_tree-detect-dead-nodes-in-mas_start.patch queue-6.1/maple_tree-fix-freeing-of-nodes-in-rcu-mode.patch queue-6.1/maple_tree-remove-extra-smp_wmb-from-mas_dead_leaves.patch queue-6.1/maple_tree-refine-ma_state-init-from-mas_start.patch