public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* Re: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
       [not found] <0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch@bytedance.com>
@ 2026-01-15 12:34 ` kernel test robot
  2026-01-16  8:16   ` Qi Zheng
  2026-01-16  6:29 ` kernel test robot
  1 sibling, 1 reply; 5+ messages in thread
From: kernel test robot @ 2026-01-15 12:34 UTC (permalink / raw)
  To: Qi Zheng; +Cc: llvm, oe-kbuild-all

Hi Qi,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20260114]
[cannot apply to akpm-mm/mm-everything brauner-vfs/vfs.all trace/for-next linus/master dennis-percpu/for-next v6.19-rc5 v6.19-rc4 v6.19-rc3 v6.19-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Qi-Zheng/mm-memcontrol-remove-dead-code-of-checking-parent-memory-cgroup/20260114-193921
base:   next-20260114
patch link:    https://lore.kernel.org/r/0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch%40bytedance.com
patch subject: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
config: powerpc64-randconfig-002-20260115 (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601152057.xgusZpKm-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:
   In file included from include/net/scm.h:9:
   In file included from include/linux/security.h:35:
   In file included from include/linux/bpf.h:32:
>> include/linux/memcontrol.h:772:14: error: use of undeclared identifier 'lruvec'
     772 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:773:13: error: use of undeclared identifier 'rcu'
     773 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:775:14: error: use of undeclared identifier 'lruvec'
     775 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:776:13: error: use of undeclared identifier 'rcu'
     776 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:779:14: error: use of undeclared identifier 'lruvec'
     779 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:780:13: error: use of undeclared identifier 'rcu'
     780 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1507:13: error: use of undeclared identifier 'rcu'
    1507 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1515:13: error: use of undeclared identifier 'rcu'
    1515 |         __releases(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1523:13: error: use of undeclared identifier 'rcu'
    1523 |         __releases(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1532:13: error: use of undeclared identifier 'rcu'
    1532 |         __releases(rcu)
         |                    ^~~
   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:
   In file included from include/net/scm.h:13:
   In file included from include/net/compat.h:8:
   include/linux/compat.h:454:22: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
     454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
         |                             ^        ~
   arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
      18 |         unsigned long sig[_NSIG_WORDS];
         |         ^
   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:
   In file included from include/net/scm.h:13:
   In file included from include/net/compat.h:8:
   include/linux/compat.h:454:10: warning: array index 7 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
     454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
         |                 ^     ~
   include/linux/compat.h:130:2: note: array 'sig' declared here
     130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
         |         ^
   include/linux/compat.h:454:42: warning: array index 6 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
     454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
         |                                                 ^     ~
   include/linux/compat.h:130:2: note: array 'sig' declared here
     130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
         |         ^
   include/linux/compat.h:454:53: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
     454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
         |                                                            ^        ~
   arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
      18 |         unsigned long sig[_NSIG_WORDS];
         |         ^
   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:
   In file included from include/net/scm.h:13:
   In file included from include/net/compat.h:8:
   include/linux/compat.h:456:22: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
     456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
         |                             ^        ~
   arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
      18 |         unsigned long sig[_NSIG_WORDS];
         |         ^
   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:
   In file included from include/net/scm.h:13:
   In file included from include/net/compat.h:8:
   include/linux/compat.h:456:10: warning: array index 5 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
     456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
         |                 ^     ~
   include/linux/compat.h:130:2: note: array 'sig' declared here
     130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
         |         ^
   include/linux/compat.h:456:42: warning: array index 4 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
     456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
         |                                                 ^     ~
   include/linux/compat.h:130:2: note: array 'sig' declared here
     130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
         |         ^
   include/linux/compat.h:456:53: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
     456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
         |                                                            ^        ~
   arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
      18 |         unsigned long sig[_NSIG_WORDS];
         |         ^
   In file included from crypto/ahash.c:26:
   In file included from include/net/netlink.h:6:
   In file included from include/linux/netlink.h:9:


vim +/lruvec +772 include/linux/memcontrol.h

   770	
   771	struct lruvec *folio_lruvec_lock(struct folio *folio);
 > 772		__acquires(&lruvec->lru_lock)
   773		__acquires(rcu)
   774	struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
   775		__acquires(&lruvec->lru_lock)
   776		__acquires(rcu)
   777	struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
   778							unsigned long *flags);
   779		__acquires(&lruvec->lru_lock)
   780		__acquires(rcu)
   781	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
       [not found] <0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch@bytedance.com>
  2026-01-15 12:34 ` [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock kernel test robot
@ 2026-01-16  6:29 ` kernel test robot
  1 sibling, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-01-16  6:29 UTC (permalink / raw)
  To: Qi Zheng; +Cc: llvm, oe-kbuild-all

Hi Qi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on next-20260115]
[cannot apply to akpm-mm/mm-everything brauner-vfs/vfs.all trace/for-next linus/master dennis-percpu/for-next v6.19-rc5 v6.19-rc4 v6.19-rc3 v6.19-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Qi-Zheng/mm-memcontrol-remove-dead-code-of-checking-parent-memory-cgroup/20260115-224607
base:   next-20260115
patch link:    https://lore.kernel.org/r/0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch%40bytedance.com
patch subject: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260116/202601161444.lDjWS5Wf-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260116/202601161444.lDjWS5Wf-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601161444.lDjWS5Wf-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from kernel/sched/core.c:16:
   In file included from include/linux/syscalls_api.h:1:
   In file included from include/linux/syscalls.h:95:
   In file included from include/trace/syscall.h:7:
   In file included from include/linux/trace_events.h:10:
   In file included from include/linux/perf_event.h:53:
   In file included from include/linux/security.h:35:
   In file included from include/linux/bpf.h:32:
   include/linux/memcontrol.h:772:14: error: use of undeclared identifier 'lruvec'
     772 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:773:13: error: use of undeclared identifier 'rcu'
     773 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:775:14: error: use of undeclared identifier 'lruvec'
     775 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:776:13: error: use of undeclared identifier 'rcu'
     776 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:779:14: error: use of undeclared identifier 'lruvec'
     779 |         __acquires(&lruvec->lru_lock)
         |                     ^~~~~~
   include/linux/memcontrol.h:780:13: error: use of undeclared identifier 'rcu'
     780 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1507:13: error: use of undeclared identifier 'rcu'
    1507 |         __acquires(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1515:13: error: use of undeclared identifier 'rcu'
    1515 |         __releases(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1523:13: error: use of undeclared identifier 'rcu'
    1523 |         __releases(rcu)
         |                    ^~~
   include/linux/memcontrol.h:1532:13: error: use of undeclared identifier 'rcu'
    1532 |         __releases(rcu)
         |                    ^~~
   In file included from kernel/sched/core.c:83:
   In file included from arch/sparc/include/asm/tlb.h:5:
   In file included from arch/sparc/include/asm/tlb_64.h:5:
   include/linux/swap.h:333:14: error: use of undeclared identifier 'rcu'
     333 |                 __releases(rcu)
         |                            ^~~
>> kernel/sched/core.c:7772:12: warning: array index -1 is before the beginning of the array [-Warray-bounds]
    7772 |                                        preempt_modes[preempt_dynamic_mode] : "undef",
         |                                        ^             ~~~~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:7747:1: note: array 'preempt_modes' declared here
    7747 | const char *preempt_modes[] = {
         | ^
   1 warning and 11 errors generated.


vim +7772 kernel/sched/core.c

8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7750  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7751  const char *preempt_model_str(void)
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7752  {
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7753  	bool brace = IS_ENABLED(CONFIG_PREEMPT_RT) &&
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7754  		(IS_ENABLED(CONFIG_PREEMPT_DYNAMIC) ||
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7755  		 IS_ENABLED(CONFIG_PREEMPT_LAZY));
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7756  	static char buf[128];
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7757  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7758  	if (IS_ENABLED(CONFIG_PREEMPT_BUILD)) {
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7759  		struct seq_buf s;
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7760  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7761  		seq_buf_init(&s, buf, sizeof(buf));
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7762  		seq_buf_puts(&s, "PREEMPT");
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7763  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7764  		if (IS_ENABLED(CONFIG_PREEMPT_RT))
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7765  			seq_buf_printf(&s, "%sRT%s",
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7766  				       brace ? "_{" : "_",
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7767  				       brace ? "," : "");
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7768  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7769  		if (IS_ENABLED(CONFIG_PREEMPT_DYNAMIC)) {
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7770  			seq_buf_printf(&s, "(%s)%s",
3ebb1b6522392f6 Thomas Weißschuh          2025-06-26  7771  				       preempt_dynamic_mode >= 0 ?
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14 @7772  				       preempt_modes[preempt_dynamic_mode] : "undef",
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7773  				       brace ? "}" : "");
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7774  			return seq_buf_str(&s);
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7775  		}
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7776  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7777  		if (IS_ENABLED(CONFIG_PREEMPT_LAZY)) {
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7778  			seq_buf_printf(&s, "LAZY%s",
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7779  				       brace ? "}" : "");
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7780  			return seq_buf_str(&s);
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7781  		}
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7782  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7783  		return seq_buf_str(&s);
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7784  	}
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7785  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7786  	if (IS_ENABLED(CONFIG_PREEMPT_VOLUNTARY_BUILD))
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7787  		return "VOLUNTARY";
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7788  
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7789  	return "NONE";
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7790  }
8bdc5daaa01e305 Sebastian Andrzej Siewior 2025-03-14  7791  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
  2026-01-15 12:34 ` [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock kernel test robot
@ 2026-01-16  8:16   ` Qi Zheng
  2026-01-16 10:41     ` Philip Li
  0 siblings, 1 reply; 5+ messages in thread
From: Qi Zheng @ 2026-01-16  8:16 UTC (permalink / raw)
  To: kernel test robot; +Cc: llvm, oe-kbuild-all

Hi,

The compilation problem I see in the report occurs under the following
configuration:

1. enable CONFIG_WARN_CONTEXT_ANALYSIS_ALL
2. make CC=clang bzImage

Could you please test whether the following fixes can resolve the
compilation issue?

Thanks!

```
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index e0b84b109b7ac..f28c5ef9bf604 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -742,15 +742,9 @@ struct mem_cgroup *get_mem_cgroup_from_current(void);
  struct mem_cgroup *get_mem_cgroup_from_folio(struct folio *folio);

  struct lruvec *folio_lruvec_lock(struct folio *folio);
-       __acquires(&lruvec->lru_lock)
-       __acquires(rcu)
  struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
-       __acquires(&lruvec->lru_lock)
-       __acquires(rcu)
  struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
                                                 unsigned long *flags);
-       __acquires(&lruvec->lru_lock)
-       __acquires(rcu)

  static inline
  struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *css){
@@ -1477,38 +1471,10 @@ static inline struct lruvec 
*parent_lruvec(struct lruvec *lruvec)
         return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));
  }

-static inline void lruvec_lock_irq(struct lruvec *lruvec)
-       __acquires(&lruvec->lru_lock)
-       __acquires(rcu)
-{
-       rcu_read_lock();
-       spin_lock_irq(&lruvec->lru_lock);
-}
-
-static inline void lruvec_unlock(struct lruvec *lruvec)
-       __releases(&lruvec->lru_lock)
-       __releases(rcu)
-{
-       spin_unlock(&lruvec->lru_lock);
-       rcu_read_unlock();
-}
-
-static inline void lruvec_unlock_irq(struct lruvec *lruvec)
-       __releases(&lruvec->lru_lock)
-       __releases(rcu)
-{
-       spin_unlock_irq(&lruvec->lru_lock);
-       rcu_read_unlock();
-}
-
-static inline void lruvec_unlock_irqrestore(struct lruvec *lruvec,
-               unsigned long flags)
-       __releases(&lruvec->lru_lock)
-       __releases(rcu)
-{
-       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
-       rcu_read_unlock();
-}
+void lruvec_lock_irq(struct lruvec *lruvec);
+void lruvec_unlock(struct lruvec *lruvec);
+void lruvec_unlock_irq(struct lruvec *lruvec);
+void lruvec_unlock_irqrestore(struct lruvec *lruvec, unsigned long flags);

  /* Test requires a stable folio->memcg binding, see folio_memcg() */
  static inline bool folio_matches_lruvec(struct folio *folio,
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 4449d1f371a56..77a6a9fa11981 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -328,9 +328,7 @@ extern unsigned long totalreserve_pages;

  /* linux/mm/swap.c */
  void lru_note_cost_unlock_irq(struct lruvec *lruvec, bool file,
-               unsigned int nr_io, unsigned int nr_rotated)
-               __releases(lruvec->lru_lock);
-               __releases(rcu)
+               unsigned int nr_io, unsigned int nr_rotated);
  void lru_note_cost_refault(struct folio *);
  void folio_add_lru(struct folio *);
  void folio_add_lru_vma(struct folio *, struct vm_area_struct *);
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index c303c483f55a4..8907c9ea33bbc 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1313,6 +1313,39 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
         }
  }

+void lruvec_lock_irq(struct lruvec *lruvec)
+       __acquires(&lruvec->lru_lock)
+       __acquires(rcu)
+{
+       rcu_read_lock();
+       spin_lock_irq(&lruvec->lru_lock);
+}
+
+void lruvec_unlock(struct lruvec *lruvec)
+       __releases(&lruvec->lru_lock)
+       __releases(rcu)
+{
+       spin_unlock(&lruvec->lru_lock);
+       rcu_read_unlock();
+}
+
+void lruvec_unlock_irq(struct lruvec *lruvec)
+       __releases(&lruvec->lru_lock)
+       __releases(rcu)
+{
+       spin_unlock_irq(&lruvec->lru_lock);
+       rcu_read_unlock();
+}
+
+void lruvec_unlock_irqrestore(struct lruvec *lruvec,
+               unsigned long flags)
+       __releases(&lruvec->lru_lock)
+       __releases(rcu)
+{
+       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
+       rcu_read_unlock();
+}
+
  /**
   * folio_lruvec_lock - Lock the lruvec for a folio.
   * @folio: Pointer to the folio.

```

On 1/15/26 8:34 PM, kernel test robot wrote:
> Hi Qi,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on next-20260114]
> [cannot apply to akpm-mm/mm-everything brauner-vfs/vfs.all trace/for-next linus/master dennis-percpu/for-next v6.19-rc5 v6.19-rc4 v6.19-rc3 v6.19-rc5]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Qi-Zheng/mm-memcontrol-remove-dead-code-of-checking-parent-memory-cgroup/20260114-193921
> base:   next-20260114
> patch link:    https://lore.kernel.org/r/0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch%40bytedance.com
> patch subject: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
> config: powerpc64-randconfig-002-20260115 (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/config)
> compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202601152057.xgusZpKm-lkp@intel.com/
> 
> All errors (new ones prefixed by >>):
> 
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
>     In file included from include/net/scm.h:9:
>     In file included from include/linux/security.h:35:
>     In file included from include/linux/bpf.h:32:
>>> include/linux/memcontrol.h:772:14: error: use of undeclared identifier 'lruvec'
>       772 |         __acquires(&lruvec->lru_lock)
>           |                     ^~~~~~
>     include/linux/memcontrol.h:773:13: error: use of undeclared identifier 'rcu'
>       773 |         __acquires(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:775:14: error: use of undeclared identifier 'lruvec'
>       775 |         __acquires(&lruvec->lru_lock)
>           |                     ^~~~~~
>     include/linux/memcontrol.h:776:13: error: use of undeclared identifier 'rcu'
>       776 |         __acquires(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:779:14: error: use of undeclared identifier 'lruvec'
>       779 |         __acquires(&lruvec->lru_lock)
>           |                     ^~~~~~
>     include/linux/memcontrol.h:780:13: error: use of undeclared identifier 'rcu'
>       780 |         __acquires(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:1507:13: error: use of undeclared identifier 'rcu'
>      1507 |         __acquires(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:1515:13: error: use of undeclared identifier 'rcu'
>      1515 |         __releases(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:1523:13: error: use of undeclared identifier 'rcu'
>      1523 |         __releases(rcu)
>           |                    ^~~
>     include/linux/memcontrol.h:1532:13: error: use of undeclared identifier 'rcu'
>      1532 |         __releases(rcu)
>           |                    ^~~
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
>     In file included from include/net/scm.h:13:
>     In file included from include/net/compat.h:8:
>     include/linux/compat.h:454:22: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>           |                             ^        ~
>     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>        18 |         unsigned long sig[_NSIG_WORDS];
>           |         ^
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
>     In file included from include/net/scm.h:13:
>     In file included from include/net/compat.h:8:
>     include/linux/compat.h:454:10: warning: array index 7 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>           |                 ^     ~
>     include/linux/compat.h:130:2: note: array 'sig' declared here
>       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>           |         ^
>     include/linux/compat.h:454:42: warning: array index 6 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>           |                                                 ^     ~
>     include/linux/compat.h:130:2: note: array 'sig' declared here
>       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>           |         ^
>     include/linux/compat.h:454:53: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>           |                                                            ^        ~
>     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>        18 |         unsigned long sig[_NSIG_WORDS];
>           |         ^
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
>     In file included from include/net/scm.h:13:
>     In file included from include/net/compat.h:8:
>     include/linux/compat.h:456:22: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>           |                             ^        ~
>     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>        18 |         unsigned long sig[_NSIG_WORDS];
>           |         ^
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
>     In file included from include/net/scm.h:13:
>     In file included from include/net/compat.h:8:
>     include/linux/compat.h:456:10: warning: array index 5 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>           |                 ^     ~
>     include/linux/compat.h:130:2: note: array 'sig' declared here
>       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>           |         ^
>     include/linux/compat.h:456:42: warning: array index 4 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>           |                                                 ^     ~
>     include/linux/compat.h:130:2: note: array 'sig' declared here
>       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>           |         ^
>     include/linux/compat.h:456:53: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>           |                                                            ^        ~
>     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>        18 |         unsigned long sig[_NSIG_WORDS];
>           |         ^
>     In file included from crypto/ahash.c:26:
>     In file included from include/net/netlink.h:6:
>     In file included from include/linux/netlink.h:9:
> 
> 
> vim +/lruvec +772 include/linux/memcontrol.h
> 
>     770	
>     771	struct lruvec *folio_lruvec_lock(struct folio *folio);
>   > 772		__acquires(&lruvec->lru_lock)
>     773		__acquires(rcu)
>     774	struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
>     775		__acquires(&lruvec->lru_lock)
>     776		__acquires(rcu)
>     777	struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
>     778							unsigned long *flags);
>     779		__acquires(&lruvec->lru_lock)
>     780		__acquires(rcu)
>     781	
> 


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
  2026-01-16  8:16   ` Qi Zheng
@ 2026-01-16 10:41     ` Philip Li
  2026-01-16 11:06       ` Qi Zheng
  0 siblings, 1 reply; 5+ messages in thread
From: Philip Li @ 2026-01-16 10:41 UTC (permalink / raw)
  To: Qi Zheng; +Cc: kernel test robot, llvm, oe-kbuild-all

On Fri, Jan 16, 2026 at 04:16:31PM +0800, Qi Zheng wrote:
> Hi,
> 
> The compilation problem I see in the report occurs under the following
> configuration:
> 
> 1. enable CONFIG_WARN_CONTEXT_ANALYSIS_ALL
> 2. make CC=clang bzImage
> 
> Could you please test whether the following fixes can resolve the
> compilation issue?

Hi Zheng, is it ok to give a try to use the reproduce steps in the original
report [1] to verify the fix? As for now, we haven't support the auto verification
for the on demand request yet.

[1] https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce

> 
> Thanks!
> 
> ```
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index e0b84b109b7ac..f28c5ef9bf604 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -742,15 +742,9 @@ struct mem_cgroup *get_mem_cgroup_from_current(void);
>  struct mem_cgroup *get_mem_cgroup_from_folio(struct folio *folio);
> 
>  struct lruvec *folio_lruvec_lock(struct folio *folio);
> -       __acquires(&lruvec->lru_lock)
> -       __acquires(rcu)
>  struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
> -       __acquires(&lruvec->lru_lock)
> -       __acquires(rcu)
>  struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
>                                                 unsigned long *flags);
> -       __acquires(&lruvec->lru_lock)
> -       __acquires(rcu)
> 
>  static inline
>  struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *css){
> @@ -1477,38 +1471,10 @@ static inline struct lruvec *parent_lruvec(struct
> lruvec *lruvec)
>         return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));
>  }
> 
> -static inline void lruvec_lock_irq(struct lruvec *lruvec)
> -       __acquires(&lruvec->lru_lock)
> -       __acquires(rcu)
> -{
> -       rcu_read_lock();
> -       spin_lock_irq(&lruvec->lru_lock);
> -}
> -
> -static inline void lruvec_unlock(struct lruvec *lruvec)
> -       __releases(&lruvec->lru_lock)
> -       __releases(rcu)
> -{
> -       spin_unlock(&lruvec->lru_lock);
> -       rcu_read_unlock();
> -}
> -
> -static inline void lruvec_unlock_irq(struct lruvec *lruvec)
> -       __releases(&lruvec->lru_lock)
> -       __releases(rcu)
> -{
> -       spin_unlock_irq(&lruvec->lru_lock);
> -       rcu_read_unlock();
> -}
> -
> -static inline void lruvec_unlock_irqrestore(struct lruvec *lruvec,
> -               unsigned long flags)
> -       __releases(&lruvec->lru_lock)
> -       __releases(rcu)
> -{
> -       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
> -       rcu_read_unlock();
> -}
> +void lruvec_lock_irq(struct lruvec *lruvec);
> +void lruvec_unlock(struct lruvec *lruvec);
> +void lruvec_unlock_irq(struct lruvec *lruvec);
> +void lruvec_unlock_irqrestore(struct lruvec *lruvec, unsigned long flags);
> 
>  /* Test requires a stable folio->memcg binding, see folio_memcg() */
>  static inline bool folio_matches_lruvec(struct folio *folio,
> diff --git a/include/linux/swap.h b/include/linux/swap.h
> index 4449d1f371a56..77a6a9fa11981 100644
> --- a/include/linux/swap.h
> +++ b/include/linux/swap.h
> @@ -328,9 +328,7 @@ extern unsigned long totalreserve_pages;
> 
>  /* linux/mm/swap.c */
>  void lru_note_cost_unlock_irq(struct lruvec *lruvec, bool file,
> -               unsigned int nr_io, unsigned int nr_rotated)
> -               __releases(lruvec->lru_lock);
> -               __releases(rcu)
> +               unsigned int nr_io, unsigned int nr_rotated);
>  void lru_note_cost_refault(struct folio *);
>  void folio_add_lru(struct folio *);
>  void folio_add_lru_vma(struct folio *, struct vm_area_struct *);
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index c303c483f55a4..8907c9ea33bbc 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -1313,6 +1313,39 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
>         }
>  }
> 
> +void lruvec_lock_irq(struct lruvec *lruvec)
> +       __acquires(&lruvec->lru_lock)
> +       __acquires(rcu)
> +{
> +       rcu_read_lock();
> +       spin_lock_irq(&lruvec->lru_lock);
> +}
> +
> +void lruvec_unlock(struct lruvec *lruvec)
> +       __releases(&lruvec->lru_lock)
> +       __releases(rcu)
> +{
> +       spin_unlock(&lruvec->lru_lock);
> +       rcu_read_unlock();
> +}
> +
> +void lruvec_unlock_irq(struct lruvec *lruvec)
> +       __releases(&lruvec->lru_lock)
> +       __releases(rcu)
> +{
> +       spin_unlock_irq(&lruvec->lru_lock);
> +       rcu_read_unlock();
> +}
> +
> +void lruvec_unlock_irqrestore(struct lruvec *lruvec,
> +               unsigned long flags)
> +       __releases(&lruvec->lru_lock)
> +       __releases(rcu)
> +{
> +       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
> +       rcu_read_unlock();
> +}
> +
>  /**
>   * folio_lruvec_lock - Lock the lruvec for a folio.
>   * @folio: Pointer to the folio.
> 
> ```
> 
> On 1/15/26 8:34 PM, kernel test robot wrote:
> > Hi Qi,
> > 
> > kernel test robot noticed the following build errors:
> > 
> > [auto build test ERROR on next-20260114]
> > [cannot apply to akpm-mm/mm-everything brauner-vfs/vfs.all trace/for-next linus/master dennis-percpu/for-next v6.19-rc5 v6.19-rc4 v6.19-rc3 v6.19-rc5]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> > 
> > url:    https://github.com/intel-lab-lkp/linux/commits/Qi-Zheng/mm-memcontrol-remove-dead-code-of-checking-parent-memory-cgroup/20260114-193921
> > base:   next-20260114
> > patch link:    https://lore.kernel.org/r/0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch%40bytedance.com
> > patch subject: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
> > config: powerpc64-randconfig-002-20260115 (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/config)
> > compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce)
> > 
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202601152057.xgusZpKm-lkp@intel.com/
> > 
> > All errors (new ones prefixed by >>):
> > 
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> >     In file included from include/net/scm.h:9:
> >     In file included from include/linux/security.h:35:
> >     In file included from include/linux/bpf.h:32:
> > > > include/linux/memcontrol.h:772:14: error: use of undeclared identifier 'lruvec'
> >       772 |         __acquires(&lruvec->lru_lock)
> >           |                     ^~~~~~
> >     include/linux/memcontrol.h:773:13: error: use of undeclared identifier 'rcu'
> >       773 |         __acquires(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:775:14: error: use of undeclared identifier 'lruvec'
> >       775 |         __acquires(&lruvec->lru_lock)
> >           |                     ^~~~~~
> >     include/linux/memcontrol.h:776:13: error: use of undeclared identifier 'rcu'
> >       776 |         __acquires(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:779:14: error: use of undeclared identifier 'lruvec'
> >       779 |         __acquires(&lruvec->lru_lock)
> >           |                     ^~~~~~
> >     include/linux/memcontrol.h:780:13: error: use of undeclared identifier 'rcu'
> >       780 |         __acquires(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:1507:13: error: use of undeclared identifier 'rcu'
> >      1507 |         __acquires(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:1515:13: error: use of undeclared identifier 'rcu'
> >      1515 |         __releases(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:1523:13: error: use of undeclared identifier 'rcu'
> >      1523 |         __releases(rcu)
> >           |                    ^~~
> >     include/linux/memcontrol.h:1532:13: error: use of undeclared identifier 'rcu'
> >      1532 |         __releases(rcu)
> >           |                    ^~~
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> >     In file included from include/net/scm.h:13:
> >     In file included from include/net/compat.h:8:
> >     include/linux/compat.h:454:22: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
> >       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
> >           |                             ^        ~
> >     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
> >        18 |         unsigned long sig[_NSIG_WORDS];
> >           |         ^
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> >     In file included from include/net/scm.h:13:
> >     In file included from include/net/compat.h:8:
> >     include/linux/compat.h:454:10: warning: array index 7 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
> >       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
> >           |                 ^     ~
> >     include/linux/compat.h:130:2: note: array 'sig' declared here
> >       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
> >           |         ^
> >     include/linux/compat.h:454:42: warning: array index 6 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
> >       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
> >           |                                                 ^     ~
> >     include/linux/compat.h:130:2: note: array 'sig' declared here
> >       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
> >           |         ^
> >     include/linux/compat.h:454:53: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
> >       454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
> >           |                                                            ^        ~
> >     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
> >        18 |         unsigned long sig[_NSIG_WORDS];
> >           |         ^
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> >     In file included from include/net/scm.h:13:
> >     In file included from include/net/compat.h:8:
> >     include/linux/compat.h:456:22: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
> >       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
> >           |                             ^        ~
> >     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
> >        18 |         unsigned long sig[_NSIG_WORDS];
> >           |         ^
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> >     In file included from include/net/scm.h:13:
> >     In file included from include/net/compat.h:8:
> >     include/linux/compat.h:456:10: warning: array index 5 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
> >       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
> >           |                 ^     ~
> >     include/linux/compat.h:130:2: note: array 'sig' declared here
> >       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
> >           |         ^
> >     include/linux/compat.h:456:42: warning: array index 4 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
> >       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
> >           |                                                 ^     ~
> >     include/linux/compat.h:130:2: note: array 'sig' declared here
> >       130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
> >           |         ^
> >     include/linux/compat.h:456:53: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
> >       456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
> >           |                                                            ^        ~
> >     arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
> >        18 |         unsigned long sig[_NSIG_WORDS];
> >           |         ^
> >     In file included from crypto/ahash.c:26:
> >     In file included from include/net/netlink.h:6:
> >     In file included from include/linux/netlink.h:9:
> > 
> > 
> > vim +/lruvec +772 include/linux/memcontrol.h
> > 
> >     770	
> >     771	struct lruvec *folio_lruvec_lock(struct folio *folio);
> >   > 772		__acquires(&lruvec->lru_lock)
> >     773		__acquires(rcu)
> >     774	struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
> >     775		__acquires(&lruvec->lru_lock)
> >     776		__acquires(rcu)
> >     777	struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
> >     778							unsigned long *flags);
> >     779		__acquires(&lruvec->lru_lock)
> >     780		__acquires(rcu)
> >     781	
> > 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
  2026-01-16 10:41     ` Philip Li
@ 2026-01-16 11:06       ` Qi Zheng
  0 siblings, 0 replies; 5+ messages in thread
From: Qi Zheng @ 2026-01-16 11:06 UTC (permalink / raw)
  To: Philip Li; +Cc: kernel test robot, llvm, oe-kbuild-all



On 1/16/26 6:41 PM, Philip Li wrote:
> On Fri, Jan 16, 2026 at 04:16:31PM +0800, Qi Zheng wrote:
>> Hi,
>>
>> The compilation problem I see in the report occurs under the following
>> configuration:
>>
>> 1. enable CONFIG_WARN_CONTEXT_ANALYSIS_ALL
>> 2. make CC=clang bzImage
>>
>> Could you please test whether the following fixes can resolve the
>> compilation issue?
> 
> Hi Zheng, is it ok to give a try to use the reproduce steps in the original
> report [1] to verify the fix? As for now, we haven't support the auto verification
> for the on demand request yet.

OK, I found a Debian 12 machine and reproduced this compilation error
with the following configuration:

1. enable CONFIG_WARN_CONTEXT_ANALYSIS_ALL
2. make CC=clang bzImage (clang version == 22)

Thank you for reporting this issue!

> 
> [1] https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce
> 
>>
>> Thanks!
>>
>> ```
>> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
>> index e0b84b109b7ac..f28c5ef9bf604 100644
>> --- a/include/linux/memcontrol.h
>> +++ b/include/linux/memcontrol.h
>> @@ -742,15 +742,9 @@ struct mem_cgroup *get_mem_cgroup_from_current(void);
>>   struct mem_cgroup *get_mem_cgroup_from_folio(struct folio *folio);
>>
>>   struct lruvec *folio_lruvec_lock(struct folio *folio);
>> -       __acquires(&lruvec->lru_lock)
>> -       __acquires(rcu)
>>   struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
>> -       __acquires(&lruvec->lru_lock)
>> -       __acquires(rcu)
>>   struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
>>                                                  unsigned long *flags);
>> -       __acquires(&lruvec->lru_lock)
>> -       __acquires(rcu)
>>
>>   static inline
>>   struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *css){
>> @@ -1477,38 +1471,10 @@ static inline struct lruvec *parent_lruvec(struct
>> lruvec *lruvec)
>>          return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));
>>   }
>>
>> -static inline void lruvec_lock_irq(struct lruvec *lruvec)
>> -       __acquires(&lruvec->lru_lock)
>> -       __acquires(rcu)
>> -{
>> -       rcu_read_lock();
>> -       spin_lock_irq(&lruvec->lru_lock);
>> -}
>> -
>> -static inline void lruvec_unlock(struct lruvec *lruvec)
>> -       __releases(&lruvec->lru_lock)
>> -       __releases(rcu)
>> -{
>> -       spin_unlock(&lruvec->lru_lock);
>> -       rcu_read_unlock();
>> -}
>> -
>> -static inline void lruvec_unlock_irq(struct lruvec *lruvec)
>> -       __releases(&lruvec->lru_lock)
>> -       __releases(rcu)
>> -{
>> -       spin_unlock_irq(&lruvec->lru_lock);
>> -       rcu_read_unlock();
>> -}
>> -
>> -static inline void lruvec_unlock_irqrestore(struct lruvec *lruvec,
>> -               unsigned long flags)
>> -       __releases(&lruvec->lru_lock)
>> -       __releases(rcu)
>> -{
>> -       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
>> -       rcu_read_unlock();
>> -}
>> +void lruvec_lock_irq(struct lruvec *lruvec);
>> +void lruvec_unlock(struct lruvec *lruvec);
>> +void lruvec_unlock_irq(struct lruvec *lruvec);
>> +void lruvec_unlock_irqrestore(struct lruvec *lruvec, unsigned long flags);
>>
>>   /* Test requires a stable folio->memcg binding, see folio_memcg() */
>>   static inline bool folio_matches_lruvec(struct folio *folio,
>> diff --git a/include/linux/swap.h b/include/linux/swap.h
>> index 4449d1f371a56..77a6a9fa11981 100644
>> --- a/include/linux/swap.h
>> +++ b/include/linux/swap.h
>> @@ -328,9 +328,7 @@ extern unsigned long totalreserve_pages;
>>
>>   /* linux/mm/swap.c */
>>   void lru_note_cost_unlock_irq(struct lruvec *lruvec, bool file,
>> -               unsigned int nr_io, unsigned int nr_rotated)
>> -               __releases(lruvec->lru_lock);
>> -               __releases(rcu)
>> +               unsigned int nr_io, unsigned int nr_rotated);
>>   void lru_note_cost_refault(struct folio *);
>>   void folio_add_lru(struct folio *);
>>   void folio_add_lru_vma(struct folio *, struct vm_area_struct *);
>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
>> index c303c483f55a4..8907c9ea33bbc 100644
>> --- a/mm/memcontrol.c
>> +++ b/mm/memcontrol.c
>> @@ -1313,6 +1313,39 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
>>          }
>>   }
>>
>> +void lruvec_lock_irq(struct lruvec *lruvec)
>> +       __acquires(&lruvec->lru_lock)
>> +       __acquires(rcu)
>> +{
>> +       rcu_read_lock();
>> +       spin_lock_irq(&lruvec->lru_lock);
>> +}
>> +
>> +void lruvec_unlock(struct lruvec *lruvec)
>> +       __releases(&lruvec->lru_lock)
>> +       __releases(rcu)
>> +{
>> +       spin_unlock(&lruvec->lru_lock);
>> +       rcu_read_unlock();
>> +}
>> +
>> +void lruvec_unlock_irq(struct lruvec *lruvec)
>> +       __releases(&lruvec->lru_lock)
>> +       __releases(rcu)
>> +{
>> +       spin_unlock_irq(&lruvec->lru_lock);
>> +       rcu_read_unlock();
>> +}
>> +
>> +void lruvec_unlock_irqrestore(struct lruvec *lruvec,
>> +               unsigned long flags)
>> +       __releases(&lruvec->lru_lock)
>> +       __releases(rcu)
>> +{
>> +       spin_unlock_irqrestore(&lruvec->lru_lock, flags);
>> +       rcu_read_unlock();
>> +}
>> +
>>   /**
>>    * folio_lruvec_lock - Lock the lruvec for a folio.
>>    * @folio: Pointer to the folio.
>>
>> ```
>>
>> On 1/15/26 8:34 PM, kernel test robot wrote:
>>> Hi Qi,
>>>
>>> kernel test robot noticed the following build errors:
>>>
>>> [auto build test ERROR on next-20260114]
>>> [cannot apply to akpm-mm/mm-everything brauner-vfs/vfs.all trace/for-next linus/master dennis-percpu/for-next v6.19-rc5 v6.19-rc4 v6.19-rc3 v6.19-rc5]
>>> [If your patch is applied to the wrong git tree, kindly drop us a note.
>>> And when submitting patch, we suggest to use '--base' as documented in
>>> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>>>
>>> url:    https://github.com/intel-lab-lkp/linux/commits/Qi-Zheng/mm-memcontrol-remove-dead-code-of-checking-parent-memory-cgroup/20260114-193921
>>> base:   next-20260114
>>> patch link:    https://lore.kernel.org/r/0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch%40bytedance.com
>>> patch subject: [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock
>>> config: powerpc64-randconfig-002-20260115 (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/config)
>>> compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
>>> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601152057.xgusZpKm-lkp@intel.com/reproduce)
>>>
>>> If you fix the issue in a separate patch/commit (i.e. not just a new version of
>>> the same patch/commit), kindly add following tags
>>> | Reported-by: kernel test robot <lkp@intel.com>
>>> | Closes: https://lore.kernel.org/oe-kbuild-all/202601152057.xgusZpKm-lkp@intel.com/
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>      In file included from include/net/scm.h:9:
>>>      In file included from include/linux/security.h:35:
>>>      In file included from include/linux/bpf.h:32:
>>>>> include/linux/memcontrol.h:772:14: error: use of undeclared identifier 'lruvec'
>>>        772 |         __acquires(&lruvec->lru_lock)
>>>            |                     ^~~~~~
>>>      include/linux/memcontrol.h:773:13: error: use of undeclared identifier 'rcu'
>>>        773 |         __acquires(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:775:14: error: use of undeclared identifier 'lruvec'
>>>        775 |         __acquires(&lruvec->lru_lock)
>>>            |                     ^~~~~~
>>>      include/linux/memcontrol.h:776:13: error: use of undeclared identifier 'rcu'
>>>        776 |         __acquires(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:779:14: error: use of undeclared identifier 'lruvec'
>>>        779 |         __acquires(&lruvec->lru_lock)
>>>            |                     ^~~~~~
>>>      include/linux/memcontrol.h:780:13: error: use of undeclared identifier 'rcu'
>>>        780 |         __acquires(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:1507:13: error: use of undeclared identifier 'rcu'
>>>       1507 |         __acquires(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:1515:13: error: use of undeclared identifier 'rcu'
>>>       1515 |         __releases(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:1523:13: error: use of undeclared identifier 'rcu'
>>>       1523 |         __releases(rcu)
>>>            |                    ^~~
>>>      include/linux/memcontrol.h:1532:13: error: use of undeclared identifier 'rcu'
>>>       1532 |         __releases(rcu)
>>>            |                    ^~~
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>      In file included from include/net/scm.h:13:
>>>      In file included from include/net/compat.h:8:
>>>      include/linux/compat.h:454:22: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>>>        454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>>>            |                             ^        ~
>>>      arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>>>         18 |         unsigned long sig[_NSIG_WORDS];
>>>            |         ^
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>      In file included from include/net/scm.h:13:
>>>      In file included from include/net/compat.h:8:
>>>      include/linux/compat.h:454:10: warning: array index 7 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>>>        454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>>>            |                 ^     ~
>>>      include/linux/compat.h:130:2: note: array 'sig' declared here
>>>        130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>>>            |         ^
>>>      include/linux/compat.h:454:42: warning: array index 6 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>>>        454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>>>            |                                                 ^     ~
>>>      include/linux/compat.h:130:2: note: array 'sig' declared here
>>>        130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>>>            |         ^
>>>      include/linux/compat.h:454:53: warning: array index 3 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>>>        454 |         case 4: v.sig[7] = (set->sig[3] >> 32); v.sig[6] = set->sig[3];
>>>            |                                                            ^        ~
>>>      arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>>>         18 |         unsigned long sig[_NSIG_WORDS];
>>>            |         ^
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>      In file included from include/net/scm.h:13:
>>>      In file included from include/net/compat.h:8:
>>>      include/linux/compat.h:456:22: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>>>        456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>>>            |                             ^        ~
>>>      arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>>>         18 |         unsigned long sig[_NSIG_WORDS];
>>>            |         ^
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>      In file included from include/net/scm.h:13:
>>>      In file included from include/net/compat.h:8:
>>>      include/linux/compat.h:456:10: warning: array index 5 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>>>        456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>>>            |                 ^     ~
>>>      include/linux/compat.h:130:2: note: array 'sig' declared here
>>>        130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>>>            |         ^
>>>      include/linux/compat.h:456:42: warning: array index 4 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds]
>>>        456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>>>            |                                                 ^     ~
>>>      include/linux/compat.h:130:2: note: array 'sig' declared here
>>>        130 |         compat_sigset_word      sig[_COMPAT_NSIG_WORDS];
>>>            |         ^
>>>      include/linux/compat.h:456:53: warning: array index 2 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds]
>>>        456 |         case 3: v.sig[5] = (set->sig[2] >> 32); v.sig[4] = set->sig[2];
>>>            |                                                            ^        ~
>>>      arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here
>>>         18 |         unsigned long sig[_NSIG_WORDS];
>>>            |         ^
>>>      In file included from crypto/ahash.c:26:
>>>      In file included from include/net/netlink.h:6:
>>>      In file included from include/linux/netlink.h:9:
>>>
>>>
>>> vim +/lruvec +772 include/linux/memcontrol.h
>>>
>>>      770	
>>>      771	struct lruvec *folio_lruvec_lock(struct folio *folio);
>>>    > 772		__acquires(&lruvec->lru_lock)
>>>      773		__acquires(rcu)
>>>      774	struct lruvec *folio_lruvec_lock_irq(struct folio *folio);
>>>      775		__acquires(&lruvec->lru_lock)
>>>      776		__acquires(rcu)
>>>      777	struct lruvec *folio_lruvec_lock_irqsave(struct folio *folio,
>>>      778							unsigned long *flags);
>>>      779		__acquires(&lruvec->lru_lock)
>>>      780		__acquires(rcu)
>>>      781	
>>>
>>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-01-16 11:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <0252f9acc29d4b1e9b8252dc003aff065c8ac1f6.1768389889.git.zhengqi.arch@bytedance.com>
2026-01-15 12:34 ` [PATCH v3 24/30] mm: memcontrol: prepare for reparenting LRU pages for lruvec lock kernel test robot
2026-01-16  8:16   ` Qi Zheng
2026-01-16 10:41     ` Philip Li
2026-01-16 11:06       ` Qi Zheng
2026-01-16  6:29 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox