[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202601191620.O1a0T02o-lkp@intel.com>
Date: Mon, 19 Jan 2026 17:16:38 +0800
From: kernel test robot <lkp@...el.com>
To: Zhiguo Zhou <zhiguo.zhou@...el.com>, linux-mm@...ck.org,
linux-fsdevel@...r.kernel.org
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
willy@...radead.org, akpm@...ux-foundation.org, david@...nel.org,
lorenzo.stoakes@...cle.com, Liam.Howlett@...cle.com, vbabka@...e.cz,
rppt@...nel.org, surenb@...gle.com, mhocko@...e.com,
muchun.song@...ux.dev, osalvador@...e.de,
linux-kernel@...r.kernel.org, tianyou.li@...el.com,
tim.c.chen@...ux.intel.com, gang.deng@...el.com,
Zhiguo Zhou <zhiguo.zhou@...el.com>
Subject: Re: [PATCH 1/2] mm/filemap: refactor __filemap_add_folio to separate
critical section
Hi Zhiguo,
kernel test robot noticed the following build errors:
[auto build test ERROR on akpm-mm/mm-everything]
url: https://github.com/intel-lab-lkp/linux/commits/Zhiguo-Zhou/mm-filemap-refactor-__filemap_add_folio-to-separate-critical-section/20260119-143737
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20260119065027.918085-2-zhiguo.zhou%40intel.com
patch subject: [PATCH 1/2] mm/filemap: refactor __filemap_add_folio to separate critical section
config: s390-randconfig-002-20260119 (https://download.01.org/0day-ci/archive/20260119/202601191620.O1a0T02o-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/20260119/202601191620.O1a0T02o-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601191620.O1a0T02o-lkp@intel.com/
All errors (new ones prefixed by >>):
>> mm/filemap.c:861:2: error: member reference type 'spinlock_t' (aka 'struct spinlock') is not a pointer; did you mean to use '.'?
861 | lockdep_assert_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:285:17: note: expanded from macro 'lockdep_assert_held'
285 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:52: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
>> mm/filemap.c:861:2: error: cannot take the address of an rvalue of type 'struct lockdep_map'
861 | lockdep_assert_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:285:17: note: expanded from macro 'lockdep_assert_held'
285 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:45: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
mm/filemap.c:941:3: error: member reference type 'spinlock_t' (aka 'struct spinlock') is not a pointer; did you mean to use '.'?
941 | lockdep_assert_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:285:17: note: expanded from macro 'lockdep_assert_held'
285 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:52: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
mm/filemap.c:941:3: error: cannot take the address of an rvalue of type 'struct lockdep_map'
941 | lockdep_assert_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:285:17: note: expanded from macro 'lockdep_assert_held'
285 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_NOT_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:45: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
mm/filemap.c:944:3: error: member reference type 'spinlock_t' (aka 'struct spinlock') is not a pointer; did you mean to use '.'?
944 | lockdep_assert_not_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:288:17: note: expanded from macro 'lockdep_assert_not_held'
288 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:52: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
mm/filemap.c:944:3: error: cannot take the address of an rvalue of type 'struct lockdep_map'
944 | lockdep_assert_not_held(xas->xa->xa_lock);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:288:17: note: expanded from macro 'lockdep_assert_not_held'
288 | lockdep_assert(lockdep_is_held(l) != LOCK_STATE_HELD)
| ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/lockdep.h:252:45: note: expanded from macro 'lockdep_is_held'
252 | #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
| ^
include/linux/lockdep.h:279:32: note: expanded from macro 'lockdep_assert'
279 | do { WARN_ON(debug_locks && !(cond)); } while (0)
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
include/asm-generic/bug.h:110:25: note: expanded from macro 'WARN_ON'
110 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
6 errors generated.
vim +861 mm/filemap.c
847
848 /*
849 * The critical section for storing a folio in an XArray.
850 * Context: Expects xas->xa->xa_lock to be held.
851 */
852 static void __filemap_add_folio_xa_locked(struct xa_state *xas,
853 struct address_space *mapping, struct folio *folio, void **shadowp)
854 {
855 bool huge;
856 long nr;
857 unsigned int forder = folio_order(folio);
858 int order = -1;
859 void *entry, *old = NULL;
860
> 861 lockdep_assert_held(xas->xa->xa_lock);
862
863 huge = folio_test_hugetlb(folio);
864 nr = folio_nr_pages(folio);
865
866 xas_for_each_conflict(xas, entry) {
867 old = entry;
868 if (!xa_is_value(entry)) {
869 xas_set_err(xas, -EEXIST);
870 return;
871 }
872 /*
873 * If a larger entry exists,
874 * it will be the first and only entry iterated.
875 */
876 if (order == -1)
877 order = xas_get_order(xas);
878 }
879
880 if (old) {
881 if (order > 0 && order > forder) {
882 unsigned int split_order = max(forder,
883 xas_try_split_min_order(order));
884
885 /* How to handle large swap entries? */
886 BUG_ON(shmem_mapping(mapping));
887
888 while (order > forder) {
889 xas_set_order(xas, xas->xa_index, split_order);
890 xas_try_split(xas, old, order);
891 if (xas_error(xas))
892 return;
893 order = split_order;
894 split_order =
895 max(xas_try_split_min_order(
896 split_order),
897 forder);
898 }
899 xas_reset(xas);
900 }
901 if (shadowp)
902 *shadowp = old;
903 }
904
905 xas_store(xas, folio);
906 if (xas_error(xas))
907 return;
908
909 mapping->nrpages += nr;
910
911 /* hugetlb pages do not participate in page cache accounting */
912 if (!huge) {
913 lruvec_stat_mod_folio(folio, NR_FILE_PAGES, nr);
914 if (folio_test_pmd_mappable(folio))
915 lruvec_stat_mod_folio(folio,
916 NR_FILE_THPS, nr);
917 }
918 }
919
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists