From: Liam R. Howlett Date: Fri, 22 Jul 2022 15:53:50 +0000 (-0400) Subject: kernel/fork: Detect mas_store() failure in dup_mmap() X-Git-Tag: howlett/maple/20220722_2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=cf6f1850752fa3602302bac2857be889c12fdfcf;p=users%2Fjedix%2Flinux-maple.git 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 --- 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 @@ out: 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: