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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F3C92C531C9 for ; Fri, 24 Jul 2026 10:21:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mfE/8+iwZ8S6lsJKsovOA297WtRq/6z3EhWYSO8IBSA=; b=cmvitW9UNa3BdA+Y/FER7nUGoD u2jPGUntpy/ow4/SePhIEMVFRes5vUxLnAeosIZCLxeLCePosJjC0bY3Jf+eCLkL+BCczLEo2rdMb Qrm0TWD4VUE/M1vfeInR4F5VqfcGkd/PGOp3TE63OALPf1Y4JBKvR1NFe6BPV68lYxwAZKkOcgL+N +CrDmYvuhHh+4e2gNDWI7g/Ih4FZVYUuWRno5fq0e3Ln7FZvOKl+aORdmGNRR43Qx3HbdaXRN+HyJ TWARbJfab/KJWDklqRx1IeoCd0FsSFRAVfOAfpOqH8vebHHWYYgPpnqieUIKtoeUZDlaStWxHWhBU a21Ydu6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnD1Z-0000000G4KX-1SqR; Fri, 24 Jul 2026 10:21:01 +0000 Received: from smtp-out2.suse.de ([195.135.223.131]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wnD1C-0000000G43I-2jZr for linux-arm-kernel@lists.infradead.org; Fri, 24 Jul 2026 10:20:40 +0000 Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 87BAA3EBC; Fri, 24 Jul 2026 10:20:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1784888434; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mfE/8+iwZ8S6lsJKsovOA297WtRq/6z3EhWYSO8IBSA=; b=2XRde9Es1Obd3JUQsYR9MjkLTwhjIiyHNuFAdEOJ9RBq9XN18bsHlLEQ3J0p03kAsBAYnA 6UTwuwaRQzOagFacHFgrT2QAlgi2weAN4Xf3iJES29YoD5BLH0WG78W6M8cBeU6td7O2qi bzaeqHcA+Akxn4qZlZd6+oDTe7ydgSw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1784888434; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mfE/8+iwZ8S6lsJKsovOA297WtRq/6z3EhWYSO8IBSA=; b=nWFZqGyrL7G2Rkn0DahcLSwiyr5XvmDdgAt6JLfipfgUhf8tu7CUZHpTxJ0N3OtXBaYDWK PH8FsXMzNkjgDuCg== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1784888434; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mfE/8+iwZ8S6lsJKsovOA297WtRq/6z3EhWYSO8IBSA=; b=2XRde9Es1Obd3JUQsYR9MjkLTwhjIiyHNuFAdEOJ9RBq9XN18bsHlLEQ3J0p03kAsBAYnA 6UTwuwaRQzOagFacHFgrT2QAlgi2weAN4Xf3iJES29YoD5BLH0WG78W6M8cBeU6td7O2qi bzaeqHcA+Akxn4qZlZd6+oDTe7ydgSw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1784888434; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mfE/8+iwZ8S6lsJKsovOA297WtRq/6z3EhWYSO8IBSA=; b=nWFZqGyrL7G2Rkn0DahcLSwiyr5XvmDdgAt6JLfipfgUhf8tu7CUZHpTxJ0N3OtXBaYDWK PH8FsXMzNkjgDuCg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 06311779BA; Fri, 24 Jul 2026 10:20:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id gJGlOW88Y2oSaQAAD6G6ig (envelope-from ); Fri, 24 Jul 2026 10:20:31 +0000 From: Pedro Falcato To: Andrew Morton , David Hildenbrand Cc: Pedro Falcato , Catalin Marinas , Will Deacon , "James E.J. Bottomley" , Helge Deller , Madhavan Srinivasan , Michael Ellerman , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Matthew Wilcox (Oracle)" , Jan Kara , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Kevin Brodsky , Muhammad Usama Anjum , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Subject: [PATCH 5/5] mm: constify the pte_offset_map_ro_nolock() return value Date: Fri, 24 Jul 2026 11:20:17 +0100 Message-ID: <20260724102017.141532-6-pfalcato@suse.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260724102017.141532-1-pfalcato@suse.de> References: <20260724102017.141532-1-pfalcato@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spamd-Result: default: False [-1.30 / 50.00]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.de:mid,suse.de:email]; RCPT_COUNT_TWELVE(0.00)[33]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; FREEMAIL_CC(0.00)[suse.de,arm.com,kernel.org,HansenPartnership.com,gmx.de,linux.ibm.com,ellerman.id.au,infradead.org,google.com,suse.com,suse.cz,nvidia.com,linux.alibaba.com,redhat.com,linux.dev,lists.infradead.org,vger.kernel.org,lists.ozlabs.org,kvack.org]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; R_RATELIMIT(0.00)[to_ip_from(RLxu57a9hfgn7tttf5jiwuqe5o)]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FREEMAIL_ENVRCPT(0.00)[gmx.de] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260724_032038_990620_187FE655 X-CRM114-Status: GOOD ( 16.45 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Constify the pte_t * retval from pte_offset_map_ro_nolock(), for which it is already pledged that accesses must be read-only. With it, convert the three treewide users to use const pte_t *. khugepaged passes the result right down to fault code (do_swap_page()). This leads to a complicated set of conditions that, in order to be correct, must not install anything into *vmf->pte. This is not trivial to work around in fault code, and as such just trivially cast to non-const pte_t* in the meantime. The other users are far more trivial and the conversion is equally trivially simple. Signed-off-by: Pedro Falcato --- arch/powerpc/mm/pgtable.c | 2 +- include/linux/mm.h | 4 ++-- include/linux/pgtable.h | 2 +- mm/filemap.c | 2 +- mm/khugepaged.c | 2 +- mm/pgtable-generic.c | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index a9be337be3e4..e29db41b6043 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -390,7 +390,7 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr) p4d_t *p4d; pud_t *pud; pmd_t *pmd; - pte_t *pte; + const pte_t *pte; spinlock_t *ptl; if (mm == &init_mm) diff --git a/include/linux/mm.h b/include/linux/mm.h index 87feaa5a2b78..4b768639d31d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3887,8 +3887,8 @@ static inline pte_t *pte_offset_map(pmd_t *pmd, unsigned long addr) pte_t *pte_offset_map_lock(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, spinlock_t **ptlp); -pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd, - unsigned long addr, spinlock_t **ptlp); +const pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd, + unsigned long addr, spinlock_t **ptlp); pte_t *pte_offset_map_rw_nolock(struct mm_struct *mm, pmd_t *pmd, unsigned long addr, pmd_t *pmdvalp, spinlock_t **ptlp); diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index dc418553e57a..dd51e722c535 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -112,7 +112,7 @@ static inline pte_t *__pte_map(pmd_t *pmd, unsigned long address) { return pte_offset_kernel(pmd, address); } -static inline void pte_unmap(pte_t *pte) +static inline void pte_unmap(const pte_t *pte) { rcu_read_unlock(); } diff --git a/mm/filemap.c b/mm/filemap.c index 1dbb4c6f824e..4f0575f13b3a 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3484,7 +3484,7 @@ static vm_fault_t filemap_fault_recheck_pte_none(struct vm_fault *vmf) { struct vm_area_struct *vma = vmf->vma; vm_fault_t ret = 0; - pte_t *ptep; + const pte_t *ptep; /* * We might have COW'ed a pagecache folio and might now have an mlocked diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 27e8f3077e80..b87e23ad094f 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1169,7 +1169,7 @@ static enum scan_result __collapse_huge_page_swapin(struct mm_struct *mm, * Here the ptl is only used to check pte_same() in * do_swap_page(), so readonly version is enough. */ - pte = pte_offset_map_ro_nolock(mm, pmd, addr, &ptl); + pte = (pte_t *) pte_offset_map_ro_nolock(mm, pmd, addr, &ptl); if (!pte) { mmap_read_unlock(mm); result = SCAN_NO_PTE_TABLE; diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c index b91b1a98029c..2cfc6e608ef4 100644 --- a/mm/pgtable-generic.c +++ b/mm/pgtable-generic.c @@ -308,8 +308,8 @@ pte_t *__pte_offset_map(pmd_t *pmd, unsigned long addr, pmd_t *pmdvalp) return NULL; } -pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd, - unsigned long addr, spinlock_t **ptlp) +const pte_t *pte_offset_map_ro_nolock(struct mm_struct *mm, pmd_t *pmd, + unsigned long addr, spinlock_t **ptlp) { pmd_t pmdval; pte_t *pte; -- 2.55.0