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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A5B501039893 for ; Fri, 27 Feb 2026 20:09:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12F326B00D2; Fri, 27 Feb 2026 15:09:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0DD066B00D6; Fri, 27 Feb 2026 15:09:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F1E7F6B00D8; Fri, 27 Feb 2026 15:09:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D43746B00D2 for ; Fri, 27 Feb 2026 15:09:27 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id A51D65B8FC for ; Fri, 27 Feb 2026 20:09:27 +0000 (UTC) X-FDA: 84491326374.28.FE54597 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf25.hostedemail.com (Postfix) with ESMTP id EC4D3A000E for ; Fri, 27 Feb 2026 20:09:25 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TykYjpWv; spf=pass (imf25.hostedemail.com: domain of david@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=david@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1772222966; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SKaTaYabvIguXZmWNNd+BNDEApRXksbBfmtUQ8fhMNM=; b=eZr8dG/UXkJnHamTklVvVtF1jGMiEfHCYz49DceHJBHzKZHSqt8rtc/QOjTfSBH2velQKC AayXALPPU/b7xPtzYAJamaktdDk5O50BKIb7XYgCsBd/e5MbswV3/UFplHqfIHzG60iJlN NNoTkMT8srr0sDaXg9rXoLn8ayt3X0M= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TykYjpWv; spf=pass (imf25.hostedemail.com: domain of david@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=david@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1772222966; a=rsa-sha256; cv=none; b=x/rmeVooGshZ6VpUtZdykFSjuXWCp9WgDfkyOSPdtfuVKTPuYqCpBqy26GX+zo2NLduomp CvsZklGhcpvN9JZPikh/PnW+9tTEM4GLpxYSHzuin9ctHZWvb6JpVEWyWkatPW4jPNwjp4 WxX9J18SHldcAXxGyfTxJ86lLCSYV3s= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id AEF0E434E8; Fri, 27 Feb 2026 20:09:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E80D2C19423; Fri, 27 Feb 2026 20:09:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772222964; bh=oTLLv1/LtvCwIvkJbROBPO/znHjTWfNn5494fkK85gk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TykYjpWvgGwljpM6p2COuJBm6vVZY9Djvp9ZNM6zX/Mg+sBmes0wCnbQ4WeSfbmW/ SV+IDNBtumzcZhC3ElSbyAiv475EkpQUkxeCLhsWULdxAHfGnT0H335AmzCjAN+dQj QRAOmuBYMH+Ynj0dVRD7vPT/l9+4APLtjm8nWyekU8kueRKpx8XbFw5ajrTVTYHSCI fPG3LX2/4RfCF7sYKFaOg85sIPFkNtlXfBAxGEQ4tDcYAx7xhGzd19vCY9jvvC0Ulp O7aQ9sT3wfiLxfn9cUcpLrszMNdsrZRZprFMOD9AkXLMBxMByussndPeKhWeTlHo/m zYXuh1oeZiM/A== From: "David Hildenbrand (Arm)" To: linux-kernel@vger.kernel.org Cc: "linux-mm @ kvack . org" , "David Hildenbrand (Arm)" , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato , David Rientjes , Shakeel Butt , "Matthew Wilcox (Oracle)" , Alice Ryhl , Madhavan Srinivasan , Michael Ellerman , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Jarkko Sakkinen , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Greg Kroah-Hartman , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Christian Brauner , Carlos Llamas , Ian Abbott , H Hartley Sweeten , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Simona Vetter , Jason Gunthorpe , Leon Romanovsky , Dimitri Sivanich , Arnd Bergmann , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Peter Zijlstra , Arnaldo Carvalho de Melo , Namhyung Kim , Andy Lutomirski , Vincenzo Frascino , Eric Dumazet , Neal Cardwell , "David S. Miller" , David Ahern , Jakub Kicinski , Paolo Abeni , Miguel Ojeda , linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-sgx@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, bpf@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-fsdevel@vger.kernel.org, netdev@vger.kernel.org, rust-for-linux@vger.kernel.org, x86@kernel.org Subject: [PATCH v1 01/16] mm/madvise: drop range checks in madvise_free_single_vma() Date: Fri, 27 Feb 2026 21:08:32 +0100 Message-ID: <20260227200848.114019-2-david@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260227200848.114019-1-david@kernel.org> References: <20260227200848.114019-1-david@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: 7htyo1ajprce4c6p79r8te6n9cucxmp8 X-Rspamd-Server: rspam09 X-Rspam-User: X-Rspamd-Queue-Id: EC4D3A000E X-HE-Tag: 1772222965-721304 X-HE-Meta: U2FsdGVkX19Pap1b9YIeJzLc3H3HJEBP7NalsqrXVygBNSYzsGpLgNJqD6OXJuN3ZCEGZFeyQXQFjseXkwEJQCNWO+eFUzDogHQnoqCTFnQigl0LYfLtkFmk2IawPFHWc+4qp+/BOK/ehZdtNPJ2grEULJGwZjTbJCNLZxmzcIWx5aP2oMKCbbRKEzVSNJbknzRieaiVGK3FO2PNYVe3j9O60D4zZ2Q0uxK+BDdEsKfAI4NYw532t8TOKnUPlX6Od/3kzEQt7Z1BOKooonxczkx5d7+hZyYQsRvHb/WvUkC4bNRtnh2y7ODAwdwrabEoI/xO/nxhR2o5b4LDSKtGoav2CL9PJLIBfjCswRIC+XJLGTj2DrC2XGZBrxgDmRLroCwM3/0uMJV0LXgRLPqq75EKFiTh2rNmYUyfZWaR6hXjangNRf5vgRJbiPCImGgE5/D2RRKmhV/7mKFX1eQPTeLhmP99ENccxSJ/eJvMGmi8JPCUZ2lKy1Ve3mrhx6Kc057RYMSbPLNCJ1mwzFdWxgU0xddlBCzgcu7B3DVtw0v1wjYAGs0s8djTkS7rEtetayhAiK7jezdXUw3LVUcl7wcYCV2Y27wodbpjnHop3vcBzif3OWLLFmBBYUWssMR269fptLHcFjeCf7cygAqZU6ideBTphSoU9ztlThfjcGLQUG51N6qLPCSmRGFGEbl9pO+FFYzVZtVkZEm3WR6x993AT3ZPre1bOxKZSRcu+MONtMKVErLWi2t19wTN5UCfk4Qe+9I1PTN17xv232JFevkrPAgPEfTBtFQGxqR0ck6ogRjbEAguP951p8oSYg9rHyiGIggxC+tooAiwCG7Tf/4qvzgdmxaSNhDe+pHCI0tlPTZBj38r8d4gr/PGoQmEDoFIB6uMSJU3q8w7I38bx1FJk39/oiZMQuLqRE6PWvP0r4V1M2IHrK0sBqxmmriupLDqxk/lrgsA86oN64X ClxO/gv5 cuqxu130z+JLYRca53mGd98JMvHV3v8UDbwtmkWhjG0tvRSAXwjsRbQGDJ6VlMeVr/7vdZdHJWhl7ARb3/EWukZFLzgGnEYeAap0JaDMEEO5m8Em0DCw+lEdrpeXJ6HZxbIIzF7aFf8Xi2DazQyLIFCS1mYJq9RHymc36iniovMOByFCSCH/0vKe9VWG7UO1IGhuoOPjEf/ecxD6oQiW7/fk2Z4yRAq3gK6TG+pzWiWBqlzKyu61YPaGVU1RnsS4GQhn6C2DfmizWTwjcyBBJ2toNkQ== Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: madvise_vma_behavior()-> madvise_dontneed_free()->madvise_free_single_vma() is only called from madvise_walk_vmas() (a) After try_vma_read_lock() confirmed that the whole range falls into a single VMA (see is_vma_lock_sufficient()). (b) After adjusting the range to the VMA in the loop afterwards. madvise_dontneed_free() might drop the MM lock when handling userfaultfd, but it properly looks up the VMA again to adjust the range. So in madvise_free_single_vma(), the given range should always fall into a single VMA and should also span at least one page. Let's drop the error checks. The code now matches what we do in madvise_dontneed_single_vma(), where we call zap_vma_range_batched() that documents: "The range must fit into one VMA.". Although that function still adjusts that range, we'll change that soon. Signed-off-by: David Hildenbrand (Arm) --- mm/madvise.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/mm/madvise.c b/mm/madvise.c index c0370d9b4e23..efc04334a000 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -799,9 +799,10 @@ static int madvise_free_single_vma(struct madvise_behavior *madv_behavior) { struct mm_struct *mm = madv_behavior->mm; struct vm_area_struct *vma = madv_behavior->vma; - unsigned long start_addr = madv_behavior->range.start; - unsigned long end_addr = madv_behavior->range.end; - struct mmu_notifier_range range; + struct mmu_notifier_range range = { + .start = madv_behavior->range.start, + .end = madv_behavior->range.end, + }; struct mmu_gather *tlb = madv_behavior->tlb; struct mm_walk_ops walk_ops = { .pmd_entry = madvise_free_pte_range, @@ -811,12 +812,6 @@ static int madvise_free_single_vma(struct madvise_behavior *madv_behavior) if (!vma_is_anonymous(vma)) return -EINVAL; - range.start = max(vma->vm_start, start_addr); - if (range.start >= vma->vm_end) - return -EINVAL; - range.end = min(vma->vm_end, end_addr); - if (range.end <= vma->vm_start) - return -EINVAL; mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, mm, range.start, range.end); -- 2.43.0