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 408F3C7115B for ; Thu, 19 Jun 2025 07:50:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8DBB96B0089; Thu, 19 Jun 2025 03:50:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8B3656B008A; Thu, 19 Jun 2025 03:50:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F0126B008C; Thu, 19 Jun 2025 03:50:56 -0400 (EDT) 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 6E3F26B0089 for ; Thu, 19 Jun 2025 03:50:56 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2C548C03DB for ; Thu, 19 Jun 2025 07:50:56 +0000 (UTC) X-FDA: 83571378912.20.4DBB54E Received: from out-179.mta1.migadu.com (out-179.mta1.migadu.com [95.215.58.179]) by imf03.hostedemail.com (Postfix) with ESMTP id 79A8F2000E for ; Thu, 19 Jun 2025 07:50:54 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=TS6JyfHC; spf=pass (imf03.hostedemail.com: domain of ye.liu@linux.dev designates 95.215.58.179 as permitted sender) smtp.mailfrom=ye.liu@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750319454; 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:references:dkim-signature; bh=JrEolSLr9rS694/buurKuGKr9Kz5LTg/bHMzqLtVbKI=; b=k6mBiIK6ydnokLUTFGJik1KDTN6ODgjMIYLeWk5oZRCM7aTGw1SjAY9E6FLdx20yA12aU6 RmBLkH3NZ+quXNX98OzvHc2M/8HvViLvgJihrXJM8Inq0GIPcco1CjbkkfW6Gd1aZMR2Cs JPYUsuYnNs/6Yz4YUMk2dyv36Ni39qk= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=TS6JyfHC; spf=pass (imf03.hostedemail.com: domain of ye.liu@linux.dev designates 95.215.58.179 as permitted sender) smtp.mailfrom=ye.liu@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750319454; a=rsa-sha256; cv=none; b=FJStDWvNwBWRDOOVYAbn3zTn5ECAOKx2K1kCVue/7vAUkyf6Qspr0r5OF9RsmWGsCXHaxn ZWAkNix8YWwUZvCclRDuSgvbGHRqkYnuCj8wUVLHXQmAJHSawVmU6nrqXqXwfETdOUS2r9 WqBEextugTu5qS13xvkknjz9bVBhuRo= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1750319452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=JrEolSLr9rS694/buurKuGKr9Kz5LTg/bHMzqLtVbKI=; b=TS6JyfHCbzrj7VtKpBz2h6nit/kNbnVqVyvIuoI1fQRh+tgTp5PwxYOHlrHmeAG5oIcEji ZdzSeffaQx5APrc4nlE+ENAMfb3Zj0FVMBbOYQHCHMnvNq8RYbT0EVQ+BF+XGiMB2OEz7e LGpCYjrY/j/+DgfRmoK++1jhr5bwAvQ= From: Ye Liu To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes Cc: Ye Liu , Xu Xin , Chengming Zhou , Rik van Riel , "Liam R. Howlett" , Vlastimil Babka , Harry Yoo , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH] mm/rmap: Add NULL checks for rmap_walk_control callbacks Date: Thu, 19 Jun 2025 15:50:40 +0800 Message-Id: <20250619075040.796047-1-ye.liu@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: 79A8F2000E X-Rspamd-Server: rspam01 X-Stat-Signature: j553odxkxjyqs995zghwyx9exg9topqh X-HE-Tag: 1750319454-958882 X-HE-Meta: U2FsdGVkX18XjNtejxRl2Jfii60jHjjlSZUlw+dbi78F4oBgRDeV3pzEZDB7p5BIAvg6tpnyCpqjcyhpIPftCm8JDXbQ9bi8ZQFqC6mKTi6iesA4xZ3Ah+v+2W7yjGp4OisUn9hsE1WFfekpIzfwgE3NGb9G6JBi27Q/sltc+DVw06a3miFT5aBxLoABddqCE8DRR89kuVrubyU5pzu63Xeb58gw5ImhxY2zjdFiMBgHlF94h0gctn/SmD5jkWjxhz03vsoXqUluNAz/EeUyjCX6OXvr02F51V3y4z54udXgl4R+wcdO1+wXd3Fc5X6An8q/KOFSCf8OX06G9WpLus53rt+zmLs5BbmSfXoAYyoC73+DmHV2oyqn2HlhpvopN3jlnPxRrczCp04cZ8Pnbclqbh+uZNzOPW8akbDcOajtUnZm3APOIiV01+EqXybK23zmLsnFHFrocvTMlyIPf9zKwekQQRrLR8dS5e7fJGxQsLO2oRLSYyt1Fy+4NOps/w6a6UDC4NtRHi99HjQQ11pHsLgbxs0rAIBPocz3djx4GEr1W1Fhp+Wq/r/RNoomUUCAWZDgG1vX+X8OTSzSXaku3zDfCQBIPqyH2iSYedCfH09IKqEyvjxWVdwFF6HwWSKuejQPPlJqfWpflPQdBL9EhoPvzUW0glP9WJthuARlxFgxQ6Q5hqgSgnpMhd4OLV6GL9UwvtBuqVbNYL3Lz2FkIxFp4RTcah29/3JLD+kYc/IUV+jYkAlMVzC7iNmsxefl8H9IOBiJAqgO8kCEZd30sxfu2jSWJspTB35+AdmYWUP4CjWl2wqU7vfEezu/+Put8fJQPIS8fw8YDjIwjUsbHtWmT14aw9Sdkx5TdO/TQU79q5lV38pQybXwm6bf2thQ45jcq/M6zBkL+bRF08LjKsXoq8s1sFh6DzcYsHMGb68g8gKPWbIpxb5S0TsQGZQZgJ8h/cPszVd5qud IOG9hxNV eiiQNVfaTjzZit8O0dvGTq2iPNI2PWoK+WEtq0s708ovg8OZYGmCDcCIql28yvlo8eipnEFEmfIXijpaeTLW1UYB+B7TM2/ekjatkrYDhtST9BrH5oJH4qvf2heqDcxF7/YWzejbqZJeBjQ0IVU/G1YHIEYDlXzyLqkvx5lcSB5TZUoTapnhvan42jY+JTkJUoVuoHo1WnPn1D/Y1HTjrL5hjBPK1MtTVTQLs7PFMjoSIdiLLL1vnajnMkgljdBajZZtY 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: List-Subscribe: List-Unsubscribe: From: Ye Liu Add NULL pointer checks for rmap_one callback in rmap_walk operations to prevent potential NULL pointer dereferences. Also clean up some code by removing redundant comments and caching folio_nr_pages(). Signed-off-by: Ye Liu --- mm/ksm.c | 2 +- mm/rmap.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 18b3690bb69a..22ad069d1860 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3068,7 +3068,7 @@ void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc) if (rwc->invalid_vma && rwc->invalid_vma(vma, rwc->arg)) continue; - if (!rwc->rmap_one(folio, vma, addr, rwc->arg)) { + if (rwc->rmap_one && !rwc->rmap_one(folio, vma, addr, rwc->arg)) { anon_vma_unlock_read(anon_vma); return; } diff --git a/mm/rmap.c b/mm/rmap.c index fb63d9256f09..17d43d104a0d 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1202,8 +1202,7 @@ int mapping_wrprotect_range(struct address_space *mapping, pgoff_t pgoff, if (!mapping) return 0; - __rmap_walk_file(/* folio = */NULL, mapping, pgoff, nr_pages, &rwc, - /* locked = */false); + __rmap_walk_file(NULL, mapping, pgoff, nr_pages, &rwc, false); return state.cleaned; } @@ -2806,6 +2805,7 @@ static void rmap_walk_anon(struct folio *folio, struct anon_vma *anon_vma; pgoff_t pgoff_start, pgoff_end; struct anon_vma_chain *avc; + unsigned long nr_pages; if (locked) { anon_vma = folio_anon_vma(folio); @@ -2817,13 +2817,13 @@ static void rmap_walk_anon(struct folio *folio, if (!anon_vma) return; + nr_pages = folio_nr_pages(folio); pgoff_start = folio_pgoff(folio); - pgoff_end = pgoff_start + folio_nr_pages(folio) - 1; + pgoff_end = pgoff_start + nr_pages - 1; anon_vma_interval_tree_foreach(avc, &anon_vma->rb_root, pgoff_start, pgoff_end) { struct vm_area_struct *vma = avc->vma; - unsigned long address = vma_address(vma, pgoff_start, - folio_nr_pages(folio)); + unsigned long address = vma_address(vma, pgoff_start, nr_pages); VM_BUG_ON_VMA(address == -EFAULT, vma); cond_resched(); @@ -2831,7 +2831,7 @@ static void rmap_walk_anon(struct folio *folio, if (rwc->invalid_vma && rwc->invalid_vma(vma, rwc->arg)) continue; - if (!rwc->rmap_one(folio, vma, address, rwc->arg)) + if (rwc->rmap_one && !rwc->rmap_one(folio, vma, address, rwc->arg)) break; if (rwc->done && rwc->done(folio)) break; @@ -2894,7 +2894,7 @@ static void __rmap_walk_file(struct folio *folio, struct address_space *mapping, if (rwc->invalid_vma && rwc->invalid_vma(vma, rwc->arg)) continue; - if (!rwc->rmap_one(folio, vma, address, rwc->arg)) + if (rwc->rmap_one && !rwc->rmap_one(folio, vma, address, rwc->arg)) goto done; if (rwc->done && rwc->done(folio)) goto done; -- 2.25.1