public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* [linux-next:master 8238/8302] mm/memory.c:1844:12: warning: spinlock 'pmd_lockptr(mm, pmd)' is not held on every path through here
@ 2026-01-20 23:39 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-01-20 23:39 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: llvm, oe-kbuild-all, Mark Brown

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   053966c344dbd346e71305f530e91ea77916189f
commit: 4896ab38023ae4bb2f070083d425b3836a364b7e [8238/8302] Merge branch 'master' of https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
config: s390-randconfig-002-20260121 (https://download.01.org/0day-ci/archive/20260121/202601210715.vxSStJeF-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/20260121/202601210715.vxSStJeF-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/202601210715.vxSStJeF-lkp@intel.com/

All warnings (new ones prefixed by >>):

   include/linux/compiler-context-analysis.h:334:23: note: expanded from macro '__acquire'
     334 | #define __acquire(x)            __acquire_ctx_lock(x)
         |                                 ^
   In file included from mm/memory.c:44:
   In file included from include/linux/mm_inline.h:8:
   In file included from include/linux/swap.h:9:
   include/linux/memcontrol.h:1481:2: warning: releasing spinlock 'lruvec->lru_lock' that was not held [-Wthread-safety-analysis]
    1481 |         spin_unlock(&lruvec->lru_lock);
         |         ^
   include/linux/memcontrol.h:1486:2: warning: releasing spinlock 'lruvec->lru_lock' that was not held [-Wthread-safety-analysis]
    1486 |         spin_unlock_irq(&lruvec->lru_lock);
         |         ^
   include/linux/memcontrol.h:1492:2: warning: releasing spinlock 'lruvec->lru_lock' that was not held [-Wthread-safety-analysis]
    1492 |         spin_unlock_irqrestore(&lruvec->lru_lock, flags);
         |         ^
   In file included from mm/memory.c:48:
   include/linux/hugetlb.h:1318:1: warning: spinlock 'huge_pte_lockptr(h, mm, pte)' is still held at the end of function [-Wthread-safety-analysis]
    1318 | }
         | ^
   include/linux/hugetlb.h:1316:2: note: spinlock acquired here
    1316 |         spin_lock(ptl);
         |         ^
   In file included from mm/memory.c:55:
   In file included from include/linux/ksm.h:14:
   include/linux/rmap.h:115:1: warning: __context_bitlock '((#undefined * 8) - 1) + folio->....._mm_ids' is still held at the end of function [-Wthread-safety-analysis]
     115 | }
         | ^
   include/linux/rmap.h:114:2: note: __context_bitlock acquired here
     114 |         bit_spin_lock(FOLIO_MM_IDS_LOCK_BITNUM, &folio->_mm_ids);
         |         ^
   include/linux/rmap.h:119:2: warning: releasing __context_bitlock '((#undefined * 8) - 1) + folio->....._mm_ids' that was not held [-Wthread-safety-analysis]
     119 |         __bit_spin_unlock(FOLIO_MM_IDS_LOCK_BITNUM, &folio->_mm_ids);
         |         ^
   include/linux/rmap.h:892:3: warning: releasing spinlock 'pvmw->ptl' that was not held [-Wthread-safety-analysis]
     892 |                 spin_unlock(pvmw->ptl);
         |                 ^
   include/linux/rmap.h:910:3: warning: releasing spinlock 'pvmw->ptl' that was not held [-Wthread-safety-analysis]
     910 |                 spin_unlock(pvmw->ptl);
         |                 ^
   In file included from mm/memory.c:68:
   In file included from include/linux/shmem_fs.h:11:
   In file included from include/linux/fs_parser.h:11:
   In file included from include/linux/fs_context.h:14:
   In file included from include/linux/security.h:35:
   include/linux/bpf.h:2470:24: warning: __ctx_lock_RCU 'RCU' is not held on every path through here [-Wthread-safety-analysis]
    2470 |                 run_ctx.bpf_cookie = item->bpf_cookie;
         |                                      ^
   include/linux/bpf.h:2468:4: note: __ctx_lock_RCU acquired here
    2468 |                         rcu_read_lock();
         |                         ^
   include/linux/bpf.h:2475:4: warning: releasing __ctx_lock_RCU 'RCU' that was not held [-Wthread-safety-analysis]
    2475 |                         rcu_read_unlock();
         |                         ^
   In file included from mm/memory.c:90:
   mm/internal.h:221:1: warning: rw_semaphore 'anon_vma->root->rwsem' is still held at the end of function [-Wthread-safety-analysis]
     221 | }
         | ^
   mm/internal.h:220:2: note: rw_semaphore acquired here
     220 |         down_write(&anon_vma->root->rwsem);
         |         ^
   mm/internal.h:230:2: warning: releasing rw_semaphore 'anon_vma->root->rwsem' that was not held [-Wthread-safety-analysis]
     230 |         up_write(&anon_vma->root->rwsem);
         |         ^
   mm/internal.h:236:1: warning: rw_semaphore 'anon_vma->root->rwsem' is still held at the end of function [-Wthread-safety-analysis]
     236 | }
         | ^
   mm/internal.h:235:2: note: rw_semaphore acquired here
     235 |         down_read(&anon_vma->root->rwsem);
         |         ^
   mm/internal.h:245:2: warning: releasing rw_semaphore 'anon_vma->root->rwsem' that was not held [-Wthread-safety-analysis]
     245 |         up_read(&anon_vma->root->rwsem);
         |         ^
   In file included from mm/memory.c:91:
   mm/swap.h:118:1: warning: spinlock '__swap_offset_to_cluster(si, offset).lock' is still held at the end of function [-Wthread-safety-analysis]
     118 | }
         | ^
   mm/swap.h:116:3: note: spinlock acquired here
     116 |                 spin_lock(&ci->lock);
         |                 ^
   mm/swap.h:178:2: warning: releasing spinlock 'ci->lock' that was not held [-Wthread-safety-analysis]
     178 |         spin_unlock(&ci->lock);
         |         ^
   mm/swap.h:183:2: warning: releasing spinlock 'ci->lock' that was not held [-Wthread-safety-analysis]
     183 |         spin_unlock_irq(&ci->lock);
         |         ^
   mm/memory.c:463:2: warning: releasing spinlock 'pmd_lock(mm, pmd)' that was not held [-Wthread-safety-analysis]
     463 |         spin_unlock(ptl);
         |         ^
   mm/memory.c:1267:3: warning: releasing spinlock 'dst_ptl' that was not held [-Wthread-safety-analysis]
    1267 |                 pte_unmap_unlock(dst_pte, dst_ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:1346:2: warning: releasing spinlock 'dst_ptl' that was not held [-Wthread-safety-analysis]
    1346 |         pte_unmap_unlock(orig_dst_pte, dst_ptl);
         |         ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
>> mm/memory.c:1844:12: warning: spinlock 'pmd_lockptr(mm, pmd)' is not held on every path through here [-Wthread-safety-analysis]
    1844 |         *pmdval = pmdp_get(pmd);
         |                   ^
   mm/memory.c:1841:21: note: spinlock acquired here
    1841 |         if (ptl != pml && !spin_trylock(pml))
         |                            ^
>> mm/memory.c:1847:3: warning: releasing spinlock 'pmd_lockptr(mm, pmd)' that was not held [-Wthread-safety-analysis]
    1847 |                 spin_unlock(pml);
         |                 ^
>> mm/memory.c:1865:11: warning: spinlock 'ptl' is not held on every path through here [-Wthread-safety-analysis]
    1865 |         for (i = 0, pte = start_pte; i < PTRS_PER_PTE; i++, pte++) {
         |                  ^
   mm/memory.c:1863:3: note: spinlock acquired here
    1863 |                 spin_lock_nested(ptl, SINGLE_DEPTH_NESTING);
         |                 ^
   include/linux/spinlock.h:362:35: note: expanded from macro 'spin_lock_nested'
     362 |         __release(spinlock_check(lock)); __acquire(lock);       \
         |                                          ^
   include/linux/compiler-context-analysis.h:334:23: note: expanded from macro '__acquire'
     334 | #define __acquire(x)            __acquire_ctx_lock(x)
         |                                 ^
   mm/memory.c:1874:3: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    1874 |                 spin_unlock(ptl);
         |                 ^
   mm/memory.c:1875:2: warning: releasing spinlock 'pmd_lock(mm, pmd)' that was not held [-Wthread-safety-analysis]
    1875 |         spin_unlock(pml);
         |         ^
   mm/memory.c:1879:3: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    1879 |                 pte_unmap_unlock(start_pte, ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:1881:3: warning: releasing spinlock 'pmd_lock(mm, pmd)' that was not held [-Wthread-safety-analysis]
    1881 |                 spin_unlock(pml);
         |                 ^
   mm/memory.c:1949:2: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    1949 |         pte_unmap_unlock(start_pte, ptl);
         |         ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:2005:4: warning: releasing spinlock 'pmd_lock(tlb->mm, pmd_offset(pud, addr))' that was not held [-Wthread-safety-analysis]
    2005 |                         spin_unlock(ptl);
         |                         ^
   mm/memory.c:2388:2: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    2388 |         pte_unmap_unlock(pte, ptl);
         |         ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:2445:5: warning: releasing spinlock 'pte_lock' that was not held [-Wthread-safety-analysis]
    2445 |                                 pte_unmap_unlock(start_pte, pte_lock);
         |                                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:2453:3: warning: releasing spinlock 'pte_lock' that was not held [-Wthread-safety-analysis]
    2453 |                 pte_unmap_unlock(start_pte, pte_lock);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:2671:2: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    2671 |         pte_unmap_unlock(pte, ptl);
         |         ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:2887:2: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    2887 |         pte_unmap_unlock(mapped_pte, ptl);
         |         ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3253:3: warning: releasing spinlock 'ptl' that was not held [-Wthread-safety-analysis]
    3253 |                 pte_unmap_unlock(mapped_pte, ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3549:3: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3549 |                 pte_unmap_unlock(vmf->pte, vmf->ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3880:3: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3880 |                 pte_unmap_unlock(vmf->pte, vmf->ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3883:3: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3883 |                 pte_unmap_unlock(vmf->pte, vmf->ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3938:3: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3938 |                 pte_unmap_unlock(vmf->pte, vmf->ptl);
         |                 ^
   include/linux/mm.h:3359:2: note: expanded from macro 'pte_unmap_unlock'
    3359 |         spin_unlock(ptl);                               \
         |         ^
   mm/memory.c:3941:2: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3941 |         wp_page_reuse(vmf, folio);
         |         ^
   mm/memory.c:3956:3: warning: releasing spinlock 'vmf->ptl' that was not held [-Wthread-safety-analysis]
    3956 |                 pte_unmap_unlock(vmf->pte, vmf->ptl);
--
     398 | }
         | ^
   include/linux/mmap_lock.h:396:2: note: rw_semaphore acquired here
     396 |         down_read(&mm->mmap_lock);
         |         ^
   include/linux/mmap_lock.h:423:2: warning: releasing rw_semaphore 'mm->.mmap_lock' that was not held [-Wthread-safety-analysis]
     423 |         up_read(&mm->mmap_lock);
         |         ^
   include/linux/mmap_lock.h:432:2: warning: releasing rw_semaphore 'mm->.mmap_lock' that was not held [-Wthread-safety-analysis]
     432 |         up_read_non_owner(&mm->mmap_lock);
         |         ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   In file included from include/linux/blkdev.h:9:
   In file included from include/linux/blk_types.h:10:
   In file included from include/linux/bvec.h:10:
   In file included from include/linux/highmem.h:10:
   In file included from include/linux/mm.h:1274:
   In file included from include/linux/huge_mm.h:8:
   In file included from include/linux/kobject.h:20:
   In file included from include/linux/sysfs.h:16:
   In file included from include/linux/kernfs.h:12:
   include/linux/idr.h:191:2: warning: releasing local_lock 'radix_tree_preloads.lock' that was not held [-Wthread-safety-analysis]
     191 |         local_unlock(&radix_tree_preloads.lock);
         |         ^
   include/linux/local_lock.h:38:29: note: expanded from macro 'local_unlock'
      38 | #define local_unlock(lock)              __local_unlock(__this_cpu_local_lock(lock))
         |                                         ^
   include/linux/local_lock_internal.h:202:3: note: expanded from macro '__local_unlock'
     202 |                 __release(lock);                                \
         |                 ^
   include/linux/compiler-context-analysis.h:342:23: note: expanded from macro '__release'
     342 | #define __release(x)            __release_ctx_lock(x)
         |                                 ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   In file included from include/linux/blkdev.h:9:
   In file included from include/linux/blk_types.h:10:
   In file included from include/linux/bvec.h:10:
   In file included from include/linux/highmem.h:10:
   include/linux/mm.h:3422:1: warning: spinlock 'pmd_lockptr(mm, pmd)' is still held at the end of function [-Wthread-safety-analysis]
    3422 | }
         | ^
   include/linux/mm.h:3420:2: note: spinlock acquired here
    3420 |         spin_lock(ptl);
         |         ^
   include/linux/mm.h:3451:1: warning: spinlock 'pud_lockptr(mm, pud)' is still held at the end of function [-Wthread-safety-analysis]
    3451 | }
         | ^
   include/linux/mm.h:3449:2: note: spinlock acquired here
    3449 |         spin_lock(ptl);
         |         ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   In file included from include/linux/blkdev.h:9:
   In file included from include/linux/blk_types.h:11:
   include/linux/device.h:896:1: warning: mutex 'dev->mutex' is still held at the end of function [-Wthread-safety-analysis]
     896 | }
         | ^
   include/linux/device.h:895:2: note: mutex acquired here
     895 |         mutex_lock(&dev->mutex);
         |         ^
   include/linux/mutex.h:194:26: note: expanded from macro 'mutex_lock'
     194 | #define mutex_lock(lock) mutex_lock_nested(lock, 0)
         |                          ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   In file included from include/linux/blkdev.h:9:
   In file included from include/linux/blk_types.h:11:
   include/linux/device.h:910:2: warning: releasing mutex 'dev->mutex' that was not held [-Wthread-safety-analysis]
     910 |         mutex_unlock(&dev->mutex);
         |         ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   include/linux/blkdev.h:1090:1: warning: mutex 'q->limits_lock' is still held at the end of function [-Wthread-safety-analysis]
    1090 | }
         | ^
   include/linux/blkdev.h:1088:2: note: mutex acquired here
    1088 |         mutex_lock(&q->limits_lock);
         |         ^
   include/linux/mutex.h:194:26: note: expanded from macro 'mutex_lock'
     194 | #define mutex_lock(lock) mutex_lock_nested(lock, 0)
         |                          ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:22:
   include/linux/blkdev.h:1108:2: warning: releasing mutex 'q->limits_lock' that was not held [-Wthread-safety-analysis]
    1108 |         mutex_unlock(&q->limits_lock);
         |         ^
   In file included from fs/ext4/symlink.c:23:
   In file included from fs/ext4/ext4.h:24:
   include/linux/jbd2.h:344:1: warning: __context_bitlock 'BH_JournalHead + bh->b_state' is still held at the end of function [-Wthread-safety-analysis]
     344 | }
         | ^
   include/linux/jbd2.h:343:2: note: __context_bitlock acquired here
     343 |         bit_spin_lock(BH_JournalHead, &bh->b_state);
         |         ^
   include/linux/jbd2.h:348:2: warning: releasing __context_bitlock 'BH_JournalHead + bh->b_state' that was not held [-Wthread-safety-analysis]
     348 |         bit_spin_unlock(BH_JournalHead, &bh->b_state);
         |         ^
   In file included from fs/ext4/symlink.c:23:
>> fs/ext4/ext4.h:1843:1: warning: mutex 'EXT4_SB(sb).s_fc_lock' is still held at the end of function [-Wthread-safety-analysis]
    1843 | }
         | ^
   fs/ext4/ext4.h:1841:2: note: mutex acquired here
    1841 |         mutex_lock(&EXT4_SB(sb)->s_fc_lock);
         |         ^
   include/linux/mutex.h:194:26: note: expanded from macro 'mutex_lock'
     194 | #define mutex_lock(lock) mutex_lock_nested(lock, 0)
         |                          ^
   In file included from fs/ext4/symlink.c:23:
>> fs/ext4/ext4.h:1848:2: warning: releasing mutex 'EXT4_SB(sb).s_fc_lock' that was not held [-Wthread-safety-analysis]
    1848 |         mutex_unlock(&EXT4_SB(sb)->s_fc_lock);
         |         ^
   fs/ext4/ext4.h:3589:1: warning: spinlock 'ext4_group_lock_ptr(sb, group)' is not held on every path through here [-Wthread-safety-analysis]
    3589 | }
         | ^
   fs/ext4/ext4.h:3581:7: note: spinlock acquired here
    3581 |         if (!spin_trylock(ext4_group_lock_ptr(sb, group)))
         |              ^
   fs/ext4/ext4.h:3602:1: warning: spinlock 'ext4_group_lock_ptr(sb, group)' is not held on every path through here [-Wthread-safety-analysis]
    3602 | }
         | ^
   fs/ext4/ext4.h:3600:3: note: spinlock acquired here
    3600 |                 spin_lock(ext4_group_lock_ptr(sb, group));
         |                 ^
   fs/ext4/ext4.h:3607:2: warning: releasing spinlock 'ext4_group_lock_ptr(sb, group)' that was not held [-Wthread-safety-analysis]
    3607 |         spin_unlock(ext4_group_lock_ptr(sb, group));
         |         ^
   In file included from fs/ext4/symlink.c:24:
   fs/ext4/xattr.h:160:1: warning: rw_semaphore 'EXT4_I(inode).xattr_sem' is still held at the end of function [-Wthread-safety-analysis]
     160 | }
         | ^
   fs/ext4/xattr.h:157:2: note: rw_semaphore acquired here
     157 |         down_write(&EXT4_I(inode)->xattr_sem);
         |         ^
   fs/ext4/xattr.h:169:1: warning: rw_semaphore 'EXT4_I(inode).xattr_sem' is not held on every path through here [-Wthread-safety-analysis]
     169 | }
         | ^
   fs/ext4/xattr.h:164:6: note: rw_semaphore acquired here
     164 |         if (down_write_trylock(&EXT4_I(inode)->xattr_sem) == 0)
         |             ^
   fs/ext4/xattr.h:175:2: warning: releasing rw_semaphore 'EXT4_I(inode).xattr_sem' that was not held [-Wthread-safety-analysis]
     175 |         up_write(&EXT4_I(inode)->xattr_sem);
         |         ^
   44 warnings generated.
..


vim +1844 mm/memory.c

ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1835) 
1355b4064623472 David Hildenbrand (Red Hat  2026-01-19  1836) static bool zap_empty_pte_table(struct mm_struct *mm, pmd_t *pmd,
1355b4064623472 David Hildenbrand (Red Hat  2026-01-19  1837) 		spinlock_t *ptl, pmd_t *pmdval)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1838) {
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1839) 	spinlock_t *pml = pmd_lockptr(mm, pmd);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1840) 
1355b4064623472 David Hildenbrand (Red Hat  2026-01-19  1841) 	if (ptl != pml && !spin_trylock(pml))
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1842) 		return false;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1843) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19 @1844) 	*pmdval = pmdp_get(pmd);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1845) 	pmd_clear(pmd);
1355b4064623472 David Hildenbrand (Red Hat  2026-01-19  1846) 	if (ptl != pml)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19 @1847) 		spin_unlock(pml);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1848) 	return true;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1849) }
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1850) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1851) static bool zap_pte_table_if_empty(struct mm_struct *mm, pmd_t *pmd,
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1852) 		unsigned long addr, pmd_t *pmdval)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1853) {
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1854) 	spinlock_t *pml, *ptl = NULL;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1855) 	pte_t *start_pte, *pte;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1856) 	int i;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1857) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1858) 	pml = pmd_lock(mm, pmd);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1859) 	start_pte = pte_offset_map_rw_nolock(mm, pmd, addr, pmdval, &ptl);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1860) 	if (!start_pte)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1861) 		goto out_ptl;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1862) 	if (ptl != pml)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1863) 		spin_lock_nested(ptl, SINGLE_DEPTH_NESTING);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1864) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19 @1865) 	for (i = 0, pte = start_pte; i < PTRS_PER_PTE; i++, pte++) {
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1866) 		if (!pte_none(ptep_get(pte)))
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1867) 			goto out_ptl;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1868) 	}
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1869) 	pte_unmap(start_pte);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1870) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1871) 	pmd_clear(pmd);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1872) 
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1873) 	if (ptl != pml)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1874) 		spin_unlock(ptl);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1875) 	spin_unlock(pml);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1876) 	return true;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1877) out_ptl:
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1878) 	if (start_pte)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1879) 		pte_unmap_unlock(start_pte, ptl);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1880) 	if (ptl != pml)
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1881) 		spin_unlock(pml);
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1882) 	return false;
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1883) }
ba40d7ff6ac6527 David Hildenbrand (Red Hat  2026-01-19  1884) 

:::::: The code at line 1844 was first introduced by commit
:::::: ba40d7ff6ac6527ccd84ebc327f2f1879b6f8bc5 mm: move pte table reclaim code to memory.c

:::::: TO: David Hildenbrand (Red Hat) <david@kernel.org>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-01-20 23:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-20 23:39 [linux-next:master 8238/8302] mm/memory.c:1844:12: warning: spinlock 'pmd_lockptr(mm, pmd)' is not held on every path through here 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