[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220722160546.1478722-3-Liam.Howlett@oracle.com>
Date: Fri, 22 Jul 2022 16:06:03 +0000
From: Liam Howlett <liam.howlett@...cle.com>
To: "maple-tree@...ts.infradead.org" <maple-tree@...ts.infradead.org>,
"linux-mm@...ck.org" <linux-mm@...ck.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Yu Zhao <yuzhao@...gle.com>
CC: Hugh Dickins <hughd@...gle.com>
Subject: [PATCH Fix 2/2] kernel/fork: Detect mas_store() failure in dup_mmap()
mas_store() should not fail, but protect against potential failures by
checking the maple state for mas_is_err().
Fixes: 57579b57de57 (kernel/fork: use maple tree for dup_mmap() during forking)
Signed-off-by: Liam R. Howlett <Liam.Howlett@...cle.com>
---
kernel/fork.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/kernel/fork.c b/kernel/fork.c
index 2d7ce88da540..dfa2d5d22ed1 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -685,6 +685,8 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
mas.index = tmp->vm_start;
mas.last = tmp->vm_end - 1;
mas_store(&mas, tmp);
+ if (mas_is_err(&mas))
+ goto fail_nomem_mas_store;
mm->map_count++;
if (!(tmp->vm_flags & VM_WIPEONFORK))
@@ -708,6 +710,9 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
fail_uprobe_end:
uprobe_end_dup_mmap();
return retval;
+
+fail_nomem_mas_store:
+ unlink_anon_vmas(tmp);
fail_nomem_anon_vma_fork:
mpol_put(vma_policy(tmp));
fail_nomem_policy:
--
2.35.1
Powered by blists - more mailing lists