From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B532530BB82 for ; Mon, 1 Sep 2025 09:19:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718369; cv=none; b=cBIvEmYFJM7I01eraykBU0QgTXwlvEobFiWAzwNEODmkW8uATEf8PHR65ePuyh76NKawkrMiuzcuhB6VRaiUtSYNCAZ5zSKwwem+nMmxAPOXHmaOwWOOYGtF/7SpaxkepmsoiX6zFRAHrZEMuR8hhnPU78VjtwyEgScKg8lcjNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718369; c=relaxed/simple; bh=+9zVED1lHiuNiZ1RPeRxS3Ssm9MpRMNLvSgKjt52v7k=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tAzqEk3RjsNAcfsPfawr+zzErOadYopp0QNpVBgbnx2xpXuOjRjFLrc30z7EgnZsg2K1Fi9j8r1wmbT+4G+37LHrX6Zrol51FSsrAO5EHebF8ExcVpjVf3P84l7gsa/UKFTPospWLlf4hnA7rxTpxB2VhkOWnh8iPFoLV7l2lKY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=anaTr1CN; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="anaTr1CN" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b0411b83aafso213788366b.1 for ; Mon, 01 Sep 2025 02:19:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718366; x=1757323166; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lsR/STrnydl4a6f2Yv7mj4KlfpOG0wbJ52LB7E1pZ7E=; b=anaTr1CN9wCZ5ePMrch/oFngDKxnpI2+DAygB3XZhVHI1kmdu+Jmcgl77x3ZOIgBi4 CkhJm6RIsGmqD5sm2LDeC+j887fN4hAVplU+OMcvFvgKfL+xFFUmAdP8QOXkXvf7OSPv VybgUz9Xc1oqNnzfyA5vuMyXoZk/53KUfKBbWzVJUCTsLDCYOQqgEw3VjVBnl+1rcEN3 6HGM7ny3pol9p4IBUPfbZLv96TySiOhJ6ZQDp4/vkUG8CsTJWmE8vFm83C9nYgHec53a NyH1mqimEN2SBabWMIKD1gUyjrC610ZJrM5ISxGR21cnPdGQ4TYteHUrD3PfrpHwZPg2 uEnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718366; x=1757323166; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lsR/STrnydl4a6f2Yv7mj4KlfpOG0wbJ52LB7E1pZ7E=; b=g3GsO5w2069fwhBrQfx99bZOeFH2d3OxpqwhXig+efOUtSZbJvCiFyxnF6soj5oArb ONbrKRrI6XBInZXbe6rYDHemmyVCeDGXgwPf3B9hA/8n9C0AczlkUf8YFKYTEn3XqnOU eKjUlkNNoraQhl9bJHU3x44GTwg3CBZEgGnnFbVKaXm6iUzuJ9xgJL6+ERRichJbcyx9 PsjX1yJSovFSKF/kLdjE79voPKkitUEha6dRHZU0blWoOHUE8uB+hdEOkcZ+18ykCLZj zLxUW9ric6s5SubXkVD8q17cruzTdMMLPHa3fVpz9783AVWFvoiBiUWBRr+7gbU5qrAc d7wA== X-Forwarded-Encrypted: i=1; AJvYcCVWaveCc5pDNPOEF6dIvAuBFtXjTnYH9lfr/PF32r/W2jo8d0HRP+XUXwmX+m5yfT+/m4K9mWBRnDvzqYo=@vger.kernel.org X-Gm-Message-State: AOJu0Yy71inp4VPW1e6hPqm9h4HIMR+qL8Hz9PDgxKSVkOfmK2NEJu8X 7xMTS3HahdlE3TZMzdCxTSsoviYlr/X1H2/kZHtV93dFLsAAWrt/84XOiwDFM5MicBE= X-Gm-Gg: ASbGncul9t+RiS8p8p3Y0Ii93qR0tgR670FYgv7MUGoAMZP3QUtc0RUGxKEKjv+KVro 0PQ3IxNva5iegqG07Ql2NY5uAXFmTtNYRis5ojUjqezM4AbXoELrTdhA3bQgYlCmgjxxOhCTw/w zCxVn7Ehq/RHy5ItYdbvxrKXYHT8hFFQ47nFpYicImCdE+0SW5rWNmaDWFgNrp/AJXeFgcc8NGd IuwWcGNusotgqvUZl8uBxKNnCSSLEjb/7Ih21+VTObkbNYVHHo/6iYRsCjw14+8XwVtjKuogOWz fCzqbvQQwTZJ/21q6ALGQtOu6myQBcTY6DFbylV93jQuHUi68oVLhWfu/TzhmhtsEI5u1EKj2wM k87aDQ+yOdLeK3VRMYuc0WVBckoVheBO3J4d3lXFBlc7KmiGe9RlnikakfFuvBRt0b+EnYNu29N MWKsKzhIf7F2UCDHSsGvfcnpn9BtHYYNGz X-Google-Smtp-Source: AGHT+IGLx5jJD5g8VFu3vDjbftCHYb2Ijzb40t+FBcgd7shPE2wS/JLAjEdNECBMIdCPyPMz8moKGA== X-Received: by 2002:a17:906:c10b:b0:afe:954b:25b2 with SMTP id a640c23a62f3a-b01d8a26dcbmr694211066b.12.1756718365873; Mon, 01 Sep 2025 02:19:25 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:25 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 01/12] mm/shmem: add `const` to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:04 +0200 Message-ID: <20250901091916.3002082-2-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to vm_area_struct and address_space pointer parameters in shmem functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - vma_is_shmem() - vma_is_anon_shmem() - shmem_mapping() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/mm.h | 8 ++++---- include/linux/shmem_fs.h | 4 ++-- mm/shmem.c | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index cd14298bb958..18deb14cb1f5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -979,11 +979,11 @@ static inline void vma_iter_set(struct vma_iterator *= vmi, unsigned long addr) * The vma_is_shmem is not inline because it is used only by slow * paths in userfault. */ -bool vma_is_shmem(struct vm_area_struct *vma); -bool vma_is_anon_shmem(struct vm_area_struct *vma); +bool vma_is_shmem(const struct vm_area_struct *vma); +bool vma_is_anon_shmem(const struct vm_area_struct *vma); #else -static inline bool vma_is_shmem(struct vm_area_struct *vma) { return false= ; } -static inline bool vma_is_anon_shmem(struct vm_area_struct *vma) { return = false; } +static inline bool vma_is_shmem(const struct vm_area_struct *vma) { return= false; } +static inline bool vma_is_anon_shmem(const struct vm_area_struct *vma) { r= eturn false; } #endif =20 int vma_is_stack_for_current(struct vm_area_struct *vma); diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 6d0f9c599ff7..0e47465ef0fd 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h @@ -99,9 +99,9 @@ extern unsigned long shmem_get_unmapped_area(struct file = *, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); extern int shmem_lock(struct file *file, int lock, struct ucounts *ucounts= ); #ifdef CONFIG_SHMEM -bool shmem_mapping(struct address_space *mapping); +bool shmem_mapping(const struct address_space *mapping); #else -static inline bool shmem_mapping(struct address_space *mapping) +static inline bool shmem_mapping(const struct address_space *mapping) { return false; } diff --git a/mm/shmem.c b/mm/shmem.c index 640fecc42f60..d55bceaa1c80 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -275,18 +275,18 @@ static const struct vm_operations_struct shmem_vm_ops; static const struct vm_operations_struct shmem_anon_vm_ops; static struct file_system_type shmem_fs_type; =20 -bool shmem_mapping(struct address_space *mapping) +bool shmem_mapping(const struct address_space *const mapping) { return mapping->a_ops =3D=3D &shmem_aops; } EXPORT_SYMBOL_GPL(shmem_mapping); =20 -bool vma_is_anon_shmem(struct vm_area_struct *vma) +bool vma_is_anon_shmem(const struct vm_area_struct *const vma) { return vma->vm_ops =3D=3D &shmem_anon_vm_ops; } =20 -bool vma_is_shmem(struct vm_area_struct *vma) +bool vma_is_shmem(const struct vm_area_struct *const vma) { return vma_is_anon_shmem(vma) || vma->vm_ops =3D=3D &shmem_vm_ops; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B503430BF6F for ; Mon, 1 Sep 2025 09:19:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718371; cv=none; b=TgUF3pvgWktYpRbcXkIgqSBzLU9zk+p3xSLpv38fXxhWVkFXGhSpjkmFVazweCd1hrmIsmwQQ5yk16hQnKTeBr0s9XAHAH0P1kACY3u/va4OmJK4XQcw1AEjvNrj0/Os92oqEiRpCj/QtMZzWMLeZEU+zLz+sBeMP+Epnd4g44s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718371; c=relaxed/simple; bh=FhyUK7QsvNq/SF0r5wXC/+v53sPppKo0XIJG59J83m0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qh2qgKTc9o96DOX30rk0nhXNIUhK/7bXL5+056u6mG4TFM9f7J7XGXw3WhtQEZvFi/HqKX/JE9iGoRsaByf55ONFYvLutZRPPyoOhFYSVl0ibGpxsLNrOJ4tCnzoOXG6wTxfzkxqfuCZIFLmesBJQPZiYV6CD3jWI8Wo+/Fy/vM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=foPXI06h; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="foPXI06h" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-aff0775410eso371100266b.0 for ; Mon, 01 Sep 2025 02:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718368; x=1757323168; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=l7WepIwVsrDIqGjged5DTLMeHd34+rtR8uy9Koi3lTw=; b=foPXI06hEx3s9angwkek6CCQGLQArJrnbXNyZrtc5lxlV+FJ3W+DnpY7TZ38NB3qXz vHSxV96Tu09OJU0o6RQwuggNx7g9f8pell4hIeKxlEpJT6QoZiixpHAbHtKtm6sbxHOd HBaLhUV2pXIp+tPV+eTiViaQ7Yhz+sueuCsJ5YHAbT490mfEkGHgfosaN5ctD/GaDotR QovCj5erg0ebNRYLdOxfPxUrfJy3UsarwgRBf9rk/zQjR5n2SgTdWlMJtFhepTd20NDm u0ClVwKSDOFUT69il8k1+95798Ju3Ia5Qd+/1SUtmW0Xb5zxZ/lE4SO3+UctDeb29Y4L gKYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718368; x=1757323168; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l7WepIwVsrDIqGjged5DTLMeHd34+rtR8uy9Koi3lTw=; b=XbRm2Xbc11Mn53WOt5QPyNGevoghLWFl7+Xq5eIcgmdJ8SGceXHMXFD8zicOlxESBn huOpHut3+LbajyJHH5rn6PZfpx2KvarofovmIr81bhKL42zP/5lCGS9zuGa6c6fzxs+S hiDevPuMBRob0eglwl5NBvuadDFIghRRXTbwT0QUpRl0QndZGGStNbVP3AoNQIYVNK7c U/4C+88q9Pf8SzIkir21BoiUF7bNvINMMiMEq0by2+cOjJDWDMAuwoKF6KH+dmKlzii3 WXJjS41/gQqAQctnCfyDUguqXDuLTQ6f5TlUpJVO38fW6VA6GQOpEg0sFMlzVrfp2Jf5 DUEA== X-Forwarded-Encrypted: i=1; AJvYcCV1gcCTr+E18SbQUr8NSCfkD7TOS/O5VhwqAaRL6OfYjYwDD/gZFsznB40/2uu+ArA9PAeem2bNrAiLfwk=@vger.kernel.org X-Gm-Message-State: AOJu0YwI8Ra1Yid5H6YtmmuJTtgnqllUtuMBWO2IqipmM61kbhJU0vtW zxdcWcPQ/POwSdn9veCFswgWUEFZUTX4Jw8ulG+c8xrorN2+RImJbQm6CTXMNt781lU= X-Gm-Gg: ASbGncv6ezo7ywxh0CjmxsaMdnTLcP4s/P7LDjE0kVFfYALv2iH1U7jsVmvzqeh+V5H Fz9jQ3q8491/9Rtrz+yYcQY8Kcv8ZyvUcdjji5ou1PRAUvze+uiXMUJkm2Byt2RwHfhY4FsWkTp 56H6vcrlqgel6iA3md0Vt5fmYfroO7afXjCyktgFuaz0lQtXfigWRvMpPeCvmQRmSOT+2hbMWDZ f5KevGLixltSH4LsAZntLKlJSippEL5IDlzGQB2Dw+5GXqi8t4A4wi/gZJAL+LJ3Y+AuorQswFL hE6pf1iRG4cJwGc0elg3UE1BSxeeqBRgVoNRAy1qp66GoP3l45Wugn9vYsTWPZ87rZhpJdF/IUU qwN6KNgv8W5RtzetsU0QTgox4b4wIPJZpeX53essL718ZzBJPi4Gpsn5IUt1jD98UE3RLUTnNS7 WA/GCjbvja6CYCgdRl54OvVtaRzIRTGANu X-Google-Smtp-Source: AGHT+IHN/TqbysKK0s5Zu0KlpyXlJ7CQoaS7LuJ5q1gjVHxfVF3yXVZtull4SVbEI/dReygUbTQsRw== X-Received: by 2002:a17:907:3d92:b0:afe:ee36:2eb8 with SMTP id a640c23a62f3a-b01081807a8mr707309966b.8.1756718367712; Mon, 01 Sep 2025 02:19:27 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:27 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 02/12] mm/pagemap: add `const` to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:05 +0200 Message-ID: <20250901091916.3002082-3-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to address_space, folio, vm_area_struct, readahead_control, and inode pointer parameters in pagemap.h functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - mapping_empty() - mapping_shrinkable() - mapping_unevictable() - mapping_exiting() - mapping_use_writeback_tags() - mapping_inaccessible() - mapping_writeback_may_deadlock_on_reclaim() - mapping_gfp_mask() - mapping_gfp_constraint() - mapping_min_folio_nrpages() - mapping_min_folio_nrbytes() - mapping_align_index() - mapping_large_folio_support() - filemap_nr_thps() - folio_next_index() - folio_contains() - folio_pgoff() - linear_page_index() - readahead_pos() - readahead_length() - readahead_index() - readahead_count() - readahead_batch_length() - dir_pages() - folio_mkwrite_check_truncate() Constify pagemap related test functions for improved const-correctness. Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/pagemap.h | 57 +++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index a3e16d74792f..1d35f9e1416e 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -140,7 +140,7 @@ static inline int inode_drain_writes(struct inode *inod= e) return filemap_write_and_wait(inode->i_mapping); } =20 -static inline bool mapping_empty(struct address_space *mapping) +static inline bool mapping_empty(const struct address_space *const mapping) { return xa_empty(&mapping->i_pages); } @@ -166,7 +166,7 @@ static inline bool mapping_empty(struct address_space *= mapping) * refcount and the referenced bit, which will be elevated or set in * the process of adding new cache pages to an inode. */ -static inline bool mapping_shrinkable(struct address_space *mapping) +static inline bool mapping_shrinkable(const struct address_space *const ma= pping) { void *head; =20 @@ -267,7 +267,7 @@ static inline void mapping_clear_unevictable(struct add= ress_space *mapping) clear_bit(AS_UNEVICTABLE, &mapping->flags); } =20 -static inline bool mapping_unevictable(struct address_space *mapping) +static inline bool mapping_unevictable(const struct address_space *const m= apping) { return mapping && test_bit(AS_UNEVICTABLE, &mapping->flags); } @@ -277,7 +277,7 @@ static inline void mapping_set_exiting(struct address_s= pace *mapping) set_bit(AS_EXITING, &mapping->flags); } =20 -static inline int mapping_exiting(struct address_space *mapping) +static inline int mapping_exiting(const struct address_space *const mappin= g) { return test_bit(AS_EXITING, &mapping->flags); } @@ -287,7 +287,7 @@ static inline void mapping_set_no_writeback_tags(struct= address_space *mapping) set_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags); } =20 -static inline int mapping_use_writeback_tags(struct address_space *mapping) +static inline int mapping_use_writeback_tags(const struct address_space *c= onst mapping) { return !test_bit(AS_NO_WRITEBACK_TAGS, &mapping->flags); } @@ -333,7 +333,7 @@ static inline void mapping_set_inaccessible(struct addr= ess_space *mapping) set_bit(AS_INACCESSIBLE, &mapping->flags); } =20 -static inline bool mapping_inaccessible(struct address_space *mapping) +static inline bool mapping_inaccessible(const struct address_space *const = mapping) { return test_bit(AS_INACCESSIBLE, &mapping->flags); } @@ -343,18 +343,18 @@ static inline void mapping_set_writeback_may_deadlock= _on_reclaim(struct address_ set_bit(AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM, &mapping->flags); } =20 -static inline bool mapping_writeback_may_deadlock_on_reclaim(struct addres= s_space *mapping) +static inline bool mapping_writeback_may_deadlock_on_reclaim(const struct = address_space *const mapping) { return test_bit(AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM, &mapping->flags); } =20 -static inline gfp_t mapping_gfp_mask(struct address_space * mapping) +static inline gfp_t mapping_gfp_mask(const struct address_space *const map= ping) { return mapping->gfp_mask; } =20 /* Restricts the given gfp_mask to what the mapping allows. */ -static inline gfp_t mapping_gfp_constraint(struct address_space *mapping, +static inline gfp_t mapping_gfp_constraint(const struct address_space *map= ping, gfp_t gfp_mask) { return mapping_gfp_mask(mapping) & gfp_mask; @@ -477,13 +477,13 @@ mapping_min_folio_order(const struct address_space *m= apping) } =20 static inline unsigned long -mapping_min_folio_nrpages(struct address_space *mapping) +mapping_min_folio_nrpages(const struct address_space *const mapping) { return 1UL << mapping_min_folio_order(mapping); } =20 static inline unsigned long -mapping_min_folio_nrbytes(struct address_space *mapping) +mapping_min_folio_nrbytes(const struct address_space *const mapping) { return mapping_min_folio_nrpages(mapping) << PAGE_SHIFT; } @@ -497,7 +497,7 @@ mapping_min_folio_nrbytes(struct address_space *mapping) * new folio to the page cache and need to know what index to give it, * call this function. */ -static inline pgoff_t mapping_align_index(struct address_space *mapping, +static inline pgoff_t mapping_align_index(const struct address_space *cons= t mapping, pgoff_t index) { return round_down(index, mapping_min_folio_nrpages(mapping)); @@ -507,7 +507,7 @@ static inline pgoff_t mapping_align_index(struct addres= s_space *mapping, * Large folio support currently depends on THP. These dependencies are * being worked on but are not yet fixed. */ -static inline bool mapping_large_folio_support(struct address_space *mappi= ng) +static inline bool mapping_large_folio_support(const struct address_space = *mapping) { /* AS_FOLIO_ORDER is only reasonable for pagecache folios */ VM_WARN_ONCE((unsigned long)mapping & FOLIO_MAPPING_ANON, @@ -522,7 +522,7 @@ static inline size_t mapping_max_folio_size(const struc= t address_space *mapping) return PAGE_SIZE << mapping_max_folio_order(mapping); } =20 -static inline int filemap_nr_thps(struct address_space *mapping) +static inline int filemap_nr_thps(const struct address_space *const mappin= g) { #ifdef CONFIG_READ_ONLY_THP_FOR_FS return atomic_read(&mapping->nr_thps); @@ -936,7 +936,7 @@ static inline struct page *grab_cache_page_nowait(struc= t address_space *mapping, * * Return: The index of the folio which follows this folio in the file. */ -static inline pgoff_t folio_next_index(struct folio *folio) +static inline pgoff_t folio_next_index(const struct folio *const folio) { return folio->index + folio_nr_pages(folio); } @@ -965,7 +965,7 @@ static inline struct page *folio_file_page(struct folio= *folio, pgoff_t index) * e.g., shmem did not move this folio to the swap cache. * Return: true or false. */ -static inline bool folio_contains(struct folio *folio, pgoff_t index) +static inline bool folio_contains(const struct folio *const folio, pgoff_t= index) { VM_WARN_ON_ONCE_FOLIO(folio_test_swapcache(folio), folio); return index - folio->index < folio_nr_pages(folio); @@ -1042,13 +1042,13 @@ static inline loff_t page_offset(struct page *page) /* * Get the offset in PAGE_SIZE (even for hugetlb folios). */ -static inline pgoff_t folio_pgoff(struct folio *folio) +static inline pgoff_t folio_pgoff(const struct folio *const folio) { return folio->index; } =20 -static inline pgoff_t linear_page_index(struct vm_area_struct *vma, - unsigned long address) +static inline pgoff_t linear_page_index(const struct vm_area_struct *const= vma, + const unsigned long address) { pgoff_t pgoff; pgoff =3D (address - vma->vm_start) >> PAGE_SHIFT; @@ -1468,7 +1468,7 @@ static inline unsigned int __readahead_batch(struct r= eadahead_control *rac, * readahead_pos - The byte offset into the file of this readahead request. * @rac: The readahead request. */ -static inline loff_t readahead_pos(struct readahead_control *rac) +static inline loff_t readahead_pos(const struct readahead_control *const r= ac) { return (loff_t)rac->_index * PAGE_SIZE; } @@ -1477,7 +1477,7 @@ static inline loff_t readahead_pos(struct readahead_c= ontrol *rac) * readahead_length - The number of bytes in this readahead request. * @rac: The readahead request. */ -static inline size_t readahead_length(struct readahead_control *rac) +static inline size_t readahead_length(const struct readahead_control *cons= t rac) { return rac->_nr_pages * PAGE_SIZE; } @@ -1486,7 +1486,7 @@ static inline size_t readahead_length(struct readahea= d_control *rac) * readahead_index - The index of the first page in this readahead request. * @rac: The readahead request. */ -static inline pgoff_t readahead_index(struct readahead_control *rac) +static inline pgoff_t readahead_index(const struct readahead_control *cons= t rac) { return rac->_index; } @@ -1495,7 +1495,7 @@ static inline pgoff_t readahead_index(struct readahea= d_control *rac) * readahead_count - The number of pages in this readahead request. * @rac: The readahead request. */ -static inline unsigned int readahead_count(struct readahead_control *rac) +static inline unsigned int readahead_count(const struct readahead_control = *const rac) { return rac->_nr_pages; } @@ -1504,12 +1504,12 @@ static inline unsigned int readahead_count(struct r= eadahead_control *rac) * readahead_batch_length - The number of bytes in the current batch. * @rac: The readahead request. */ -static inline size_t readahead_batch_length(struct readahead_control *rac) +static inline size_t readahead_batch_length(const struct readahead_control= *const rac) { return rac->_batch_count * PAGE_SIZE; } =20 -static inline unsigned long dir_pages(struct inode *inode) +static inline unsigned long dir_pages(const struct inode *const inode) { return (unsigned long)(inode->i_size + PAGE_SIZE - 1) >> PAGE_SHIFT; @@ -1523,8 +1523,8 @@ static inline unsigned long dir_pages(struct inode *i= node) * Return: the number of bytes in the folio up to EOF, * or -EFAULT if the folio was truncated. */ -static inline ssize_t folio_mkwrite_check_truncate(struct folio *folio, - struct inode *inode) +static inline ssize_t folio_mkwrite_check_truncate(const struct folio *con= st folio, + const struct inode *const inode) { loff_t size =3D i_size_read(inode); pgoff_t index =3D size >> PAGE_SHIFT; @@ -1555,7 +1555,8 @@ static inline ssize_t folio_mkwrite_check_truncate(st= ruct folio *folio, * Return: The number of filesystem blocks covered by this folio. */ static inline -unsigned int i_blocks_per_folio(struct inode *inode, struct folio *folio) +unsigned int i_blocks_per_folio(const struct inode *const inode, + const struct folio *const folio) { return folio_size(folio) >> inode->i_blkbits; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05C8F30C36D for ; Mon, 1 Sep 2025 09:19:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718373; cv=none; b=jnofH9aKt+Ri4zmXUCL3k+CiZ7c88d5k9IW1RuLKUJgP5OhieNe17FdNBGdBD8vbUnSLza73piT67P+nmZYWyoI4LbxzpMXIhIpXvosODZ8nDwSWHE+RsxZ8DRCaMzFs5X7mAxFF4++VTlF9eAirpMVofNH7w5lfiUEg3JXqeNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718373; c=relaxed/simple; bh=CA31iYHaJYjhA+6MC6gAAULqKffDNHYdwy1DfsmSunE=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ns1FgVmNb5yO/0wDPNO6xpEYfxgxhUTfQoBIc5l5oehPSZm5KdAi2rex0dGxZUqNkc6E+UnzFUej4hGYwvqMueWp6hDQJwwXYorefNsaqi/JrsfnMvg2hYKtpTrn+CLfgOchxB/DhmKlbONg/Lhdm6jVTETjgs/FntcXHKng8wg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=fwaETpNy; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="fwaETpNy" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-afcb7322da8so802417266b.0 for ; Mon, 01 Sep 2025 02:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718370; x=1757323170; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BqkRolEiPUj7RJL2rUljUH40PaguAeYrnxbluGnyi6U=; b=fwaETpNy9ZuzyfL//W+5jOUIUPpukTk8aGq8d7gTKF/oAJ2MDe3RpOmIN7/tzRgxBp 0g77z4CsjbOwrrAgo8vG5AfPpl65o4YuczpaNrpZjPd/oMxz7+AQqr7bKGfvx5fEGS/G sQvG5ZDT9JNTiYOoQQlYGeO59t781P5CZ0mGzWjanwjy0ttFcLon6CWrD6AjR3F+J0zI jWT02axUoZt3Wa+eVo7QcNPpGXyNg8rVyAuSF2LuJ6tlF8HnF5kMbJdY0p5V6pZUnzkb LdAuq2hErU1MBpgT6ZN90paTTGRsZ6dUZCXQSuSikyvC8WEbkCi3z8JXy3s+6obeH/53 U9lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718370; x=1757323170; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BqkRolEiPUj7RJL2rUljUH40PaguAeYrnxbluGnyi6U=; b=Wmf5uu6oIR5BfSh0mAX7K68FbWobMBMSNxOqaDIACD5zDz+pjJiRT1AeX9zN4iJDZ7 g4et48FfxRXY/m0vGseGdu+WHNzgVyKEgYJ0QiJB5ei007uSh4xoz8clibpWMc7r7jPk tnM8BGLMN611JGn74XKSuAJdFR9C9yhKi9qucjEcxrJ8mkO1TmKGfw5HgR2bwloRA9Sr Jb7ID5KlUFydmH1JXE0cRame3A4rufXPbmQ6BHnVeDcRW8CRPhm7EtrDvjeF/LRQ5gt5 XWXXdqgIEsGXzZ+vDzL1vvoDMv6/3rkZsAbWKvZrDO56GTdGzidwCnbBkop3SXxTMXep PbjA== X-Forwarded-Encrypted: i=1; AJvYcCV81N+1tTacO/aPu/HbYkmXkULoN3K2sVUWXszu7mK9x+5Fos6wIaaqhp5W0gYIm0C75K7iqKtUzYGxUwM=@vger.kernel.org X-Gm-Message-State: AOJu0YwqnBoD2LOqg7UCPi6biTkYeb1h2fXEFDgApuQdUgDhXBo664+0 UeFCLohp3vODaB8Buw1C6dVNABLE2wXwanRoe8oG9emoQcy+QBlIhUVKALX76b751KY= X-Gm-Gg: ASbGnctSIJ6Anh/CAiyhPdeMp+a6dBkniejZmY94qnuk3NJN4altjAY8AhYSLTH42vR ugYqKwDYjwEWGVcDlW4le3hNL3+dFR19NsmoZtZR6zT8qVxZlikvDxnmZ9Ptuh143lIfCAexCBm 1udE8qUXIVQRK1RbiKTyCYb/cn3kDLhFU5n3iBIQlws60QCxx/YhQs0TTQlcf+fLU7P8Qd1nzlf Eh0f6q/MaxiSm5P0d2RG3jun26Jm0vRCqP3GUDGwim/Fh5zlrjSk88nLrNY3lOcb80974gLrF1p 9bQH5NnwmYrilT1NJT5M9vybxI/H+siWatgVWfC73JwvMFNffFdv134drQP15FFJW5gkGfU/o9B qJFQIGKOOZZ+Cr9mooScLwNshoA4tk9KSKAE5xb4eWIHXo2/TxcjsGeqV4v+4Vbd7ckrWDygB7K ay7y+1FEi/NBtNI2sGinbm/4HbPZHulE2n X-Google-Smtp-Source: AGHT+IEsmw8mc9FR+7YcDO3uHr7qQk2IFaFGO9lGAZi9GzeSVQNoy7S8eVMSnXBGPw6W32MtA4kZ+g== X-Received: by 2002:a17:907:2684:b0:aff:13f5:1f0 with SMTP id a640c23a62f3a-b01d8a26e65mr628763966b.7.1756718369507; Mon, 01 Sep 2025 02:19:29 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:29 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 03/12] mm/mmzone: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:06 +0200 Message-ID: <20250901091916.3002082-4-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to zone, zoneref, and mem_section pointer parameters in mmzone.h functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - zone_managed_pages() - zone_is_initialized() - zone_is_empty() - zone_intersects() - zone_is_zone_device() - managed_zone() - populated_zone() - zone_to_nid() - is_highmem() - zonelist_zone_idx() - zonelist_node_idx() - present_section() - valid_section() - early_section() - online_section() - online_device_section() - preinited_vmemmap_section() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/mmzone.h | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index f3272ef5131b..9a25fb1ade82 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -1104,7 +1104,7 @@ static inline unsigned long promo_wmark_pages(const s= truct zone *z) return wmark_pages(z, WMARK_PROMO); } =20 -static inline unsigned long zone_managed_pages(struct zone *zone) +static inline unsigned long zone_managed_pages(const struct zone *const zo= ne) { return (unsigned long)atomic_long_read(&zone->managed_pages); } @@ -1128,12 +1128,12 @@ static inline bool zone_spans_pfn(const struct zone= *zone, unsigned long pfn) return zone->zone_start_pfn <=3D pfn && pfn < zone_end_pfn(zone); } =20 -static inline bool zone_is_initialized(struct zone *zone) +static inline bool zone_is_initialized(const struct zone *const zone) { return zone->initialized; } =20 -static inline bool zone_is_empty(struct zone *zone) +static inline bool zone_is_empty(const struct zone *const zone) { return zone->spanned_pages =3D=3D 0; } @@ -1273,7 +1273,7 @@ static inline bool folio_is_zone_movable(const struct= folio *folio) * Return true if [start_pfn, start_pfn + nr_pages) range has a non-empty * intersection with the given zone */ -static inline bool zone_intersects(struct zone *zone, +static inline bool zone_intersects(const struct zone *const zone, unsigned long start_pfn, unsigned long nr_pages) { if (zone_is_empty(zone)) @@ -1581,12 +1581,12 @@ static inline int local_memory_node(int node_id) { = return node_id; }; #define zone_idx(zone) ((zone) - (zone)->zone_pgdat->node_zones) =20 #ifdef CONFIG_ZONE_DEVICE -static inline bool zone_is_zone_device(struct zone *zone) +static inline bool zone_is_zone_device(const struct zone *const zone) { return zone_idx(zone) =3D=3D ZONE_DEVICE; } #else -static inline bool zone_is_zone_device(struct zone *zone) +static inline bool zone_is_zone_device(const struct zone *const zone) { return false; } @@ -1598,19 +1598,19 @@ static inline bool zone_is_zone_device(struct zone = *zone) * populated_zone(). If the whole zone is reserved then we can easily * end up with populated_zone() && !managed_zone(). */ -static inline bool managed_zone(struct zone *zone) +static inline bool managed_zone(const struct zone *const zone) { return zone_managed_pages(zone); } =20 /* Returns true if a zone has memory */ -static inline bool populated_zone(struct zone *zone) +static inline bool populated_zone(const struct zone *const zone) { return zone->present_pages; } =20 #ifdef CONFIG_NUMA -static inline int zone_to_nid(struct zone *zone) +static inline int zone_to_nid(const struct zone *const zone) { return zone->node; } @@ -1620,7 +1620,7 @@ static inline void zone_set_nid(struct zone *zone, in= t nid) zone->node =3D nid; } #else -static inline int zone_to_nid(struct zone *zone) +static inline int zone_to_nid(const struct zone *zone) { return 0; } @@ -1647,7 +1647,7 @@ static inline int is_highmem_idx(enum zone_type idx) * @zone: pointer to struct zone variable * Return: 1 for a highmem zone, 0 otherwise */ -static inline int is_highmem(struct zone *zone) +static inline int is_highmem(const struct zone *const zone) { return is_highmem_idx(zone_idx(zone)); } @@ -1713,12 +1713,12 @@ static inline struct zone *zonelist_zone(struct zon= eref *zoneref) return zoneref->zone; } =20 -static inline int zonelist_zone_idx(struct zoneref *zoneref) +static inline int zonelist_zone_idx(const struct zoneref *const zoneref) { return zoneref->zone_idx; } =20 -static inline int zonelist_node_idx(struct zoneref *zoneref) +static inline int zonelist_node_idx(const struct zoneref *const zoneref) { return zone_to_nid(zoneref->zone); } @@ -2021,7 +2021,7 @@ static inline struct page *__section_mem_map_addr(str= uct mem_section *section) return (struct page *)map; } =20 -static inline int present_section(struct mem_section *section) +static inline int present_section(const struct mem_section *const section) { return (section && (section->section_mem_map & SECTION_MARKED_PRESENT)); } @@ -2031,12 +2031,12 @@ static inline int present_section_nr(unsigned long = nr) return present_section(__nr_to_section(nr)); } =20 -static inline int valid_section(struct mem_section *section) +static inline int valid_section(const struct mem_section *const section) { return (section && (section->section_mem_map & SECTION_HAS_MEM_MAP)); } =20 -static inline int early_section(struct mem_section *section) +static inline int early_section(const struct mem_section *const section) { return (section && (section->section_mem_map & SECTION_IS_EARLY)); } @@ -2046,27 +2046,27 @@ static inline int valid_section_nr(unsigned long nr) return valid_section(__nr_to_section(nr)); } =20 -static inline int online_section(struct mem_section *section) +static inline int online_section(const struct mem_section *const section) { return (section && (section->section_mem_map & SECTION_IS_ONLINE)); } =20 #ifdef CONFIG_ZONE_DEVICE -static inline int online_device_section(struct mem_section *section) +static inline int online_device_section(const struct mem_section *const se= ction) { unsigned long flags =3D SECTION_IS_ONLINE | SECTION_TAINT_ZONE_DEVICE; =20 return section && ((section->section_mem_map & flags) =3D=3D flags); } #else -static inline int online_device_section(struct mem_section *section) +static inline int online_device_section(const struct mem_section *const se= ction) { return 0; } #endif =20 #ifdef CONFIG_SPARSEMEM_VMEMMAP_PREINIT -static inline int preinited_vmemmap_section(struct mem_section *section) +static inline int preinited_vmemmap_section(const struct mem_section *cons= t section) { return (section && (section->section_mem_map & SECTION_IS_VMEMMAP_PREINIT)); @@ -2076,7 +2076,7 @@ void sparse_vmemmap_init_nid_early(int nid); void sparse_vmemmap_init_nid_late(int nid); =20 #else -static inline int preinited_vmemmap_section(struct mem_section *section) +static inline int preinited_vmemmap_section(const struct mem_section *cons= t section) { return 0; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2336A30DD0B for ; Mon, 1 Sep 2025 09:19:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718375; cv=none; b=KUoRCpnAlmU0Yshq1hPhSS5nOpjKEGvQNrDvSxk4bCwOomR6pJb52v2eK0tX6/dvBEEm34TWQKiadx61tboQu2sg/GYmk/iZ6xj6J1JL/3HkGib0pL/7x6CW7sZsFgfWnxdwElbXxmhpTPtCmEzbEWRITiWWi1WHiPTyWzUUm3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718375; c=relaxed/simple; bh=fqMfYftVrFkOy3wbJRO7r0XLlbG/lU+7XLovauzZWxo=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dDbEOHwUn3tlvXFW6OjGTCKNi/NYsZJd7uJrrtoZErZGfNSWeEvjrBB2Qi3sUEogRKtSeX3WLkAqG1vUOwXzml+BEKr5+UsvvnjG/h78aSlTaFwozM/MwbojjY8WF+yARBl0cQRm7DY8tbYZo6NOCWD8eZbkw3dL20KxIUOmXH0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=Dl7V1wER; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="Dl7V1wER" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-afede1b3d05so694639866b.2 for ; Mon, 01 Sep 2025 02:19:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718371; x=1757323171; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8H3eprdm8oiBq+0anIaTODIO0eIcUyIWc/5jJ7tDkes=; b=Dl7V1wERFzMleKB/mcdbkOLSfivKh/0qTbbLHtW40hL12fF/PHC6FBC8qSvS+8F/AH 5823j13P3EjHQyBXddCElPlgiJAomY75h48tIKrF7Aiqehm9JKkfycrMNH8tpoI8wWhE 1kV99t9hXTKOXn52zT9HzwBCAp5xD3jTg0cA4HwqoPkGOq+MUNBgc4RNYD67veOaFXv5 yMZaKCwx/18ovZe7OG6CWpIBvjMi9DTLZhuoxCYTOkVPoG3Z2oVQNvrAnl7JC2RXUv/e CqNkBD/dICQCC+BKKzxrAq0FOGHnwGkJC+NZt0j7I/UEBoL31gvVNsHRUc9JZHTuF0S0 ksig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718371; x=1757323171; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8H3eprdm8oiBq+0anIaTODIO0eIcUyIWc/5jJ7tDkes=; b=C0reoX9U9og6JFJmKUr0I4EMq8rNyiI2sv1fpnThwpaZiK7sVE6bA5UZMXIiqzv0vm hdQbHw80ZfcUzgTwYrWf/aFNTAaJxHhBGEvhpZWAFCEu71zkHz0cajWzZGTj+ky7n3CD YBi3jPx0oQ9A/xoqIyMD4Lo/3PyMqnitA9w38yti3J90+s+JSEJu0ykeV1wL72c2KumL KH6SI+n9LXJbDUt2QjHxf1DvSh22Y/9Ws5PDVxy8VEhxyvIfwi8TyYYDXWQ1GVH5JIzQ 7lze5CgCNBvpWDc/M8S3hhKNp//b6+uE9fIW/Ys0nAD9KqtmZGrUM7AnSmV3TJqsPL6Z WclQ== X-Forwarded-Encrypted: i=1; AJvYcCWXSdaTc7M7pmWIoghealKDBXdGVBG/J50fqOfkIL5moFsIURTkNb792XGDIyNNRTTaAOVSKI3hTZN3DiI=@vger.kernel.org X-Gm-Message-State: AOJu0YzY8MJ7TEcazV7/U7rGzz0o6XE+zL7+jBgEy9yZ2gjIW8PU82BV eC00bXtTJSI69/4AEspwK+kav+ASs/4isU22GIHB8c9Mk+QFvdCWSo+qN4HH791hHyM= X-Gm-Gg: ASbGncuKO9kwolW+dMXZJ73ic/+BZNAym0wgb27Y4+EYgaMnKHL59O3nNvy44/tkBxB AAND9NuF+1CCcA8i/fLOkcgQV7xVkZHmc/L5AUG6J8IE4GtHNB5oh/cF1PSh1pxUtWiS/1uofyH 5rKKEou5yWOxd02dpD0hqP8zf/N6Xs9L1o9Wx8ltjhi/NXBu1jqQMddV1JquE05Ji2MeqEGOZFo L8TGrzWscVKumnHe789/v5XNMiBjP9FEvX9wV48Wyyy4Pho8DtKgONaStjRuPX6kUWXkq7xR2pe sJ6cPkFrnjqzrg+yh5zif4/vWyjHDiMW7ej13uppY8K2yNPAPvELNRxMsQtOnF+Ucr5PAKAD+Om wJpVj9YjmNTFnM1wv4CMXVFv5ZEtzo+6l+gO9Tgu5gtqNoTbv18rlIaXPnt/jIrqF45J2wcBDZP DOGWy0EyhIczlt14pLmTWn7jCSZH+f0vGw X-Google-Smtp-Source: AGHT+IF3CGqBNxa77EXUE/Gi7n0PBGLpiMmjL4vqume2Hy8S1ALFuVUh9cDg4qepPIlJtHhtd6svhA== X-Received: by 2002:a17:907:7ea7:b0:b00:5399:f5c0 with SMTP id a640c23a62f3a-b01f20bfff5mr728590366b.62.1756718371341; Mon, 01 Sep 2025 02:19:31 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:31 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 04/12] fs: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:07 +0200 Message-ID: <20250901091916.3002082-5-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to address_space pointer parameters in filesystem-related functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - mapping_tagged() - mapping_mapped() - mapping_writably_mapped() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/fs.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 3b9f54446db0..8dc46337467d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -537,7 +537,8 @@ struct address_space { /* * Returns true if any of the pages in the mapping are marked with the tag. */ -static inline bool mapping_tagged(struct address_space *mapping, xa_mark_t= tag) +static inline bool mapping_tagged(const struct address_space *const mappin= g, + const xa_mark_t tag) { return xa_marked(&mapping->i_pages, tag); } @@ -585,7 +586,7 @@ static inline void i_mmap_assert_write_locked(struct ad= dress_space *mapping) /* * Might pages of this file be mapped into userspace? */ -static inline int mapping_mapped(struct address_space *mapping) +static inline int mapping_mapped(const struct address_space *const mapping) { return !RB_EMPTY_ROOT(&mapping->i_mmap.rb_root); } @@ -599,7 +600,7 @@ static inline int mapping_mapped(struct address_space *= mapping) * If i_mmap_writable is negative, no new writable mappings are allowed. Y= ou * can only deny writable mappings, if none exists right now. */ -static inline int mapping_writably_mapped(struct address_space *mapping) +static inline int mapping_writably_mapped(const struct address_space *cons= t mapping) { return atomic_read(&mapping->i_mmap_writable) > 0; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 077D330BB94 for ; Mon, 1 Sep 2025 09:19:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718377; cv=none; b=izq9FrxGJq2cICTSx/8EIbsbMZ59YQIJLRkUGN17xRuwvzEaPgov8ENJG3jf8KliDZUUCRGLoAa6dl86mZXM8ADCeUokSNzm0aZG+PCl1/bjL9vTY8qN9oIwUeupg1lnM7j5NMIYYAHNffKif65hFDdlY6MikLMWp8RBfNXEyV0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718377; c=relaxed/simple; bh=bekKkiG6OK0h/uU3LqpFmD7Nmq5naPE4b3ceLP62f4g=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MisHyd6AjqDccBN1S4SBB2afvHssDFXosJc6efj0QKMLXnifOos+l3RF+uII+TAU/fna8cQyttExGXmv4qW7sNNNWmNnd7pliZ8Qnc3q0g1UEN1YUwlYqXQiYVCzjKSfPHnccWY+0Hxq3FSdVKeRLbD/C05xSyXRBaHfEnlusug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=eeV44nzn; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="eeV44nzn" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b04163fe08dso202578066b.3 for ; Mon, 01 Sep 2025 02:19:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718373; x=1757323173; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NQi1DlLk53At+sb7Dxdlwb1wfYNq5fMfR6Ecet/hRlk=; b=eeV44nznuHFtUeH4qROWiS9PpVPkUe3tBP74MkqyuCxBcAL01l0Dx804DyyXlukHiQ /W/Gex0HDmir4I1Tb1EOLf9HC+CGo8yCXh+aYhx2VMaiH852A4MlMgHrtE9VpWtmDz7A U64+syKDI1K7Qb8NTyx4SDNw+BqMAJcmB5SEZ47ifiwwu37XwAIFvASfmh56p5Fy2ph0 ylqYzIfvynaVsqG4foLqfn+YHma+oMJCzmBgugyP/gD0ZNnnrmz1dl1cFr1rLXehjIjR aMojLABbJ28ViI/tVEpMLrt/kao3inha3cM867DWl0LxHVFZqYRCKWu/tOPjDosl291r 0lGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718373; x=1757323173; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NQi1DlLk53At+sb7Dxdlwb1wfYNq5fMfR6Ecet/hRlk=; b=tXAHDtLv9DP9boDsXQeSTd+I6VobsRC+QR+4A4wGW9CP2I3tqUAx9t1AoQIqaWhPy0 ervYgs5LXof7K8h/gxTErgPjrwTbesTSYlMb8XiABn7LaSNIhhXIYriL0pyscarp3Rwl HwQQQ3HOKyrZMhHhUP6Gdy/ML7g/RA8Gv0l340YfDyuI1nsCM+PqpVhZ9ePAX6un2qB8 SggDOV7qKi6FJ6J+n67Z6N7wfsmN259mAHVocHC4/EV6CVU8EtCAAnaz1lhUfNxBdsqG s4rZR9ARL5GxXnaHBCFqxInqFPHcTJJv9amNQ3apX7ZHopmytRhznirCSS8U7hqtgpcA T/hw== X-Forwarded-Encrypted: i=1; AJvYcCV+fHmOlfp3N5P8x4JguDcPj4fvAPQMCfO7H+ATYRqURxyAI0r7J9b3qnPmCG03a6qK+Du53o2/vDPQI0w=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0M4PuUbIoM4NwMa3aXhWCoYmXr41NvoNXsIW9vilZNsOLTaws /agDAdjOrYJbxxM6dVo2VwM9iTutfBJ1yu2kwd/wTKkulD+LHnL/Me7Dt/VZqOqBzT4= X-Gm-Gg: ASbGncvxC/mYHgv6SLwzFwGcWH27Ssyg0iBtXxRcQbrgkBbFm2HN11wROyfbYJwZYRN KB8WJNVlZWnm7+ub4Oi6Si9vzmhT2AEBvq7lOrYUCkZeMCW0dVnzlx6OIMeMDn/Tp8ruzR7fH4a 9Rg+9vmkPPjlqH4HOToZFxffrKxcUDmiqjiTai7CYgCKq1EyOeMb4aj04Z5rLOQYKcH1wS8Q9k3 QEE0PUn269F+/Of7hCdVq+79UGG2a47wC5OPeCe4VqkWCgaDnljpNjkoZ3WLkOXVRO+cdZcoNiI 1XaixWbIObvN5z2IV1rcndi6IvUx4bKTvDdceOeUTNGfGA6+JhzkMj0gHytfznO5/q+2f9pQS9J SntUlujXtTDnQGEe4Ers3kic5gH6l8NPWAJicEN2wYJGXQsQML1sIrkBc5S9W8xXdnuEGxTT7cG nujB3U+OlbpNfCQXCQ7/dFMWI80BlptDsH X-Google-Smtp-Source: AGHT+IH5BJhRk96TYnQheCz4kMoEb798UIqHjGpro1uj3IPOuzj2UHqou7p2evmbnRgTw9WnBmZqkw== X-Received: by 2002:a17:907:72c8:b0:b04:39af:bee7 with SMTP id a640c23a62f3a-b0439afd503mr119373166b.26.1756718373122; Mon, 01 Sep 2025 02:19:33 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:32 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 05/12] mm/oom_kill: add const to pointer parameter for improved const-correctness Date: Mon, 1 Sep 2025 11:19:08 +0200 Message-ID: <20250901091916.3002082-6-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to task_struct and mm_struct pointer parameters in the OOM killer code that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - process_shares_mm() Signed-off-by: Max Kellermann --- include/linux/mm.h | 2 +- mm/oom_kill.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 18deb14cb1f5..f70c6b4d5f80 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3840,7 +3840,7 @@ static inline int in_gate_area(struct mm_struct *mm, = unsigned long addr) } #endif /* __HAVE_ARCH_GATE_AREA */ =20 -extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm); +bool process_shares_mm(const struct task_struct *p, const struct mm_struct= *mm); =20 void drop_slab(void); =20 diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 17650f0b516e..2620b32a8eba 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -490,7 +490,8 @@ static bool oom_killer_disabled __read_mostly; * task's threads: if one of those is using this mm then this task was also * using it. */ -bool process_shares_mm(struct task_struct *p, struct mm_struct *mm) +bool process_shares_mm(const struct task_struct *const p, + const struct mm_struct *const mm) { struct task_struct *t; =20 --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C833230E822 for ; Mon, 1 Sep 2025 09:19:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718380; cv=none; b=rXHwYcNoUDal9TjG+y7BUP4TKV+8FrxrnxWfLmwU4phRKp1aHAvI2owgmfoTu31TOkCUBZFelIg5tn1u8QKpPwdGbUN1xJ7IQLl0kneJT3xUK0WCiqvsTkcfV0kv6FQNuabdcrEHhnWGcvstdtaI2v5poFhg70Brw8SAI5nZBLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718380; c=relaxed/simple; bh=TfvBp8NaXvn+VfxQh9MP9xDTHhgA71LSeNxAeqrwpZI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VF3ENDLY59nG9sOCkDx8PPD5n4dYiXY0wkbc3sJRTsbuJrbdQUvHwSdsqyNkTM6NG1CI60iHYTJgqy0RoXmO4CWrHWbzShWYfKmCHBwq8yBPJLOib+nfGhXNJHaB40ccWYLc3uMyGda6UYUrJT7tDoFZUtdzF+yfjfkdTfOmiV0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=V1oS9kVW; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="V1oS9kVW" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b0418f6fc27so147083066b.3 for ; Mon, 01 Sep 2025 02:19:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718375; x=1757323175; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=IbwvQejYab/rePViSXLSZNeM/TCyXeV95uglwFlMcys=; b=V1oS9kVWlNMM+fTF+KaNHdoniy/e+376JDtPezoLf/v1KAARaqFE+SdEnImBVPA+Uj yDxGhqDHQP+I/S7gy+CdtDnJHCtbmNziBiarkIbs74DVg3CEpmYGWZk+MjcVXHxMqKrC ZtuQZ4XbUkQ/56rt+lYLeXibI6gPJ1DlsZgoEQA091PQkOUXBgYHmmMofi5fubkZYlRl YWhJwvzUUUB41tgXeUwHHtj53piLFdVpOhbwoe3WSgh+Bgr7M9KhAJKUEMwl3UHTwz0a ORVRl1Pvw2NWybh41TCTvvrGmim064+BXjawh3pf8v1bTqImHMyfMQ4W/4Qcrw4vCsbc wz/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718375; x=1757323175; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IbwvQejYab/rePViSXLSZNeM/TCyXeV95uglwFlMcys=; b=m2qaxQsXAxJPWq9NhW/i6qTjgXb1Wd9UfDGnA0WSym9ncLG9IvwwtkE5Qi35MCSWIW Xbzs0+gTdRqQj04iozjAldF73gzylO+ohQyV6wPDivwORlwJRvHyFknjvE0H84p6gqn2 5CLokVuLLldWw6lt9bS0KMm8Y3BWWj+s7V0/fiDW2aGFVG75ZWLwo2C8VAmLslKY9D9a WuyNmAZ2w4aDbKUm3ES6DBkKgg+0LSVeDDI3xgi5jE9GF9LzemUuBggM5GGsOX8CAxte GiFkwHP186pAH11vQIRiWbVLo5GkCK8eEd13PmDVxfI4wm3ugJoJCY4x70xUspyTNAzS nVCg== X-Forwarded-Encrypted: i=1; AJvYcCU37WUYlRxwWmAkrRg+BdnZ8mXj6vXcMgIJYJdfDhUlsppyPZFR7Na7D+Fs4ew0RdaU9upH7bgaZwZ4qik=@vger.kernel.org X-Gm-Message-State: AOJu0YxHx2FhkgHiCITgaMPJ4CGGRqRSvR+VuUZw8laaSZFzopLlYD9Z lWnb1wCxR3yuK7L277gM5mb+GNGW/zNWJuEjXrfUAGM/B8PmBuheCRB4JY3D7pxyGXQ= X-Gm-Gg: ASbGncv7Y4vQ/ZVOl61z1i9mAobJUmq48saZ612cdoODLNJ/FTtvkYkI6gkakpLdly6 FhCMSorp55DUXe1+CKnM4p+jXjFGhk11DLdgtlcT6toVK9zphrvnXRSM/x2L/saCrSmftGyTwVn YdmI24uMSm1cAyFsdvI3bnj+vrAuro82IvBxNf7H5W29Jy43eRfIlA6nq93ECwNrboEeb8D8wGP /y3KgKPvI3YN+ND9LGTRnNGz8tiHOD7MIXFRiU13KpeviXkENrkgbT6N6LTSC1T3kGxQD1++WTq g32D1jNREDwcLB9+ZTD5ZfaA5+mg1iySODx/c6S79cTPs1HMKJUa2IYG3E33y4dJDn5fPHuhnL8 AnAH7PF7YoUmK7keti+w7TDlM1m7n52n266yqSeTI3fiCHTFxpQIuYuDwKm94qCS4tvJIefzvAn vZIPfZ0AAJQFWGy0M6m+6LApbQvd5+/sEo X-Google-Smtp-Source: AGHT+IFjLUezk0MNPBdl2gvK25UHEhY1rnJIkox6nR/OlA7eUuvIfWjMQ4n5LH61nexh9wBub/G+rQ== X-Received: by 2002:a17:907:86aa:b0:afe:b5fa:2adc with SMTP id a640c23a62f3a-b01d8c7d928mr753689766b.24.1756718374952; Mon, 01 Sep 2025 02:19:34 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:34 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 06/12] mm/util, s390: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:09 +0200 Message-ID: <20250901091916.3002082-7-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to rlimit, vm_area_struct, mm_struct, and folio pointer parameters in mm/util.c and s390 arch code that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - mmap_is_legacy() (both mm/util.c and s390) - vma_is_stack_for_current() - __vm_enough_memory() - folio_mapping() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- arch/s390/mm/mmap.c | 2 +- include/linux/mm.h | 6 +++--- include/linux/pagemap.h | 2 +- mm/util.c | 11 ++++++----- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 547104ccc22a..c0f619fb9ab3 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c @@ -27,7 +27,7 @@ static unsigned long stack_maxrandom_size(void) return STACK_RND_MASK << PAGE_SHIFT; } =20 -static inline int mmap_is_legacy(struct rlimit *rlim_stack) +static inline int mmap_is_legacy(const struct rlimit *const rlim_stack) { if (current->personality & ADDR_COMPAT_LAYOUT) return 1; diff --git a/include/linux/mm.h b/include/linux/mm.h index f70c6b4d5f80..23864c3519d6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -986,7 +986,7 @@ static inline bool vma_is_shmem(const struct vm_area_st= ruct *vma) { return false static inline bool vma_is_anon_shmem(const struct vm_area_struct *vma) { r= eturn false; } #endif =20 -int vma_is_stack_for_current(struct vm_area_struct *vma); +int vma_is_stack_for_current(const struct vm_area_struct *vma); =20 /* flush_tlb_range() takes a vma, not a mm, and can care about flags */ #define TLB_FLUSH_VMA(mm,flags) { .vm_mm =3D (mm), .vm_flags =3D (flags) } @@ -2585,7 +2585,7 @@ void folio_add_pin(struct folio *folio); =20 int account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc); int __account_locked_vm(struct mm_struct *mm, unsigned long pages, bool in= c, - struct task_struct *task, bool bypass_rlim); + const struct task_struct *task, bool bypass_rlim); =20 struct kvec; struct page *get_dump_page(unsigned long addr, int *locked); @@ -3348,7 +3348,7 @@ void anon_vma_interval_tree_verify(struct anon_vma_ch= ain *node); avc; avc =3D anon_vma_interval_tree_iter_next(avc, start, last)) =20 /* mmap.c */ -extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sy= s_admin); +extern int __vm_enough_memory(const struct mm_struct *mm, long pages, int = cap_sys_admin); extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *); extern void exit_mmap(struct mm_struct *); bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct vm_area_stru= ct *vma, diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 1d35f9e1416e..968b58a97236 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -551,7 +551,7 @@ static inline void filemap_nr_thps_dec(struct address_s= pace *mapping) #endif } =20 -struct address_space *folio_mapping(struct folio *); +struct address_space *folio_mapping(const struct folio *folio); =20 /** * folio_flush_mapping - Find the file mapping this folio belongs to. diff --git a/mm/util.c b/mm/util.c index d235b74f7aff..f5a35efba7bf 100644 --- a/mm/util.c +++ b/mm/util.c @@ -315,7 +315,7 @@ void *memdup_user_nul(const void __user *src, size_t le= n) EXPORT_SYMBOL(memdup_user_nul); =20 /* Check if the vma is being used as a stack by this task */ -int vma_is_stack_for_current(struct vm_area_struct *vma) +int vma_is_stack_for_current(const struct vm_area_struct *const vma) { struct task_struct * __maybe_unused t =3D current; =20 @@ -410,7 +410,7 @@ unsigned long arch_mmap_rnd(void) return rnd << PAGE_SHIFT; } =20 -static int mmap_is_legacy(struct rlimit *rlim_stack) +static int mmap_is_legacy(const struct rlimit *const rlim_stack) { if (current->personality & ADDR_COMPAT_LAYOUT) return 1; @@ -504,7 +504,7 @@ EXPORT_SYMBOL_IF_KUNIT(arch_pick_mmap_layout); * * -ENOMEM if RLIMIT_MEMLOCK would be exceeded. */ int __account_locked_vm(struct mm_struct *mm, unsigned long pages, bool in= c, - struct task_struct *task, bool bypass_rlim) + const struct task_struct *const task, const bool bypass_rlim) { unsigned long locked_vm, limit; int ret =3D 0; @@ -688,7 +688,7 @@ struct anon_vma *folio_anon_vma(const struct folio *fol= io) * You can call this for folios which aren't in the swap cache or page * cache and it will return NULL. */ -struct address_space *folio_mapping(struct folio *folio) +struct address_space *folio_mapping(const struct folio *const folio) { struct address_space *mapping; =20 @@ -926,7 +926,8 @@ EXPORT_SYMBOL_GPL(vm_memory_committed); * Note this is a helper function intended to be used by LSMs which * wish to use this logic. */ -int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin) +int __vm_enough_memory(const struct mm_struct *const mm, + const long pages, const int cap_sys_admin) { long allowed; unsigned long bytes_failed; --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B64C530F7F2 for ; Mon, 1 Sep 2025 09:19:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718380; cv=none; b=MFFIc5Dv/TZciiiM5TJ0A74Mjr5SZ5XP4+5vBkI7hf9N3Dh5iGLrmhHaT8f95gu7ZD7FAVqTPzNh8H80L3R6Ug52/u/xtE99hYmR31ZAFpFL8qQ8ZL8gvhPyUJMSLEA0ILX9+2FmAvUxXDb6aBT9mA0wI8IrM0ZFyCh4HmYdIzk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718380; c=relaxed/simple; bh=XjuAxYKBI3IkXJfvQ3kH8dgkzun3QXNzWiHOIferAsU=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KnZAcquRx1xAGyfxsrQqLorj0gO4fs9rCNnk7BYx6iJmYXsOYu318bw94gvvfQCDpGrf6cr63hEZElIqR3rIly1Kkxo2T2HeBq639LKoOeEu1Og8HyY6KE4ofiCGbbiCvSP15O+cqQLw7J1PcNV+KO9znYqLDJJrxG9LX8EO878= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=DXEQX+bY; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="DXEQX+bY" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b03fa5c5a89so214550666b.2 for ; Mon, 01 Sep 2025 02:19:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718377; x=1757323177; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=K3Upj2m2g1j8fphq8NY5txcaBLQgQOVfeQ4k3TdopfU=; b=DXEQX+bYXq70Y1f5UkdcIks7JtRa0eSzATZtvDlSFczs0bR/6gCc+iha9hYpBv0ou/ DXtUscRboTKPE3UCnkjZVHlVGx5L+U4UIzZf5jdPFRBcRgNYr96+JFDtcG1L1+1msW3f GfbRMvobUrjslmll54nCCGegclrrk7XCDPRf4fQ1Fpj7glinQMqK9ML8YPwwvBJ27XIN 6FVMPrptovnDEZaNGEubw1typaLX9/REsDD3L8Ygwwb2YgVjfz/wz/K1fhIRGk9K0iRH eRnK1iz4C7sEhvPt68/W1yPZ0Q5SCQ14h3GbbTsbXPX8BkT+V0Lqe1FNMh/UgEgDtaCa HbBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718377; x=1757323177; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K3Upj2m2g1j8fphq8NY5txcaBLQgQOVfeQ4k3TdopfU=; b=CDmiz6EJ9xWZQWzLU0gW2L/IuNVNe1Jzbv4ieIX7Ms9S2k0Vgj9Rg7ZUdthPOUSHlB TuaGVxF1a9aPPYOV306+yEvPl45IJRnmQ2X7EmgX1icOlNUmjS7AEjuD/rhtnFo4yR2L /vyY3/Cx8Yo2ykQTFQSTYiG+xw/5HFYzTxDg4KXecSYKi+eMnUD6c2Cl6N4wOjspa/pT 4RU8vgMW3tdv4fYpp67uzQxocT3c9OreDKV4g433/hz6hffRQFLViZFjUXSbv5sBd6On Vc+OZ0BU63j3+TXo1KOVcz4zbY8cNMajv78YJZ6UGnvQ1RygIEBRWmJbyO7E+r/Tyn44 UbQg== X-Forwarded-Encrypted: i=1; AJvYcCVt0beAvqGEvVWrrdXsvLpxIzrfxcZwiYEH1PI46NeP6D7SxPA/V/1xO5mYgZv65pTxK6R/l9FvOaoVKo0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8p59tFC1XdKXiXt1SFvqg/qiIpu97fQh9QNQgmaR3WCdXz8Mx 6/yVGWLyErxZ70iiLJ6n5r5dRvOv5d4UKQWNjcM7nwuCfaVhNKKvNu4KtU4h9yaDtB0= X-Gm-Gg: ASbGnctRTyMZcXs7aK2F3Ct1pEWBfxBhYQORthHBVUdpB0/tcSH5Buow7AU4ZM+Krc0 ecvpIlogzcITQmzMka/G3s9o7uQ2qetjf5wxvgu/So8ZTb2piRmdGbmLpQEJ5Wt7W8P+NodJEx/ o+612wOxKT8boUbBPMwETVXBkGc9Gn1OAebZJciwFkRVShsL+JWDwk++suWQC5hWy+CjMB6HUrq 1jD3ozxl2WpQf1h2NusFEa1f6dNZTwj2FbWrbOZyvFi6peAP3HJrsGsNp9ocuxtc6x+5aNuFHik HUyv/qSwExvtzelXCzsD0XkbS8lklMVDeqPtR6kKgPsQyiAlFXB995DCNnRKWyTeV2XLMBpJpEJ 1zJ+bvJFtmu64O4oYlErGwfljcBaCKBrZOuY4fk7COJebtUzbBzqqfrNwT+oVHgPEysCCMs1mZp 7S8pB6jwMi7bNebBUkx9hrlOI25EFUQamd X-Google-Smtp-Source: AGHT+IHU03tJneIRXPXjJBcv8U2Bz02uUMfdpAyBKwgR6+o6K1xVYVpx/SIyHdw8wkNyrhH8/CTQOg== X-Received: by 2002:a17:906:9f8e:b0:afe:c6a0:d116 with SMTP id a640c23a62f3a-b01d8a6b6ffmr681548166b.18.1756718376821; Mon, 01 Sep 2025 02:19:36 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:36 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 07/12] parisc: add `const` to mmap_upper_limit() parameter Date: Mon, 1 Sep 2025 11:19:10 +0200 Message-ID: <20250901091916.3002082-8-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifier to the rlimit pointer parameter in parisc's mmap_upper_limit() function that does not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - mmap_upper_limit() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- arch/parisc/include/asm/processor.h | 2 +- arch/parisc/kernel/sys_parisc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/= processor.h index 4c14bde39aac..dd0b5e199559 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h @@ -48,7 +48,7 @@ #ifndef __ASSEMBLER__ =20 struct rlimit; -unsigned long mmap_upper_limit(struct rlimit *rlim_stack); +unsigned long mmap_upper_limit(const struct rlimit *rlim_stack); unsigned long calc_max_stack_size(unsigned long stack_max); =20 /* diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_paris= c.c index f852fe274abe..c2bbaef7e6b7 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c @@ -77,7 +77,7 @@ unsigned long calc_max_stack_size(unsigned long stack_max) * indicating that "current" should be used instead of a passed-in * value from the exec bprm as done with arch_pick_mmap_layout(). */ -unsigned long mmap_upper_limit(struct rlimit *rlim_stack) +unsigned long mmap_upper_limit(const struct rlimit *const rlim_stack) { unsigned long stack_base; =20 --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70520310625 for ; Mon, 1 Sep 2025 09:19:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718382; cv=none; b=D/HHjMjb3krp/vzK6CpM88XFXBznz0VZ0Kbu4tXRD9Iel+8qddB/SLHGxBYmjLd+9Lukfu35w3Trt8Me7ygDwF6sFNwp3FDB2lPJG+KEhGiuGE5hYYjkXlGUrhdr2M6uHAhsCPJUcDEpPDkl2hJ8B5HypdvzVQ5NnX6WZhv4/V0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718382; c=relaxed/simple; bh=uXMLbFhyoXEiykxIiSBUl0vvIPZ/h/Sian5jKI4U6Xs=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t1p0YbL431Z1uqsDPNCjFkPMFrw+M40qh9rYRmHHIVgQLA7IpQfv5OomfxjH3dadAM2I5z1oEGnBsq4KaoE+Di/vIuFeZL3+llK0ZFtXNICaT9EHiHsF6UzhyKISc0q7Ocfvtj/uHBLfcK3S7f/ViWXmbvDAg6I3gHLBQF9mrdc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=bvXILkrN; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="bvXILkrN" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b0225483ca0so280119166b.2 for ; Mon, 01 Sep 2025 02:19:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718379; x=1757323179; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VyTvV8Ns7WO4gxFocxj6W6Ayk33Z4Ny3qHSpu0QqE7M=; b=bvXILkrNKJ9CqNHp3B7XaALGsBblAN9/vjfvqocNVxbtIcy81D3BPM7FnO69o8l8jE qPtQLvLE4cGqVwgm9v88Ejamhwsdv3g/uvMUrqzBA2yIKLdubjX5Qd3RGyuEO9k1cr6k ln8as/3xuj36e9ljmuXGsX468kNq7dpmq2NaWM+wE0SQrrjb18c4zA3OhGVsO9wBAMii JEXb/UDeR1Nl7opyFaezEot3ygshVJNjXdBDEXYOMUXEhCuQ4VCKj3M/PVFS5dytP09Y CGv48oMT9TXvAnFkyF+lZtfaOz6zQ7A4YZXmHEi9By6Xvh/FkCby79vLCMjF7D+XcOaA nsxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718379; x=1757323179; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VyTvV8Ns7WO4gxFocxj6W6Ayk33Z4Ny3qHSpu0QqE7M=; b=gLoJBPNMuyaLdLjwRv5ywlr/j6rea52uw+wsqHOaddbdbDuD7p4x/NzVKmMvQ5hjBt zJulvh7bT8p2RQ91Jvec7+qmfTOceoBYmRQwAepq5WSJnwmyDg6uPX47fNyUr5i7rdG8 C06YJJspI/+vjc1kgYiC4A12xixgGB6k83ifCA3SmMD4IVdS8GfK9PjjA/2hMiEx5Ame MNVNXY6jY1VAGWK8x5usxnCqGUm/n9qDjyOaQ09Ar/eVQvM9zXwRE4I+UELMRu+qqFOQ V1c5ffmUMpO8B7LDyUswG9MheCjC6WdNG6/O61cR4Rw/oUtvQIl9tS2/75bWGfthIKJ0 v6bw== X-Forwarded-Encrypted: i=1; AJvYcCUGbAKwnBk8988QyrH5IWWM2sDTKvL8CFTkLrRUa8vLAArUxFxd5DFETsvHvqaAXxXndXDIpcfHNoWYEfQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwA/6JPM86yrTlXjCmq1KIkZanOUCrJGZ9aizp3o8tcu9k4JJ1D jI73ogCSm9TEAXiR38Jnl3qfOQDCGR1fiqiQkYV7+ytcJz0EjjuTqCaasPePtyiF1QU= X-Gm-Gg: ASbGncthxnmIFR6U1hlNm+2I8mbm3rVgxXDY3pctUoyxx+fQEaMTVZk2LYy29YsDKms pHhXjOEFrHRz86iH0sEnbqqC766Kxe7nUQy0RH2xmmQ2Ef03g3gB1sAfvE2HdnzBsAiyfFgiQyA +gZBaKh3m9+dDRSbd4okBEUaHb+4U533ZWS7OmPPz7S/u6BMHnWgBIcgBjstu9wlHyIKdHzLi/t FdsKxWJFqRQYt+Wa5goSZXnePeZwxljOKgyy7bc1DMxZ2Ye1AIhCzzasfViKNbRu21/1oS7H2EY ExCa1iMs2eQGt7SVNeXt1JAdw88KYgnrgh5it19GZXsUuKXfF9D9B46Rqx3mJ53CM7AwSn8zc+1 P4rHP4+ZM8+SI9bmhWhebwNpj8BbMlVCZyGV8/T5Nb7Sn7WW/+JfTfOQWId+4KuNWQ+tZ4NxMAw z3MWJGEV2aEqzsFHJGR+Iuw4yRybCcBsvO X-Google-Smtp-Source: AGHT+IFURNncMT6SvBoURvT042bjNg1LI6qShCkJRT6YVDiOMF2e2u0BBNq2L9LyHNh03wQZAbf6oA== X-Received: by 2002:a17:907:3f10:b0:af6:2f1d:a73f with SMTP id a640c23a62f3a-b01d976e782mr721360666b.53.1756718378728; Mon, 01 Sep 2025 02:19:38 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:38 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 08/12] mm/util, s390, sparc, x86: add const to arch_pick_mmap_layout() parameter Date: Mon, 1 Sep 2025 11:19:11 +0200 Message-ID: <20250901091916.3002082-9-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to mm_struct and rlimit pointer parameters in arch_pick_mmap_layout() across multiple architectures, improving type safety and enabling compiler optimizations. Functions improved: - arch_pick_mmap_layout() (s390, sparc, x86, and generic mm/util.c) - mmap_base() (x86) Signed-off-by: Max Kellermann --- arch/s390/mm/mmap.c | 5 +++-- arch/sparc/kernel/sys_sparc_64.c | 3 ++- arch/x86/mm/mmap.c | 7 ++++--- include/linux/sched/mm.h | 4 ++-- mm/util.c | 9 ++++++--- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index c0f619fb9ab3..a47c7133d82a 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c @@ -47,7 +47,7 @@ static unsigned long mmap_base_legacy(unsigned long rnd) } =20 static inline unsigned long mmap_base(unsigned long rnd, - struct rlimit *rlim_stack) + const struct rlimit *const rlim_stack) { unsigned long gap =3D rlim_stack->rlim_cur; unsigned long pad =3D stack_maxrandom_size() + stack_guard_gap; @@ -169,7 +169,8 @@ unsigned long arch_get_unmapped_area_topdown(struct fil= e *filp, unsigned long ad * This function, called very early during the creation of a new * process VM image, sets up which VM layout function to use: */ -void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack) +void arch_pick_mmap_layout(struct mm_struct *const mm, + const struct rlimit *const rlim_stack) { unsigned long random_factor =3D 0UL; =20 diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc= _64.c index 785e9909340f..1c243bb461b2 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c @@ -294,7 +294,8 @@ static unsigned long mmap_rnd(void) return rnd << PAGE_SHIFT; } =20 -void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack) +void arch_pick_mmap_layout(struct mm_struct *const mm, + const struct rlimit *const rlim_stack) { unsigned long random_factor =3D mmap_rnd(); unsigned long gap; diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c index 708f85dc9380..13bde4ba2f24 100644 --- a/arch/x86/mm/mmap.c +++ b/arch/x86/mm/mmap.c @@ -80,7 +80,7 @@ unsigned long arch_mmap_rnd(void) } =20 static unsigned long mmap_base(unsigned long rnd, unsigned long task_size, - struct rlimit *rlim_stack) + const struct rlimit *const rlim_stack) { unsigned long gap =3D rlim_stack->rlim_cur; unsigned long pad =3D stack_maxrandom_size(task_size) + stack_guard_gap; @@ -110,7 +110,7 @@ static unsigned long mmap_legacy_base(unsigned long rnd, */ static void arch_pick_mmap_base(unsigned long *base, unsigned long *legacy= _base, unsigned long random_factor, unsigned long task_size, - struct rlimit *rlim_stack) + const struct rlimit *const rlim_stack) { *legacy_base =3D mmap_legacy_base(random_factor, task_size); if (mmap_is_legacy()) @@ -119,7 +119,8 @@ static void arch_pick_mmap_base(unsigned long *base, un= signed long *legacy_base, *base =3D mmap_base(random_factor, task_size, rlim_stack); } =20 -void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack) +void arch_pick_mmap_layout(struct mm_struct *const mm, + const struct rlimit *const rlim_stack) { if (mmap_is_legacy()) mm_flags_clear(MMF_TOPDOWN, mm); diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h index 2201da0afecc..0232d983b715 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -178,7 +178,7 @@ static inline void mm_update_next_owner(struct mm_struc= t *mm) #endif =20 extern void arch_pick_mmap_layout(struct mm_struct *mm, - struct rlimit *rlim_stack); + const struct rlimit *rlim_stack); =20 unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, @@ -211,7 +211,7 @@ generic_get_unmapped_area_topdown(struct file *filp, un= signed long addr, unsigned long flags, vm_flags_t vm_flags); #else static inline void arch_pick_mmap_layout(struct mm_struct *mm, - struct rlimit *rlim_stack) {} + const struct rlimit *rlim_stack) {} #endif =20 static inline bool in_vfork(struct task_struct *tsk) diff --git a/mm/util.c b/mm/util.c index f5a35efba7bf..24f08217cd95 100644 --- a/mm/util.c +++ b/mm/util.c @@ -431,7 +431,8 @@ static int mmap_is_legacy(const struct rlimit *const rl= im_stack) #define MIN_GAP (SZ_128M) #define MAX_GAP (STACK_TOP / 6 * 5) =20 -static unsigned long mmap_base(unsigned long rnd, struct rlimit *rlim_stac= k) +static unsigned long mmap_base(const unsigned long rnd, + const struct rlimit *const rlim_stack) { #ifdef CONFIG_STACK_GROWSUP /* @@ -462,7 +463,8 @@ static unsigned long mmap_base(unsigned long rnd, struc= t rlimit *rlim_stack) #endif } =20 -void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack) +void arch_pick_mmap_layout(struct mm_struct *const mm, + const struct rlimit *const rlim_stack) { unsigned long random_factor =3D 0UL; =20 @@ -478,7 +480,8 @@ void arch_pick_mmap_layout(struct mm_struct *mm, struct= rlimit *rlim_stack) } } #elif defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT) -void arch_pick_mmap_layout(struct mm_struct *mm, struct rlimit *rlim_stack) +void arch_pick_mmap_layout(struct mm_struct *const mm, + const struct rlimit *const rlim_stack) { mm->mmap_base =3D TASK_UNMAPPED_BASE; mm_flags_clear(MMF_TOPDOWN, mm); --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51D30311966 for ; Mon, 1 Sep 2025 09:19:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718384; cv=none; b=V23n3KUePTJYZeiAdeCE08bedVguXOlaqI+SE78mgYJs5RbBaPkGmtolHCHBssYsw5rkitNmagCQY6Efnt3465Vw1WQICMYx0D46r/kpsiKqcNe/mJs9m25PtVdzXHJwH9pVoWoecj5XhqOWhKyRW/H1xRj3tKoBM3r400Junx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718384; c=relaxed/simple; bh=xjKHLumFg3ou+aDa6yrrKcxvq//jCLCBP9h3TsB+vxw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EQNqOcRHMAz+VDQxtu/bHjWjk2VF9rDY4UFWXMuJvk0IlZ0tcGtDLB/TcPkjkyAA7njx/43vVA7GzgLOlNpsPL6wdcFtXqDsLseRekzHLSm6aFy+KMm8t6ufH7PBlrK+8+sHoTQJOd4P0doa0IlefGuMypCGO6RizKMgMpCnCy0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=N0KT0Dfj; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="N0KT0Dfj" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b042cc3962aso90516466b.0 for ; Mon, 01 Sep 2025 02:19:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718381; x=1757323181; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=75MLdbHz+6QcCmBzq5cWAq79ueP+J+aGEFpDLtijxG4=; b=N0KT0Dfjacc+60fZMQqo08IbLs/A0cNyu1wwLfFD4zPk7SzeQWoQ6CCHRawj+hEPog dk8srdjc5xxXMZ1E40ymoctubzoVQnrrMRbJK8s4V/uXvjBFbiQmyN4Rie34c4lifvjQ HW/wcST3o/W230yd8MbTeip9EDfTLT9vTEO9oPlwmOOYEiPfhAO/GFMeSHY/rK9gFT6L ttSlJhMjuZ/YxICuQtheNjehLeZa+pUPMRPcwI/L4klKrDPtDAbXK5TCe3cSzivCge87 MDFE+AqvfGpVuziLjxDM11gFagI9WNFMJN6DdmU6wnNstjgmbUv3iJJBNjSEBHMkIzs4 N30Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718381; x=1757323181; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=75MLdbHz+6QcCmBzq5cWAq79ueP+J+aGEFpDLtijxG4=; b=gaiZDOPFK0uXOEz3HxLOBEJu2sTauVmuhkHTGm+7XKBklpeUWBeCxuWPjsnfbUj2+D 9+cTohkFpAjbfwAaOA6UCeT81gWP6Pn4z89GhslpQvrAoYv2HUbL2J9rLro1tQ5BUlnV LJ0BgAZ+yBi9pxUPnqCPuITAdm2QmsmohsKUSykyEfFRxZzfDP5ti2u0oHw5mT6HQ0H4 oF2j7V1cQnFN/0ML7WruGfgVt0DSVACVvOpWskOGrvlnMvGpn1lxAgMCm+ulKqzZMGqL HvAb9DOeI4dXAvCZrF+fX4s8L2Qmj53s+/0+Xc38G8c574kPxa4YpfR/azSuiCgEFo2B BIXA== X-Forwarded-Encrypted: i=1; AJvYcCW1pEkhg8uRAq8UYbtJh8MiJbAtvktM5QorP/fBUYrPsKydCJ6NCFpQ1V4Kv0rp/MgIApfpGXQkXV+10QE=@vger.kernel.org X-Gm-Message-State: AOJu0YzikXm62mHx75VbGsl2hRyyEX7jEwiytY/dTwPhX3cRY1fv3G3r g3niIIr8CEZfJZmH0n/FrWxzVwdM14pmlmwmzhLQOAxm3GFTKHRLiJaSxZHeGcqXIzE= X-Gm-Gg: ASbGncsUBF2hxnTO/z1/M0X3v6P5skPw6+H9/g7V1ggHJEgjWnBAENacSDeWorutz6V xMymu3P+AckmULAfqRPwbJntg/ks2aCBnBHFicGsuuowhE8+b0BUTY3LX3GS9dhDsEe/PvcFuYW 6U5kpe4xn34B6UsJmxVs8fGMVFukBGoEyw3Zr8VqfJ5hW23sB2wmm6+KLQrHnewJ4PPniw1Kg2P YuTarL2GHei8wDXoB+AEmv5FxUvu3Rlk4Y/YRc6f2/snCCyJvIe8YEDWzfm5MDhUhD5PyCUa+Fv HqKrf5nYEor9EDS3y04MG9uaO2M3/wdx/3stl6SpAnF1di0p2L/+JV49IEvhX70unR6coN7J1oj T0UyWoAiEK6r8CaKaJm1lrC07Ko1O4hrUrGNxBgd133Bh8LgQjvX9pxYnnEMoZkba5tTo/ZCG7v EGkRkI1Jyss48yYxSomt2uiEY2NC8b6Y9+ X-Google-Smtp-Source: AGHT+IE9e4KQZ2t/2q7PJOIOamK0vKr4Bi6Eegeqy/erHFPooxkrsYfz9WOXXJNB6N/KC23RU22uVw== X-Received: by 2002:a17:907:3d42:b0:afe:b92b:28d2 with SMTP id a640c23a62f3a-b01d9772e0dmr678214366b.51.1756718380546; Mon, 01 Sep 2025 02:19:40 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:40 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 09/12] mm/mm_types: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:12 +0200 Message-ID: <20250901091916.3002082-10-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to ptdesc and folio pointer parameters in mm_types.h functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - ptdesc_pmd_pts_count() - folio_get_private() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/mm_types.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index d934a3a5b443..46e27ee14bcf 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -632,7 +632,7 @@ static inline void ptdesc_pmd_pts_dec(struct ptdesc *pt= desc) atomic_dec(&ptdesc->pt_share_count); } =20 -static inline int ptdesc_pmd_pts_count(struct ptdesc *ptdesc) +static inline int ptdesc_pmd_pts_count(const struct ptdesc *const ptdesc) { return atomic_read(&ptdesc->pt_share_count); } @@ -660,7 +660,7 @@ static inline void set_page_private(struct page *page, = unsigned long private) page->private =3D private; } =20 -static inline void *folio_get_private(struct folio *folio) +static inline void *folio_get_private(const struct folio *const folio) { return folio->private; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 526CE3126B2 for ; Mon, 1 Sep 2025 09:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718386; cv=none; b=kRRfYxK/PD1pEAhyhz8fRHw0vhUoa1MHMCQNawJG2xVPtA5lvOPryfD/NBojfDznaik/+H5TY0F0wyVzVQQlSEpmVOrG8T/yGKdz9Mpe+X/OCtOm8l151kJup8yqUXgwt9uiWkRpQLQ/Xl++PRtle6WTqxN0a6B2Y9Vio+u3ecg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718386; c=relaxed/simple; bh=1IUQHBYBdu3W5xrcejp3dDaBM+7cropS3oh55p/sPZg=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EMp9sq+TwiHHyfUSPTxVToNmhinokaxvKeD6q4gi+9aegJkZNNIjX3FAtVfXbr8LqWCKbf4O0T/4Bg5S/FbuRDOlPhymDsmo92RwpVor8UNxQRvrjLO+rtfnz71SS20UwM3i4H8aGbeTau5ZRiMRU8vhLskJvaSxgXQpjPSerdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=HywVqZ0w; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="HywVqZ0w" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b02c719a117so109069366b.1 for ; Mon, 01 Sep 2025 02:19:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718383; x=1757323183; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g27oviGyH1E7poP48wwMPEGWPzCs6iGckjbF7ofuUGI=; b=HywVqZ0wlI0dma42d3Q/1PzBcqeSTDx4NPjXV8zI2I8wdSysW7iLPQGiaickzncWM4 9Flc61NJGV+Ia9YH5UfCPnKbp4LD7omnhdyAp2oCwH2MWvoReB7R5gS5O6z0MnSjvxKg BRn+zvWDeQrvmtcZRO7g9L4s8afHfh5RioCMYfO6ZNQtzXU77NbF+G4pmcZq8IjQXUO4 TEAP8kmyiCAtL7CTQVzW18h88q+maDU0K5BUw9yme4LkYy2LAbTvt8yYUE6jWzhcqWxK hwuCKthvhqqA1Rni1P/DDaAlyqdTciBLPDlGr0FT3I+yXbBIIiZXqBUsZcL5qzqStQPL TMeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718383; x=1757323183; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g27oviGyH1E7poP48wwMPEGWPzCs6iGckjbF7ofuUGI=; b=pfGimF5nrRSBznlvFb91v+aKmaa8aFWc4nBcSC0JUm9tNN7rqUkzEx13XuAH464xjv fKeM5NVa8s++Wc8DaTpvP8H7s+6EaUrzIXjXO1BO0Q4StcF+CXBSiIafJL4R1mUifeC4 NAVNsmCkwC1eUCiO7DcuvCgIo8JkrvWhdCxJTS5CUGS2y5T6q+VLVjgNrgxOGYARK4+F Z6QIDdC/ti9sJOLUad/kTQ0l3wC/CuxeHqfXv2GIedSF2CfpeBJZ4A1Wvoua0krIBROI A7bJWfzHvUGIz1WmuNVO4MbezEyYvfMqp5Kw7YpgvqbRAa8ck9nA0m+EWIBmMqFuyK/p N1HQ== X-Forwarded-Encrypted: i=1; AJvYcCWft6E3RfrJYujZNt0FsGWWT91X3+P+dR/DwOv/yLooNnYDwARJ90bfsSEUYfYMN4qnYOQF0Wmpb/Whtmk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8ic6hf+PLbjyd1kW14jnkZA9qM75DCRHicjkz0yXOUr8wtsRc tivIr+FOVf5AwBEFOVk2bImsdVbMFyssOUobQgTwG8Ah8JA5se8PBlKsZNPDpwqFlNU= X-Gm-Gg: ASbGncvtmz1K1icGeLWnDBrJV2mJq+eqxsez+0FU90QcGykkVVBJby0rCzVk87FU94U MDb+K1ev0sdPblbmyMmcoGWfThoULecSx2eHNIOcvX6nHSMNcvQLGkosBDJMM6XYFxQqWZwitoe y5uumaSJzMc6oaNbeTuDyCZwMQdFV/aisHoy6aZIedV+OdJNwkzJWMkXL4LnB89WVtKQSFowZ82 WogtvsZJY8ZikHkONFsshTIK6lmVwuD+c7AEggAeqYWXiTVrDQB/4iXU8M73ZiFoww85yBdRR8z ApVRrOG2BYwNOJiFxqBAElHj/eOMOhQjGY+WC7+Av2r+ZVhK4Q25vGHp1e/yM/uKbvqx0XQKRZJ PbJqTpC3DSxXaQ/qtlNHLGaieQ8yJUpTJOf8jFXQeVLgDzfuFcAeE3wntryAZmOOXqICgc/Ri1+ BiQuT89qMeXVhzJOlubAZkHDS4zkX3B/opEiTIMiiqWBk= X-Google-Smtp-Source: AGHT+IE/NGoKVl7E/tUqxPYYVhGW9MLa5x5g5kYKEMsRq2hhu2ZhegH9KRzjvzCYerPMCTr/toceTQ== X-Received: by 2002:a17:907:86a4:b0:b04:3888:5a5b with SMTP id a640c23a62f3a-b04388890admr126924566b.42.1756718382390; Mon, 01 Sep 2025 02:19:42 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:42 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 10/12] mm/mm_inline: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:13 +0200 Message-ID: <20250901091916.3002082-11-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to folio, lruvec, mm_struct, and vm_area_struct pointer parameters in mm_inline.h functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - folio_is_file_lru() - folio_lru_list() - folio_lru_refs() - folio_lru_gen() - lru_gen_is_active() - lru_gen_folio_seq() - folio_migrate_refs() - mm_tlb_flush_pending() - mm_tlb_flush_nested() - vma_has_recency() Signed-off-by: Max Kellermann Reviewed-by: Vishal Moola (Oracle) --- include/linux/mm_inline.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 150302b4a905..8c4f6f95ba9f 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -25,7 +25,7 @@ * 0 if @folio is a normal anonymous folio, a tmpfs folio or otherwise * ram or swap backed folio. */ -static inline int folio_is_file_lru(struct folio *folio) +static inline int folio_is_file_lru(const struct folio *const folio) { return !folio_test_swapbacked(folio); } @@ -84,7 +84,7 @@ static __always_inline void __folio_clear_lru_flags(struc= t folio *folio) * Return: The LRU list a folio should be on, as an index * into the array of LRU lists. */ -static __always_inline enum lru_list folio_lru_list(struct folio *folio) +static __always_inline enum lru_list folio_lru_list(const struct folio *co= nst folio) { enum lru_list lru; =20 @@ -141,7 +141,7 @@ static inline int lru_tier_from_refs(int refs, bool wor= kingset) return workingset ? MAX_NR_TIERS - 1 : order_base_2(refs); } =20 -static inline int folio_lru_refs(struct folio *folio) +static inline int folio_lru_refs(const struct folio *const folio) { unsigned long flags =3D READ_ONCE(folio->flags.f); =20 @@ -154,14 +154,14 @@ static inline int folio_lru_refs(struct folio *folio) return ((flags & LRU_REFS_MASK) >> LRU_REFS_PGOFF) + 1; } =20 -static inline int folio_lru_gen(struct folio *folio) +static inline int folio_lru_gen(const struct folio *folio) { unsigned long flags =3D READ_ONCE(folio->flags.f); =20 return ((flags & LRU_GEN_MASK) >> LRU_GEN_PGOFF) - 1; } =20 -static inline bool lru_gen_is_active(struct lruvec *lruvec, int gen) +static inline bool lru_gen_is_active(const struct lruvec *const lruvec, co= nst int gen) { unsigned long max_seq =3D lruvec->lrugen.max_seq; =20 @@ -217,12 +217,13 @@ static inline void lru_gen_update_size(struct lruvec = *lruvec, struct folio *foli VM_WARN_ON_ONCE(lru_gen_is_active(lruvec, old_gen) && !lru_gen_is_active(= lruvec, new_gen)); } =20 -static inline unsigned long lru_gen_folio_seq(struct lruvec *lruvec, struc= t folio *folio, +static inline unsigned long lru_gen_folio_seq(const struct lruvec *const l= ruvec, + const struct folio *const folio, bool reclaiming) { int gen; int type =3D folio_is_file_lru(folio); - struct lru_gen_folio *lrugen =3D &lruvec->lrugen; + const struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 /* * +-----------------------------------+---------------------------------= --+ @@ -302,7 +303,8 @@ static inline bool lru_gen_del_folio(struct lruvec *lru= vec, struct folio *folio, return true; } =20 -static inline void folio_migrate_refs(struct folio *new, struct folio *old) +static inline void folio_migrate_refs(struct folio *const new, + const struct folio *const old) { unsigned long refs =3D READ_ONCE(old->flags.f) & LRU_REFS_MASK; =20 @@ -330,7 +332,7 @@ static inline bool lru_gen_del_folio(struct lruvec *lru= vec, struct folio *folio, return false; } =20 -static inline void folio_migrate_refs(struct folio *new, struct folio *old) +static inline void folio_migrate_refs(struct folio *new, const struct foli= o *old) { =20 } @@ -508,7 +510,7 @@ static inline void dec_tlb_flush_pending(struct mm_stru= ct *mm) atomic_dec(&mm->tlb_flush_pending); } =20 -static inline bool mm_tlb_flush_pending(struct mm_struct *mm) +static inline bool mm_tlb_flush_pending(const struct mm_struct *const mm) { /* * Must be called after having acquired the PTL; orders against that @@ -521,7 +523,7 @@ static inline bool mm_tlb_flush_pending(struct mm_struc= t *mm) return atomic_read(&mm->tlb_flush_pending); } =20 -static inline bool mm_tlb_flush_nested(struct mm_struct *mm) +static inline bool mm_tlb_flush_nested(const struct mm_struct *const mm) { /* * Similar to mm_tlb_flush_pending(), we must have acquired the PTL @@ -605,7 +607,7 @@ pte_install_uffd_wp_if_needed(struct vm_area_struct *vm= a, unsigned long addr, return false; } =20 -static inline bool vma_has_recency(struct vm_area_struct *vma) +static inline bool vma_has_recency(const struct vm_area_struct *const vma) { if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ)) return false; --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C632312824 for ; Mon, 1 Sep 2025 09:19:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718388; cv=none; b=bN6Q9lF4F5iG+Y4KHU+Km1vZyyij6s7ckBljutL7EiOWAaNTwUqjjGj7/MJbXy11zNPlGV0ZsmVpxquRFckBIBxhdZjv3yfhSBYfgZm6ztP3o6SHZb/gDg04NqSj7uo2c2i0aYopQSmXwKaIoKnpaOmOGdUCm1OAEMmDo8UunD4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718388; c=relaxed/simple; bh=Pn49jH4PG3C/8QXwFhtbB4oaruklGtMdnkS4pKxEcwk=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D5YfozmL25R7v5S21HYZvuruMH86UUmJiojMk6PwCJtVYKRm4Yx0N/JOK/knCK77RGLP9N5pwg7Xc4/aTlVlxo5ydF7eHVD388z9cNZufg8LmZWNEe2r6pccc9G4jiVpIesHNDEpgg/bzNSudmI8bDFYd3myK0+lzLg9ZVyHMHA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=MMDFQDKY; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="MMDFQDKY" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b04271cfc3eso113138566b.3 for ; Mon, 01 Sep 2025 02:19:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718384; x=1757323184; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZWR7oxTxdlLJJjGEzgnWnG58Pm+0fE4rR05OeDaJbk0=; b=MMDFQDKY98LRy0ducF1oknt2/Ci7puoeG19apThwFntZPpI7tuXpWmd8xb+WjSXuvk 6uZMzzxCKvIMc1YPLxEmMSYPRv5weI4GYlezIsnjhXMNpm3p8T+hi22h5D5ekbu1+OO5 WaPWa1W15BaEJwnWWx0iYjWnYF8PJElEcv+ZJpn5ZvBOgt5uFUleI43wBIe70nLU2zmF bRMP5tOxhYwhTp+Ah0cHfWFBLyNf98BY3KsrY8SCnk+LfUCIpAkDjlRrjn45InVgpIxG EeRpuLzmM55M6C7N3qrv7MSuXD0Q0T7GvdwpLs64aLlMOfHTflOn9QCnVkKAhwzKLmBi 2D2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718384; x=1757323184; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZWR7oxTxdlLJJjGEzgnWnG58Pm+0fE4rR05OeDaJbk0=; b=nLKaph7FYxjxK9JIJ0IKZVg83u/rLZq1kuUxMHEJSwQoj4sUO5sowI2055SQkxKgAA sGeTfuuiYYMFwzZKS71lMpmY58RPOG7il9/YS0hcDi0khM3JDkOfKhz24JSe+Zum2Nvn DDpgkrdKkCfrBvyN0qI6Mn0XZjNRFiLb8VKk3IC2MbmRJAVCSG95pfiekPLipHHvMLIB Xi3ALso5C4+NoIGPzXP8wmv4JAldivAIyFON+CQfpCuLnHSufLxLpTcwzveMsgnun9F8 GzEyk4SDqZNV/GcjFCvZ5IDT7kPp9GfnW4NcCD+pP2ecnpLhAAASKgsLl1OFlB/C/nxH Tb+w== X-Forwarded-Encrypted: i=1; AJvYcCUDCenBJdDFsph8+nNJgmW5mQ6K+V8sdR+8txV/EHiJfcfyKJWB7pWQNlKqo589rWNDHJ+rkt/n8JZAFXg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy65HltCuMSReRNWLCmVmC3AsfiAR3w0OWRN9ljcZNIeQAuXrOB gvCaKevjErNTZsuXFbsJc50BdE3knvivfNKvZXFhEgrIEBpByPqwfA0qjG3A7o0Ew7I= X-Gm-Gg: ASbGncumaIsj/d9w7NSu2xxKXMuGEm9zxFXSFBVx+6MkiSIcitip6T0WBRnCv/6lG1D eYXs9rDuA69A3U0xZvxRFYHCefwX5wIGoTFtPQ/A1+fitc80WmomHLIQ5rBrkiZjE1XPBbiVonX qi/1CaWNIKjinXrRpQGJIG7c/9hM+bdPb3QpPn+rbzVTv+AZ1B+JEdVq57LvuBOg0235MiYCEwm br7c1p6PYZJkfkUNlt+D1fJ3/HDwXnczWzCimgj8kMdJDuCa3rwpnzM9ilXJdXqtOHxd9dx5j59 02HpVUxUiZaqQmqDCCoLH6OajuBKymIijfzYUYt99aI1rY4V07kfZAz0KYc/VTlvvMPBSr7+OEj BkLb0c2y7P3dNtMsVn3WIAudKa27z6mwBsgOtBLVhSZUfnHBUG79Jj1W3Uhmnc166uHPfdC3+Mc imEZRyrH5cyfOm3BuGBFYIR25+MIei4AooZI6+EuPggXY= X-Google-Smtp-Source: AGHT+IHaglaKkw7QyMbGEsEV4gTcSx4b/Ps7GCifY+uWygIU+PJPwrgvRO0dRVpnqktVCBoBvNUDww== X-Received: by 2002:a17:906:eecd:b0:afd:d94b:830d with SMTP id a640c23a62f3a-b01e52b79camr796896166b.62.1756718384210; Mon, 01 Sep 2025 02:19:44 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:44 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 11/12] mm: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:14 +0200 Message-ID: <20250901091916.3002082-12-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to vm_area_struct, vm_fault, page, and vmem_altmap pointer parameters in core mm functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - assert_fault_locked() - vma_is_temporary_stack() - vma_is_foreign() - vma_is_accessible() - vma_is_shared_maywrite() - stack_guard_start_gap() - vm_start_gap() - vm_end_gap() - vma_pages() - range_in_vma() - gup_can_follow_protnone() - page_is_guard() - vmem_altmap_offset() Signed-off-by: Max Kellermann --- include/linux/mm.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 23864c3519d6..08ea6e7c0329 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -703,7 +703,7 @@ static inline void release_fault_lock(struct vm_fault *= vmf) mmap_read_unlock(vmf->vma->vm_mm); } =20 -static inline void assert_fault_locked(struct vm_fault *vmf) +static inline void assert_fault_locked(struct vm_fault *const vmf) { if (vmf->flags & FAULT_FLAG_VMA_LOCK) vma_assert_locked(vmf->vma); @@ -716,7 +716,7 @@ static inline void release_fault_lock(struct vm_fault *= vmf) mmap_read_unlock(vmf->vma->vm_mm); } =20 -static inline void assert_fault_locked(struct vm_fault *vmf) +static inline void assert_fault_locked(const struct vm_fault *vmf) { mmap_assert_locked(vmf->vma->vm_mm); } @@ -859,7 +859,7 @@ static inline bool vma_is_initial_stack(const struct vm= _area_struct *vma) vma->vm_end >=3D vma->vm_mm->start_stack; } =20 -static inline bool vma_is_temporary_stack(struct vm_area_struct *vma) +static inline bool vma_is_temporary_stack(const struct vm_area_struct *con= st vma) { int maybe_stack =3D vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP); =20 @@ -873,7 +873,7 @@ static inline bool vma_is_temporary_stack(struct vm_are= a_struct *vma) return false; } =20 -static inline bool vma_is_foreign(struct vm_area_struct *vma) +static inline bool vma_is_foreign(const struct vm_area_struct *const vma) { if (!current->mm) return true; @@ -884,7 +884,7 @@ static inline bool vma_is_foreign(struct vm_area_struct= *vma) return false; } =20 -static inline bool vma_is_accessible(struct vm_area_struct *vma) +static inline bool vma_is_accessible(const struct vm_area_struct *const vm= a) { return vma->vm_flags & VM_ACCESS_FLAGS; } @@ -895,7 +895,7 @@ static inline bool is_shared_maywrite(vm_flags_t vm_fla= gs) (VM_SHARED | VM_MAYWRITE); } =20 -static inline bool vma_is_shared_maywrite(struct vm_area_struct *vma) +static inline bool vma_is_shared_maywrite(const struct vm_area_struct *con= st vma) { return is_shared_maywrite(vma->vm_flags); } @@ -3488,7 +3488,7 @@ struct vm_area_struct *vma_lookup(struct mm_struct *m= m, unsigned long addr) return mtree_load(&mm->mm_mt, addr); } =20 -static inline unsigned long stack_guard_start_gap(struct vm_area_struct *v= ma) +static inline unsigned long stack_guard_start_gap(const struct vm_area_str= uct *const vma) { if (vma->vm_flags & VM_GROWSDOWN) return stack_guard_gap; @@ -3500,7 +3500,7 @@ static inline unsigned long stack_guard_start_gap(str= uct vm_area_struct *vma) return 0; } =20 -static inline unsigned long vm_start_gap(struct vm_area_struct *vma) +static inline unsigned long vm_start_gap(const struct vm_area_struct *cons= t vma) { unsigned long gap =3D stack_guard_start_gap(vma); unsigned long vm_start =3D vma->vm_start; @@ -3511,7 +3511,7 @@ static inline unsigned long vm_start_gap(struct vm_ar= ea_struct *vma) return vm_start; } =20 -static inline unsigned long vm_end_gap(struct vm_area_struct *vma) +static inline unsigned long vm_end_gap(const struct vm_area_struct *const = vma) { unsigned long vm_end =3D vma->vm_end; =20 @@ -3523,7 +3523,7 @@ static inline unsigned long vm_end_gap(struct vm_area= _struct *vma) return vm_end; } =20 -static inline unsigned long vma_pages(struct vm_area_struct *vma) +static inline unsigned long vma_pages(const struct vm_area_struct *const v= ma) { return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; } @@ -3540,7 +3540,7 @@ static inline struct vm_area_struct *find_exact_vma(s= truct mm_struct *mm, return vma; } =20 -static inline bool range_in_vma(struct vm_area_struct *vma, +static inline bool range_in_vma(const struct vm_area_struct *const vma, unsigned long start, unsigned long end) { return (vma && vma->vm_start <=3D start && end <=3D vma->vm_end); @@ -3656,7 +3656,7 @@ static inline int vm_fault_to_errno(vm_fault_t vm_fau= lt, int foll_flags) * Indicates whether GUP can follow a PROT_NONE mapped page, or whether * a (NUMA hinting) fault is required. */ -static inline bool gup_can_follow_protnone(struct vm_area_struct *vma, +static inline bool gup_can_follow_protnone(const struct vm_area_struct *co= nst vma, unsigned int flags) { /* @@ -3786,7 +3786,7 @@ static inline bool debug_guardpage_enabled(void) return static_branch_unlikely(&_debug_guardpage_enabled); } =20 -static inline bool page_is_guard(struct page *page) +static inline bool page_is_guard(const struct page *const page) { if (!debug_guardpage_enabled()) return false; @@ -3817,7 +3817,7 @@ static inline void debug_pagealloc_map_pages(struct p= age *page, int numpages) {} static inline void debug_pagealloc_unmap_pages(struct page *page, int nump= ages) {} static inline unsigned int debug_guardpage_minorder(void) { return 0; } static inline bool debug_guardpage_enabled(void) { return false; } -static inline bool page_is_guard(struct page *page) { return false; } +static inline bool page_is_guard(const struct page *const page) { return f= alse; } static inline bool set_page_guard(struct zone *zone, struct page *page, unsigned int order) { return false; } static inline void clear_page_guard(struct zone *zone, struct page *page, @@ -3899,7 +3899,7 @@ void vmemmap_free(unsigned long start, unsigned long = end, #endif =20 #ifdef CONFIG_SPARSEMEM_VMEMMAP -static inline unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) +static inline unsigned long vmem_altmap_offset(const struct vmem_altmap *a= ltmap) { /* number of pfns from base where pfn_to_page() is valid */ if (altmap) @@ -3913,7 +3913,7 @@ static inline void vmem_altmap_free(struct vmem_altma= p *altmap, altmap->alloc -=3D nr_pfns; } #else -static inline unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) +static inline unsigned long vmem_altmap_offset(const struct vmem_altmap *a= ltmap) { return 0; } --=20 2.47.2 From nobody Fri Oct 3 12:16:44 2025 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2B703128D8 for ; Mon, 1 Sep 2025 09:19:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718390; cv=none; b=qU6kvgdY6IgoU2VxCvxznu7ej31rsa7lWCnGoXW11BekQ0dPzdjohZNF6Zi0l9XYY79XRE1fcD8K0rslHgBhvB8Cjqwc2lBy0lN482wZVoqagxfiYNstpdJl3ocjy/89TG+uQaGzJ4aK1PNjkVydeJ4Fm+qQER4BJACWD7gay8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756718390; c=relaxed/simple; bh=keel1yn3FhEJPPOWeNQJAj3xmh/1LD+X02xJSdZzUVI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J5s+MGrcISuv7RymHmnAnSifPuQApflDrExwhmzixi3/ond13iuG63b0LG4qlX+qkcJrmoj4PqFF0yjn8UVgTCdbplYb2fsOhd0VpYMVpTJKcEI+LflxPw8CgaDkeZWQHnLXJCTmnE4b6QE+FvuNyoNtMOraA1n4qEbjhkUhyCg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com; spf=pass smtp.mailfrom=ionos.com; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b=JW2okNwf; arc=none smtp.client-ip=209.85.208.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ionos.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionos.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ionos.com header.i=@ionos.com header.b="JW2okNwf" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-61cc281171cso7047658a12.0 for ; Mon, 01 Sep 2025 02:19:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1756718386; x=1757323186; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=u6Ls6t35aYYluwAFtTSG43pL4pzA4jbKsfNN9ofH+0I=; b=JW2okNwfJNFjfv/5BhnLFDP+XBM6PVBGnVlU9aSyVg6SWsa7L02fGvbyxKqX22qrQV VvD9s7YCXuwAlUbm4uTahpvYEL3ORrgtGnzge5703tr80mSti3fy+tMqW9FdPzdDJR1q e6jPcl+JnBu9OqRxioVDLtwfo6aKPwO6ypHN+SmheNP/COv4nOYZ//WOviKWfTs93hya utTcRGtFrHPyuxK0rypF/085815uUEjyeIMbMcTaztoTgp7LKVqyi6spNUSVk/8/crIS EIH8PWuvNGd+WShPqoY6iOCzhXvYpbZ998WgIF++IBic+PKq5DxOoJEQlmhyBfGUuJH4 6TTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756718386; x=1757323186; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u6Ls6t35aYYluwAFtTSG43pL4pzA4jbKsfNN9ofH+0I=; b=j46/JODl4vMivxndLWwWH8SH7WV14TfgyeAFXN3iNk3budW6+cZSSJqAOSeKuL53A7 cqjfXO9iABSPANb+iJhi3pyNM2bVN1BWEE1xmaTKjDftZHQaZDFvF888azwoysZJLQkx su4bM8hduTSusfzXl5/EQtZNzj9sBEgiyZynLcvZSd+ZJ7zoAi9oeE8UK/TN/+T/em3C SxfPAYib1UyaFOZOzzY1gOSSlwjO5KFc6wbCOYhWROiKOAMSt6igb08rIVsfjq6aJpNR xqpSly/8UMEFu1mtjuaN0zXb7zp+Ey3Beu4Esnn6DhWI2zvmaaNZc6uCNiwVKZ3ZM5ao xpMA== X-Forwarded-Encrypted: i=1; AJvYcCVm+k7VVoUtUu4+gjpV2D5khxg5ed3pLKR91W02czd8xWCw2sCKUBIdHSp1PHcA1tkQzmOexPQd110zSOU=@vger.kernel.org X-Gm-Message-State: AOJu0YyDLuQeIt2WmbXFmUgp8FhNmaLrvnRA6NcDHdLux1V1OiXLdPzV KaT+ZEqLEsMIWshWvqTQnyPrNW0umS8fAA7BA0Aw/tW2ko9WkkILYypptkPcVLczErw= X-Gm-Gg: ASbGncsUZIFBFFbZWu4lpkJWOT7HmWSb/BPiEnPdvD7KlVAsRjq5TLlgjsEbGTBIV6m LUkaU6x3ybPkqj+0rJVm3bNkblEIkhuxuC2Hi4WkuQOvMb03EJ/VMBGKsqaueN3VZy40g16JS0d FltrGgCP6Nc4LU00tgz851he9sWVjsIfr0ZjZt0BRcJx1jBR2n8AR5lfNtnuEeN7+MxS08vy1Tx lNV4Pw3GVa5deK08t35LV3w2W3XOTBudPrE2BbzStITYQTokE/3+Sv6F0ho0SIvq83rpabMgair vyp6f6r/eirogtDPr37ibhdCNg2UiloFPj4Jlsnjr4CiEnHRAhxVY30r1aiPnCnn1NUmKcwIpBu f98akaqS15XHm1dSfcOR/7lv/seWy5w/fb6hkvhFUPjHKP6Ne+zmwbkLDoXI7twUMw16RW5Tr/Q hX96RqeGE0qYm3ZU+lwoWOnw== X-Google-Smtp-Source: AGHT+IEW+p/yFRXmmN9eW8x4AeaBg7N2/sFlQYebSPLD3vubNbtOgyDoyxrNrPhIPQlzogfakGVp6g== X-Received: by 2002:a17:907:94c9:b0:b04:2f81:5c35 with SMTP id a640c23a62f3a-b042f817f8cmr232585266b.34.1756718385988; Mon, 01 Sep 2025 02:19:45 -0700 (PDT) Received: from raven.intern.cm-ag (p200300dc6f1d0f00023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f1d:f00:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b01902d0e99sm541005766b.12.2025.09.01.02.19.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Sep 2025 02:19:45 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, david@redhat.com, axelrasmussen@google.com, yuanchu@google.com, willy@infradead.org, hughd@google.com, mhocko@suse.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, vishal.moola@gmail.com, linux@armlinux.org.uk, James.Bottomley@HansenPartnership.com, deller@gmx.de, agordeev@linux.ibm.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, davem@davemloft.net, andreas@gaisler.com, dave.hansen@linux.intel.com, luto@kernel.org, peterz@infradead.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, x86@kernel.org, hpa@zytor.com, chris@zankel.net, jcmvbkbc@gmail.com, viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz, weixugc@google.com, baolin.wang@linux.alibaba.com, rientjes@google.com, shakeel.butt@linux.dev, max.kellermann@ionos.com, thuth@redhat.com, broonie@kernel.org, osalvador@suse.de, jfalempe@redhat.com, mpe@ellerman.id.au, nysal@linux.ibm.com, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v4 12/12] mm/highmem: add const to pointer parameters for improved const-correctness Date: Mon, 1 Sep 2025 11:19:15 +0200 Message-ID: <20250901091916.3002082-13-max.kellermann@ionos.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250901091916.3002082-1-max.kellermann@ionos.com> References: <20250901091916.3002082-1-max.kellermann@ionos.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memory management (mm) subsystem is a fundamental low-level component of the Linux kernel. Establishing const-correctness at this foundational level enables higher-level subsystems, such as filesystems and drivers, to also adopt const-correctness in their interfaces. This patch lays the groundwork for broader const-correctness throughout the kernel by starting with the core mm subsystem. This patch adds const qualifiers to folio and page pointer parameters in highmem functions that do not modify the referenced memory, improving type safety and enabling compiler optimizations. Functions improved: - kmap_high_get() - arch_kmap_local_high_get() - get_pkmap_color() - __kmap_local_page_prot() - kunmap_high() - kunmap() - kmap_local_page() - kmap_local_page_try_from_panic() - kmap_local_folio() - kmap_local_page_prot() - kmap_atomic_prot() - kmap_atomic() Signed-off-by: Max Kellermann --- arch/arm/include/asm/highmem.h | 6 ++--- arch/xtensa/include/asm/highmem.h | 2 +- include/linux/highmem-internal.h | 38 +++++++++++++++++-------------- include/linux/highmem.h | 8 +++---- mm/highmem.c | 10 ++++---- 5 files changed, 34 insertions(+), 30 deletions(-) diff --git a/arch/arm/include/asm/highmem.h b/arch/arm/include/asm/highmem.h index b4b66220952d..023be74298f3 100644 --- a/arch/arm/include/asm/highmem.h +++ b/arch/arm/include/asm/highmem.h @@ -46,9 +46,9 @@ extern pte_t *pkmap_page_table; #endif =20 #ifdef ARCH_NEEDS_KMAP_HIGH_GET -extern void *kmap_high_get(struct page *page); +extern void *kmap_high_get(const struct page *page); =20 -static inline void *arch_kmap_local_high_get(struct page *page) +static inline void *arch_kmap_local_high_get(const struct page *page) { if (IS_ENABLED(CONFIG_DEBUG_HIGHMEM) && !cache_is_vivt()) return NULL; @@ -57,7 +57,7 @@ static inline void *arch_kmap_local_high_get(struct page = *page) #define arch_kmap_local_high_get arch_kmap_local_high_get =20 #else /* ARCH_NEEDS_KMAP_HIGH_GET */ -static inline void *kmap_high_get(struct page *page) +static inline void *kmap_high_get(const struct page *const page) { return NULL; } diff --git a/arch/xtensa/include/asm/highmem.h b/arch/xtensa/include/asm/hi= ghmem.h index 34b8b620e7f1..473b622b863b 100644 --- a/arch/xtensa/include/asm/highmem.h +++ b/arch/xtensa/include/asm/highmem.h @@ -29,7 +29,7 @@ =20 #if DCACHE_WAY_SIZE > PAGE_SIZE #define get_pkmap_color get_pkmap_color -static inline int get_pkmap_color(struct page *page) +static inline int get_pkmap_color(const struct page *const page) { return DCACHE_ALIAS(page_to_phys(page)); } diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-inter= nal.h index 36053c3d6d64..ca2ba47c14e0 100644 --- a/include/linux/highmem-internal.h +++ b/include/linux/highmem-internal.h @@ -7,7 +7,7 @@ */ #ifdef CONFIG_KMAP_LOCAL void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot); -void *__kmap_local_page_prot(struct page *page, pgprot_t prot); +void *__kmap_local_page_prot(const struct page *page, pgprot_t prot); void kunmap_local_indexed(const void *vaddr); void kmap_local_fork(struct task_struct *tsk); void __kmap_local_sched_out(void); @@ -33,7 +33,7 @@ static inline void kmap_flush_tlb(unsigned long addr) { } #endif =20 void *kmap_high(struct page *page); -void kunmap_high(struct page *page); +void kunmap_high(const struct page *page); void __kmap_flush_unused(void); struct page *__kmap_to_page(void *addr); =20 @@ -50,7 +50,7 @@ static inline void *kmap(struct page *page) return addr; } =20 -static inline void kunmap(struct page *page) +static inline void kunmap(const struct page *const page) { might_sleep(); if (!PageHighMem(page)) @@ -68,12 +68,12 @@ static inline void kmap_flush_unused(void) __kmap_flush_unused(); } =20 -static inline void *kmap_local_page(struct page *page) +static inline void *kmap_local_page(const struct page *const page) { return __kmap_local_page_prot(page, kmap_prot); } =20 -static inline void *kmap_local_page_try_from_panic(struct page *page) +static inline void *kmap_local_page_try_from_panic(const struct page *cons= t page) { if (!PageHighMem(page)) return page_address(page); @@ -81,13 +81,15 @@ static inline void *kmap_local_page_try_from_panic(stru= ct page *page) return NULL; } =20 -static inline void *kmap_local_folio(struct folio *folio, size_t offset) +static inline void *kmap_local_folio(const struct folio *const folio, + const size_t offset) { - struct page *page =3D folio_page(folio, offset / PAGE_SIZE); + const struct page *page =3D folio_page(folio, offset / PAGE_SIZE); return __kmap_local_page_prot(page, kmap_prot) + offset % PAGE_SIZE; } =20 -static inline void *kmap_local_page_prot(struct page *page, pgprot_t prot) +static inline void *kmap_local_page_prot(const struct page *const page, + const pgprot_t prot) { return __kmap_local_page_prot(page, prot); } @@ -102,7 +104,7 @@ static inline void __kunmap_local(const void *vaddr) kunmap_local_indexed(vaddr); } =20 -static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot) +static inline void *kmap_atomic_prot(const struct page *const page, const = pgprot_t prot) { if (IS_ENABLED(CONFIG_PREEMPT_RT)) migrate_disable(); @@ -113,7 +115,7 @@ static inline void *kmap_atomic_prot(struct page *page,= pgprot_t prot) return __kmap_local_page_prot(page, prot); } =20 -static inline void *kmap_atomic(struct page *page) +static inline void *kmap_atomic(const struct page *const page) { return kmap_atomic_prot(page, kmap_prot); } @@ -173,17 +175,17 @@ static inline void *kmap(struct page *page) return page_address(page); } =20 -static inline void kunmap_high(struct page *page) { } +static inline void kunmap_high(const struct page *const page) { } static inline void kmap_flush_unused(void) { } =20 -static inline void kunmap(struct page *page) +static inline void kunmap(const struct page *const page) { #ifdef ARCH_HAS_FLUSH_ON_KUNMAP kunmap_flush_on_unmap(page_address(page)); #endif } =20 -static inline void *kmap_local_page(struct page *page) +static inline void *kmap_local_page(const struct page *const page) { return page_address(page); } @@ -193,12 +195,14 @@ static inline void *kmap_local_page_try_from_panic(st= ruct page *page) return page_address(page); } =20 -static inline void *kmap_local_folio(struct folio *folio, size_t offset) +static inline void *kmap_local_folio(const struct folio *const folio, + const size_t offset) { return folio_address(folio) + offset; } =20 -static inline void *kmap_local_page_prot(struct page *page, pgprot_t prot) +static inline void *kmap_local_page_prot(const struct page *const page, + const pgprot_t prot) { return kmap_local_page(page); } @@ -215,7 +219,7 @@ static inline void __kunmap_local(const void *addr) #endif } =20 -static inline void *kmap_atomic(struct page *page) +static inline void *kmap_atomic(const struct page *const page) { if (IS_ENABLED(CONFIG_PREEMPT_RT)) migrate_disable(); @@ -225,7 +229,7 @@ static inline void *kmap_atomic(struct page *page) return page_address(page); } =20 -static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot) +static inline void *kmap_atomic_prot(const struct page *const page, const = pgprot_t prot) { return kmap_atomic(page); } diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 6234f316468c..105cc4c00cc3 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -43,7 +43,7 @@ static inline void *kmap(struct page *page); * Counterpart to kmap(). A NOOP for CONFIG_HIGHMEM=3Dn and for mappings of * pages in the low memory area. */ -static inline void kunmap(struct page *page); +static inline void kunmap(const struct page *page); =20 /** * kmap_to_page - Get the page for a kmap'ed address @@ -93,7 +93,7 @@ static inline void kmap_flush_unused(void); * disabling migration in order to keep the virtual address stable across * preemption. No caller of kmap_local_page() can rely on this side effect. */ -static inline void *kmap_local_page(struct page *page); +static inline void *kmap_local_page(const struct page *page); =20 /** * kmap_local_folio - Map a page in this folio for temporary usage @@ -129,7 +129,7 @@ static inline void *kmap_local_page(struct page *page); * Context: Can be invoked from any context. * Return: The virtual address of @offset. */ -static inline void *kmap_local_folio(struct folio *folio, size_t offset); +static inline void *kmap_local_folio(const struct folio *folio, size_t off= set); =20 /** * kmap_atomic - Atomically map a page for temporary usage - Deprecated! @@ -176,7 +176,7 @@ static inline void *kmap_local_folio(struct folio *foli= o, size_t offset); * kunmap_atomic(vaddr2); * kunmap_atomic(vaddr1); */ -static inline void *kmap_atomic(struct page *page); +static inline void *kmap_atomic(const struct page *page); =20 /* Highmem related interfaces for management code */ static inline unsigned long nr_free_highpages(void); diff --git a/mm/highmem.c b/mm/highmem.c index ef3189b36cad..93fa505fcb98 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -61,7 +61,7 @@ static inline int kmap_local_calc_idx(int idx) /* * Determine color of virtual address where the page should be mapped. */ -static inline unsigned int get_pkmap_color(struct page *page) +static inline unsigned int get_pkmap_color(const struct page *const page) { return 0; } @@ -334,7 +334,7 @@ EXPORT_SYMBOL(kmap_high); * * This can be called from any context. */ -void *kmap_high_get(struct page *page) +void *kmap_high_get(const struct page *const page) { unsigned long vaddr, flags; =20 @@ -356,7 +356,7 @@ void *kmap_high_get(struct page *page) * If ARCH_NEEDS_KMAP_HIGH_GET is not defined then this may be called * only from user context. */ -void kunmap_high(struct page *page) +void kunmap_high(const struct page *const page) { unsigned long vaddr; unsigned long nr; @@ -508,7 +508,7 @@ static inline void kmap_local_idx_pop(void) #endif =20 #ifndef arch_kmap_local_high_get -static inline void *arch_kmap_local_high_get(struct page *page) +static inline void *arch_kmap_local_high_get(const struct page *const page) { return NULL; } @@ -572,7 +572,7 @@ void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t= prot) } EXPORT_SYMBOL_GPL(__kmap_local_pfn_prot); =20 -void *__kmap_local_page_prot(struct page *page, pgprot_t prot) +void *__kmap_local_page_prot(const struct page *const page, const pgprot_t= prot) { void *kmap; =20 --=20 2.47.2