* [akpm-mm:mm-new 418/422] fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression @ 2026-01-20 9:10 kernel test robot 2026-01-20 10:56 ` Lorenzo Stoakes 0 siblings, 1 reply; 3+ messages in thread From: kernel test robot @ 2026-01-20 9:10 UTC (permalink / raw) To: Lorenzo Stoakes Cc: oe-kbuild-all, David Hildenbrand, Andrew Morton, Linux Memory Management List Hi Lorenzo, FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant. tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-new head: e4348a62bb1acacafcdeb149c9363291fae08c0c commit: ccbdd8044f13617fe9f2bce61aed556314544664 [418/422] mm: update all remaining mmap_prepare users to use vma_flags_t config: arm-randconfig-r131-20260120 (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-lkp@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 11.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-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/202601201701.IhxeGffs-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) >> fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression fs/orangefs/file.c: note: in included file (through arch/arm/include/asm/cacheflush.h, include/linux/cacheflush.h, include/linux/highmem.h, ...): include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression fs/orangefs/file.c:415:9: sparse: sparse: dereference of noderef expression include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression -- >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression fs/ramfs/file-nommu.c: note: in included file: include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression vim +414 fs/orangefs/file.c 397 398 /* 399 * Memory map a region of a file. 400 */ 401 static int orangefs_file_mmap_prepare(struct vm_area_desc *desc) 402 { 403 struct file *file = desc->file; 404 int ret; 405 406 ret = orangefs_revalidate_mapping(file_inode(file)); 407 if (ret) 408 return ret; 409 410 gossip_debug(GOSSIP_FILE_DEBUG, 411 "orangefs_file_mmap: called on %pD\n", file); 412 413 /* set the sequential readahead hint */ > 414 vma_desc_set_flags(desc, VMA_SEQ_READ_BIT); 415 vma_desc_clear_flags(desc, VMA_RAND_READ_BIT); 416 417 file_accessed(file); 418 desc->vm_ops = &orangefs_file_vm_ops; 419 return 0; 420 } 421 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [akpm-mm:mm-new 418/422] fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression 2026-01-20 9:10 [akpm-mm:mm-new 418/422] fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression kernel test robot @ 2026-01-20 10:56 ` Lorenzo Stoakes 2026-01-20 12:11 ` Lorenzo Stoakes 0 siblings, 1 reply; 3+ messages in thread From: Lorenzo Stoakes @ 2026-01-20 10:56 UTC (permalink / raw) To: kernel test robot Cc: oe-kbuild-all, David Hildenbrand, Andrew Morton, Linux Memory Management List On Tue, Jan 20, 2026 at 05:10:47PM +0800, kernel test robot wrote: > Hi Lorenzo, > > FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant. > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-new > head: e4348a62bb1acacafcdeb149c9363291fae08c0c > commit: ccbdd8044f13617fe9f2bce61aed556314544664 [418/422] mm: update all remaining mmap_prepare users to use vma_flags_t > config: arm-randconfig-r131-20260120 (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-lkp@intel.com/config) > compiler: arm-linux-gnueabi-gcc (GCC) 11.5.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-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/202601201701.IhxeGffs-lkp@intel.com/ > > sparse warnings: (new ones prefixed by >>) > >> fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression > fs/orangefs/file.c: note: in included file (through arch/arm/include/asm/cacheflush.h, include/linux/cacheflush.h, include/linux/highmem.h, ...): > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression > fs/orangefs/file.c:415:9: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression > -- > >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression > >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression > fs/ramfs/file-nommu.c: note: in included file: > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > vim +414 fs/orangefs/file.c > > 397 > 398 /* > 399 * Memory map a region of a file. > 400 */ > 401 static int orangefs_file_mmap_prepare(struct vm_area_desc *desc) > 402 { > 403 struct file *file = desc->file; > 404 int ret; > 405 > 406 ret = orangefs_revalidate_mapping(file_inode(file)); > 407 if (ret) > 408 return ret; > 409 > 410 gossip_debug(GOSSIP_FILE_DEBUG, > 411 "orangefs_file_mmap: called on %pD\n", file); > 412 > 413 /* set the sequential readahead hint */ > > 414 vma_desc_set_flags(desc, VMA_SEQ_READ_BIT); This is totally valid? vma_flags_set_mask() (which is ultimately invoked) uses ACCESS_PRIVATE() consistently. I wonder if mk_vma_flags() is an issue as it ultimately does (const vma_flag_t []){ VMA_SEQ_READ_BIT } here that then gets 'dereferenced' by array access in __mk_vma_flags(). Nothing is accessing __vma_flags in vma_flags_t directly however, it's all via ACCESS_PRIVATE() as far as I can tell? > 415 vma_desc_clear_flags(desc, VMA_RAND_READ_BIT); > 416 > 417 file_accessed(file); > 418 desc->vm_ops = &orangefs_file_vm_ops; > 419 return 0; > 420 } > 421 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki Thanks, Lorenzo ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [akpm-mm:mm-new 418/422] fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression 2026-01-20 10:56 ` Lorenzo Stoakes @ 2026-01-20 12:11 ` Lorenzo Stoakes 0 siblings, 0 replies; 3+ messages in thread From: Lorenzo Stoakes @ 2026-01-20 12:11 UTC (permalink / raw) To: kernel test robot Cc: oe-kbuild-all, David Hildenbrand, Andrew Morton, Linux Memory Management List On Tue, Jan 20, 2026 at 10:56:04AM +0000, Lorenzo Stoakes wrote: > On Tue, Jan 20, 2026 at 05:10:47PM +0800, kernel test robot wrote: > > Hi Lorenzo, > > > > FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant. > > > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-new > > head: e4348a62bb1acacafcdeb149c9363291fae08c0c > > commit: ccbdd8044f13617fe9f2bce61aed556314544664 [418/422] mm: update all remaining mmap_prepare users to use vma_flags_t > > config: arm-randconfig-r131-20260120 (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-lkp@intel.com/config) > > compiler: arm-linux-gnueabi-gcc (GCC) 11.5.0 > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260120/202601201701.IhxeGffs-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/202601201701.IhxeGffs-lkp@intel.com/ > > > > sparse warnings: (new ones prefixed by >>) > > >> fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression > > fs/orangefs/file.c: note: in included file (through arch/arm/include/asm/cacheflush.h, include/linux/cacheflush.h, include/linux/highmem.h, ...): > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1199:46: sparse: sparse: dereference of noderef expression > > fs/orangefs/file.c:415:9: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1216:48: sparse: sparse: dereference of noderef expression > > -- > > >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression > > >> fs/ramfs/file-nommu.c:267:40: sparse: sparse: dereference of noderef expression > > fs/ramfs/file-nommu.c: note: in included file: > > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1954:16: sparse: sparse: dereference of noderef expression > > include/linux/mm.h:1048:16: sparse: sparse: dereference of noderef expression > > > > vim +414 fs/orangefs/file.c > > > > 397 > > 398 /* > > 399 * Memory map a region of a file. > > 400 */ > > 401 static int orangefs_file_mmap_prepare(struct vm_area_desc *desc) > > 402 { > > 403 struct file *file = desc->file; > > 404 int ret; > > 405 > > 406 ret = orangefs_revalidate_mapping(file_inode(file)); > > 407 if (ret) > > 408 return ret; > > 409 > > 410 gossip_debug(GOSSIP_FILE_DEBUG, > > 411 "orangefs_file_mmap: called on %pD\n", file); > > 412 > > 413 /* set the sequential readahead hint */ > > > 414 vma_desc_set_flags(desc, VMA_SEQ_READ_BIT); > > This is totally valid? vma_flags_set_mask() (which is ultimately invoked) uses > ACCESS_PRIVATE() consistently. > > I wonder if mk_vma_flags() is an issue as it ultimately does (const vma_flag_t > []){ VMA_SEQ_READ_BIT } here that then gets 'dereferenced' by array access in > __mk_vma_flags(). > > Nothing is accessing __vma_flags in vma_flags_t directly however, it's all via > ACCESS_PRIVATE() as far as I can tell? I mean this makes sparse so damn cumbersome to use. I do NOT want people doing flags->__vma_flags blah, and force ACCESS_PRIVATE() for this field. But I _do_ want to be able to pass around pointers to it, but sparse unconditionally makes the type no de-ref and these warnings trigger if you ever take a pointer, and there's no helper to help in that case AFAICT. If I mark __vma_flags __private this does nothing, I can even do: unsigned long *foo = flags.__vma_flags; without any new sparse warnings Which seems bizarre to me. Touching headers generates endless (currently ignored) sparse warnings in general so it's very hard to figure out if things break. OK I think the best approach here is to drop __private, the __vma_flags value should make it clear that access directly is a no-no, and we can avoid all this :) > > > 415 vma_desc_clear_flags(desc, VMA_RAND_READ_BIT); > > 416 > > 417 file_accessed(file); > > 418 desc->vm_ops = &orangefs_file_vm_ops; > > 419 return 0; > > 420 } > > 421 > > > > -- > > 0-DAY CI Kernel Test Service > > https://github.com/intel/lkp-tests/wiki > > Thanks, Lorenzo > Cheers, Lorenzo ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-01-20 12:12 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-01-20 9:10 [akpm-mm:mm-new 418/422] fs/orangefs/file.c:414:9: sparse: sparse: dereference of noderef expression kernel test robot 2026-01-20 10:56 ` Lorenzo Stoakes 2026-01-20 12:11 ` Lorenzo Stoakes
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox