From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A1634C33D4 for ; Wed, 16 Sep 2026 21:54:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789595696; cv=none; b=aAYvX8KIrjO/5hHsUcOynWJq5dwssAvNeeNp6oNnHhCSrU3YXY13jRWR8/LQx52BnZyfxWmrHTRy+L+/uCCIyf9h6kYgOvdGu02BGDT7fK48jPdxi+T7nIUVePyS3MIQfc10C02ott4IYPsTeNLF834uoQWUvtQDTkWaIlc/5G8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789595696; c=relaxed/simple; bh=vM0Ek6OsH/yxMxksGMtTx4tVMY1gbm6wQgyhDeWGDjk=; h=Date:To:From:Subject:Message-Id; b=JeH7DfpBjAJSunKi+oGiBemE02KZ7rx/mS6YJ9lEpx2aCU3EY8gJosLTM2wK5xP4rZu8TKr4seDgNSaypX8J92zj+zpZcBnSxV/ffLAQgD6WOd1bDYAYKYfY0hL7TwfsdgQpCTdpyIr2J2yzRQIGuKJCUzbR81hv+q7KZkVJ0YE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=Ss1ZI33+; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="Ss1ZI33+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0CE81F00893; Wed, 16 Sep 2026 21:54:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=korg; t=1789595683; bh=QZq3/kJkrneRPDZJ/67K8PTttcZSRjYPidl3tbj7fsA=; h=Date:To:From:Subject; b=Ss1ZI33+pwxfhh9yZr30zrlENQKUUhRz1Rv5Ju4MZN0hcy2nAXgW9LN5dDIerkEKu 4EL009dN0KVEX47XoJAZQeiq019rNntipOVvAdUl0nQasXpdTWmJyPbU/s0rv9CdpF CWvDOTa2y333Nv3u1L20cnk9Swe/2o9Ex/TeCjxw= Date: Wed, 16 Sep 2026 14:54:43 -0700 To: mm-commits@vger.kernel.org,tz2294@columbia.edu,akpm@linux-foundation.org From: Andrew Morton Subject: + mm-memcontrol-constify-the-mem_cgroup-accessors.patch added to mm-new branch Message-Id: <20260916215443.D0CE81F00893@smtp.kernel.org> Precedence: bulk X-Mailing-List: mm-commits@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The patch titled Subject: mm: memcontrol: constify the mem_cgroup accessors has been added to the -mm mm-new branch. Its filename is mm-memcontrol-constify-the-mem_cgroup-accessors.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memcontrol-constify-the-mem_cgroup-accessors.patch This patch will later appear in the mm-new branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Note, mm-new is a provisional staging ground for work-in-progress patches, and acceptance into mm-new is a notification for others take notice and to finish up reviews. Please do not hesitate to respond to review feedback and post updated versions to replace or incrementally fixup patches in mm-new. The mm-new branch of mm.git is not included in linux-next If a few days of testing in mm-new is successful, the patch will me moved into mm.git's mm-unstable branch, which is included in linux-next Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via various branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there most days ------------------------------------------------------ From: Tal Zussman Subject: mm: memcontrol: constify the mem_cgroup accessors Date: Tue, 15 Sep 2026 19:20:09 -0400 mem_cgroup_id(), parent_mem_cgroup(), mem_cgroup_is_root(), mem_cgroup_is_descendant(), memcg_kmem_id(), and the other memcg accessors only read from the memcg. Constify them, along with mem_cgroup_shrink_is_root()'s shrink_control. mem_cgroup_print_oom_context()'s task stays non-const, as task_cgroup() takes a non-const task. Link: https://lore.kernel.org/20260915-folio_memcg-const-v3-5-c239a6010b58@columbia.edu Signed-off-by: Tal Zussman Signed-off-by: Andrew Morton Acked-by: Muchun Song Acked-by: Shakeel Butt Acked-by: Lorenzo Stoakes (ARM) Cc: Axel Rasmussen Cc: Baolin Wang Cc: Baoquan He Cc: Barry Song Cc: Chris Li Cc: David Hildenbrand Cc: Johannes Weiner Cc: Kairui Song Cc: Kemeng Shi Cc: Liam R. Howlett Cc: Matthew Wilcox (Oracle) Cc: Michal Hocko Cc: Mike Rapoport Cc: Nhat Pham Cc: Roman Gushchin Cc: Suren Baghdasaryan Cc: Vlastimil Babka Cc: Wei Xu Cc: Yuanchu Xie --- include/linux/memcontrol.h | 41 +++++++++++++++++------------------ mm/memcontrol.c | 3 +- 2 files changed, 23 insertions(+), 21 deletions(-) --- a/include/linux/memcontrol.h~mm-memcontrol-constify-the-mem_cgroup-accessors +++ a/include/linux/memcontrol.h @@ -539,7 +539,7 @@ static inline bool PageMemcgKmem(const s return folio_memcg_kmem(page_folio(page)); } -static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg) +static inline bool mem_cgroup_is_root(const struct mem_cgroup *memcg) { return (memcg == root_mem_cgroup); } @@ -555,7 +555,7 @@ static inline bool mem_cgroup_is_root(st * and do not honour sc->memcg can use this to early-return 0 in per-memcg * contexts. */ -static inline bool mem_cgroup_shrink_is_root(struct shrink_control *sc) +static inline bool mem_cgroup_shrink_is_root(const struct shrink_control *sc) { return !sc->memcg || mem_cgroup_is_root(sc->memcg); } @@ -840,7 +840,7 @@ void mem_cgroup_iter_break(struct mem_cg void mem_cgroup_scan_tasks(struct mem_cgroup *memcg, int (*)(struct task_struct *, void *), void *arg); -static inline unsigned short mem_cgroup_private_id(struct mem_cgroup *memcg) +static inline unsigned short mem_cgroup_private_id(const struct mem_cgroup *memcg) { if (mem_cgroup_disabled()) return 0; @@ -849,7 +849,7 @@ static inline unsigned short mem_cgroup_ } struct mem_cgroup *mem_cgroup_from_private_id(unsigned short id); -static inline u64 mem_cgroup_id(struct mem_cgroup *memcg) +static inline u64 mem_cgroup_id(const struct mem_cgroup *memcg) { return memcg ? cgroup_id(memcg->css.cgroup) : 0; } @@ -878,13 +878,13 @@ static inline struct mem_cgroup *lruvec_ * * Returns the parent memcg, or NULL if this is the root. */ -static inline struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg) +static inline struct mem_cgroup *parent_mem_cgroup(const struct mem_cgroup *memcg) { return mem_cgroup_from_css(memcg->css.parent); } -static inline bool mem_cgroup_is_descendant(struct mem_cgroup *memcg, - struct mem_cgroup *root) +static inline bool mem_cgroup_is_descendant(const struct mem_cgroup *memcg, + const struct mem_cgroup *root) { if (root == memcg) return true; @@ -892,7 +892,7 @@ static inline bool mem_cgroup_is_descend } static inline bool mm_match_cgroup(struct mm_struct *mm, - struct mem_cgroup *memcg) + const struct mem_cgroup *memcg) { struct mem_cgroup *task_memcg; bool match = false; @@ -943,7 +943,7 @@ static inline void mem_cgroup_handle_ove unsigned long mem_cgroup_get_max(struct mem_cgroup *memcg); -void mem_cgroup_print_oom_context(struct mem_cgroup *memcg, +void mem_cgroup_print_oom_context(const struct mem_cgroup *memcg, struct task_struct *p); void mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg); @@ -1119,12 +1119,12 @@ static inline bool PageMemcgKmem(const s return false; } -static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg) +static inline bool mem_cgroup_is_root(const struct mem_cgroup *memcg) { return true; } -static inline bool mem_cgroup_shrink_is_root(struct shrink_control *sc) +static inline bool mem_cgroup_shrink_is_root(const struct shrink_control *sc) { return true; } @@ -1227,13 +1227,13 @@ static inline struct lruvec *folio_lruve return &pgdat->__lruvec; } -static inline struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg) +static inline struct mem_cgroup *parent_mem_cgroup(const struct mem_cgroup *memcg) { return NULL; } static inline bool mm_match_cgroup(struct mm_struct *mm, - struct mem_cgroup *memcg) + const struct mem_cgroup *memcg) { return true; } @@ -1327,7 +1327,7 @@ static inline void mem_cgroup_scan_tasks { } -static inline unsigned short mem_cgroup_private_id(struct mem_cgroup *memcg) +static inline unsigned short mem_cgroup_private_id(const struct mem_cgroup *memcg) { return 0; } @@ -1339,7 +1339,7 @@ static inline struct mem_cgroup *mem_cgr return NULL; } -static inline u64 mem_cgroup_id(struct mem_cgroup *memcg) +static inline u64 mem_cgroup_id(const struct mem_cgroup *memcg) { return 0; } @@ -1377,7 +1377,8 @@ static inline unsigned long mem_cgroup_g } static inline void -mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct *p) +mem_cgroup_print_oom_context(const struct mem_cgroup *memcg, + struct task_struct *p) { } @@ -1813,7 +1814,7 @@ static inline void memcg_kmem_uncharge_p * A helper for accessing memcg's kmem_id, used for getting * corresponding LRU lists. */ -static inline int memcg_kmem_id(struct mem_cgroup *memcg) +static inline int memcg_kmem_id(const struct mem_cgroup *memcg) { return memcg ? memcg->kmemcg_id : -1; } @@ -1885,7 +1886,7 @@ static inline bool memcg_kmem_online(voi return false; } -static inline int memcg_kmem_id(struct mem_cgroup *memcg) +static inline int memcg_kmem_id(const struct mem_cgroup *memcg) { return -1; } @@ -1962,7 +1963,7 @@ static inline bool mem_cgroup_zswap_writ #ifdef CONFIG_MEMCG_V1 bool mem_cgroup_oom_synchronize(bool wait); -static inline bool task_in_memcg_oom(struct task_struct *p) +static inline bool task_in_memcg_oom(const struct task_struct *p) { return p->memcg_in_oom; } @@ -1980,7 +1981,7 @@ static inline void mem_cgroup_exit_user_ } #else /* CONFIG_MEMCG_V1 */ -static inline bool task_in_memcg_oom(struct task_struct *p) +static inline bool task_in_memcg_oom(const struct task_struct *p) { return false; } --- a/mm/memcontrol.c~mm-memcontrol-constify-the-mem_cgroup-accessors +++ a/mm/memcontrol.c @@ -1818,7 +1818,8 @@ static void memory_stat_format(struct me * NOTE: @memcg and @p's mem_cgroup can be different when hierarchy is * enabled */ -void mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct *p) +void mem_cgroup_print_oom_context(const struct mem_cgroup *memcg, + struct task_struct *p) { rcu_read_lock(); _ Patches currently in -mm which might be from tz2294@columbia.edu are mm-page_io-convert-write-completion-handlers-to-folios.patch mm-remove-pagereclaim.patch mm-page_io-use-swap-entries-directly-in-zeromap-helpers.patch mm-page_io-rename-bio_associate_blkg_from_page.patch mm-page_io-refer-to-folios-in-swap_writeout-comments.patch mm-swap-rename-__swap_writepage-to-__swap_writeout.patch mm-remove-unused-mark_page_reserved.patch mm-remove-unused-totalram_pages_inc-and-totalram_pages_dec.patch mm-remove-pagewriteback.patch mm-swap-add-folio_swap_entry-and-folio_page_swap_entry.patch mm-swap-add-folio_swap_entry-and-folio_page_swap_entry-fix.patch mm-huge_memory-add-a-comment-to-the-open-coded-swap-entry.patch mm-rmap-use-folio_page_swap_entry-in-ttu_anon_swapbacked_folio.patch mm-zswap-use-folio_swap_entry-in-zswap_store_page.patch mm-swapfile-use-folio_page_swap_entry.patch arm64-mte-make-mte_save_tags-and-mte_restore_tags-static.patch arm64-mte-pass-the-swap-entry-to-mte_save_tags.patch mm-swap-remove-page_swap_entry.patch mm-memcontrol-take-a-const-folio-in-folio_memcg-and-friends.patch mm-memcontrol-constify-obj_cgroup_memcg-and-friends.patch mm-memcontrol-constify-the-lruvec-helpers.patch mm-page_io-take-a-const-folio-in-bio_associate_blkg_from_folio.patch mm-memcontrol-constify-the-mem_cgroup-accessors.patch mm-page_counter-constify-page_counter_read-and-page_counter_margin.patch mm-memcontrol-constify-the-reclaim-protection-helpers.patch mm-memcontrol-constify-the-memcg-and-lruvec-stat-readers.patch mm-memcontrol-constify-the-swap-accounting-helpers.patch mm-memcontrol-constify-mem_cgroup_swappiness-and-mem_cgroup_get_max.patch mm-memcontrol-constify-the-zswap-and-socket-pressure-helpers.patch