From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47DD629AB1D for ; Fri, 27 Mar 2026 13:22:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774617764; cv=none; b=uPkRgMFJcGakWC8LTkg+HkQtOJt9GLB1Y4pE1c41DrVRwvvjSbdECiixRQcJStbunhaYvOoZz7Z1tJaVsLMso9EiQM+zZVwlExbTFGIbjr5vMlQfSfFQRXrBU3U7RUsj/5PxaSprn18N2Ub74WGaK/BQpni9/9zIBd7YZlGIBS4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774617764; c=relaxed/simple; bh=tv/lTBUdqefxHqpzY+3tzMiQfVgyoSc1pxMuer+8knE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=YD5+KhKIXSVLtd9Y86YHJD7pEkUa2EdBn2Y6toA2uxE2cfSzrvysLYye89uFCNgyKnvPFncEqd10Y9I8iwcxLm0x/1LOo1YNpkHMMf9vyGtjYyjaqxNaQqFi1OUNnX+SAYiGatTBnwVeO5epwEd0RzpoyOugkF+GP1F3l/GBQpM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ex/9UeCU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ex/9UeCU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DD0ABC19423; Fri, 27 Mar 2026 13:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1774617763; bh=tv/lTBUdqefxHqpzY+3tzMiQfVgyoSc1pxMuer+8knE=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=Ex/9UeCUI5A4vHqDeaj7WE4aTtoQ44HxUcfQ3tNiith9MHs1L3QiN+Hjv9gjJ24vh noYiJjDkCb4SZZ7Sbz8ivKYX2s3woo4drq4CT8zZJa3zmfBcB5BXnqE+udbUIEgHiT o3zvpDFSkiuJA+N65GiGsx98CCmTjpb8pa2nw734m1b6XZAi4T0qNSQPSGT1vyZf2o qKlMtChFR5OL5qUkxy8Lo9DbUHxZTuOmrxTJ/GVcWxZS/5lWly9ngnM3K/pGUbAAo3 +NR1bbukSNIL6u/NtzoDKuozdVz6cG3DujCx8T6s+w3/5Un4jZc0jo/5bCNYROYQmA 9vRBEabfzWk/Q== Message-ID: <4d2d94c7-68f1-4f9f-93d7-9002c05ba6e3@kernel.org> Date: Fri, 27 Mar 2026 14:22:40 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH mm-hotfixes] mm/mseal: update VMA end correctly on merge Content-Language: en-US To: "Lorenzo Stoakes (Oracle)" , Andrew Morton Cc: "Liam R . Howlett" , Jann Horn , Pedro Falcato , Jeff Xu , David Hildenbrand , linux-mm@kvack.org, linux-kernel@vger.kernel.org, antonius References: <20260327090640.146308-1-ljs@kernel.org> From: "Vlastimil Babka (SUSE)" In-Reply-To: <20260327090640.146308-1-ljs@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 3/27/26 10:06, Lorenzo Stoakes (Oracle) wrote: > Previously we stored the end of the current VMA in curr_end, and then upon > iterating to the next VMA updated curr_start to curr_end to advance to the > next VMA. > > However, this doesn't take into account the fact that a VMA might be > updated due to a merge by vma_modify_flags(), which can result in curr_end > being stale and thus, upon setting curr_start to curr_end, ending up with > an incorrect curr_start on the next iteration. > > Resolve the issue by setting curr_end to vma->vm_end unconditionally to > ensure this value remains updated should this occur. > > Signed-off-by: Lorenzo Stoakes (Oracle) > Fixes: 6c2da14ae1e0 ("mm/mseal: rework mseal apply logic") > Cc: > Reported-by: Antonius > Closes: https://lore.kernel.org/linux-mm/CAK8a0jyHXqBpt8Xe8v9SNDbnRiwz7OthA8SKY=NLRY7smPEP3Q@mail.gmail.com/ Acked-by: Vlastimil Babka (SUSE) Thanks! > --- > mm/mseal.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/mseal.c b/mm/mseal.c > index 316b5e1dec78..2d72a15d8ea1 100644 > --- a/mm/mseal.c > +++ b/mm/mseal.c > @@ -66,7 +66,7 @@ static int mseal_apply(struct mm_struct *mm, > prev = vma; > > for_each_vma_range(vmi, vma, end) { > - const unsigned long curr_end = MIN(vma->vm_end, end); > + unsigned long curr_end = MIN(vma->vm_end, end); > > if (!(vma->vm_flags & VM_SEALED)) { > vm_flags_t vm_flags = vma->vm_flags | VM_SEALED; > @@ -76,6 +76,7 @@ static int mseal_apply(struct mm_struct *mm, > if (IS_ERR(vma)) > return PTR_ERR(vma); > vm_flags_set(vma, VM_SEALED); > + curr_end = vma->vm_end; /* Merge may have updated. */ > } > > prev = vma; > -- > 2.53.0