From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: mm/vmscan.c:3504 walk_pte_range() error: uninitialized symbol 'dirty'.
Date: Thu, 15 May 2025 23:55:41 +0800 [thread overview]
Message-ID: <202505152339.fBOfDPsi-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Yu Zhao <yuzhao@google.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 088d13246a4672bc03aec664675138e3f5bff68c
commit: a52dcec56c5b96250f15efbd7de3d3ea6ce863d9 mm/mglru: fix PTE-mapped large folios
date: 4 months ago
:::::: branch date: 10 hours ago
:::::: commit date: 4 months ago
config: sparc-randconfig-r073-20250515 (https://download.01.org/0day-ci/archive/20250515/202505152339.fBOfDPsi-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202505152339.fBOfDPsi-lkp@intel.com/
smatch warnings:
mm/vmscan.c:3504 walk_pte_range() error: uninitialized symbol 'dirty'.
mm/vmscan.c:3595 walk_pmd_range_locked() error: uninitialized symbol 'dirty'.
mm/vmscan.c:4215 lru_gen_look_around() error: uninitialized symbol 'dirty'.
vim +/dirty +3504 mm/vmscan.c
a52dcec56c5b96 Yu Zhao 2024-12-30 3449
bd74fdaea14602 Yu Zhao 2022-09-18 3450 static bool walk_pte_range(pmd_t *pmd, unsigned long start, unsigned long end,
bd74fdaea14602 Yu Zhao 2022-09-18 3451 struct mm_walk *args)
bd74fdaea14602 Yu Zhao 2022-09-18 3452 {
bd74fdaea14602 Yu Zhao 2022-09-18 3453 int i;
a52dcec56c5b96 Yu Zhao 2024-12-30 3454 bool dirty;
bd74fdaea14602 Yu Zhao 2022-09-18 3455 pte_t *pte;
bd74fdaea14602 Yu Zhao 2022-09-18 3456 spinlock_t *ptl;
bd74fdaea14602 Yu Zhao 2022-09-18 3457 unsigned long addr;
bd74fdaea14602 Yu Zhao 2022-09-18 3458 int total = 0;
bd74fdaea14602 Yu Zhao 2022-09-18 3459 int young = 0;
a52dcec56c5b96 Yu Zhao 2024-12-30 3460 struct folio *last = NULL;
bd74fdaea14602 Yu Zhao 2022-09-18 3461 struct lru_gen_mm_walk *walk = args->private;
bd74fdaea14602 Yu Zhao 2022-09-18 3462 struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
bd74fdaea14602 Yu Zhao 2022-09-18 3463 struct pglist_data *pgdat = lruvec_pgdat(walk->lruvec);
cc25bbe10a86a7 Kinsey Ho 2024-02-14 3464 DEFINE_MAX_SEQ(walk->lruvec);
a52dcec56c5b96 Yu Zhao 2024-12-30 3465 int gen = lru_gen_from_seq(max_seq);
2441774f2d2890 Qi Zheng 2024-09-26 3466 pmd_t pmdval;
bd74fdaea14602 Yu Zhao 2022-09-18 3467
a52dcec56c5b96 Yu Zhao 2024-12-30 3468 pte = pte_offset_map_rw_nolock(args->mm, pmd, start & PMD_MASK, &pmdval, &ptl);
52fc048320adf1 Hugh Dickins 2023-06-08 3469 if (!pte)
52fc048320adf1 Hugh Dickins 2023-06-08 3470 return false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3471
52fc048320adf1 Hugh Dickins 2023-06-08 3472 if (!spin_trylock(ptl)) {
52fc048320adf1 Hugh Dickins 2023-06-08 3473 pte_unmap(pte);
a52dcec56c5b96 Yu Zhao 2024-12-30 3474 return true;
52fc048320adf1 Hugh Dickins 2023-06-08 3475 }
bd74fdaea14602 Yu Zhao 2022-09-18 3476
2441774f2d2890 Qi Zheng 2024-09-26 3477 if (unlikely(!pmd_same(pmdval, pmdp_get_lockless(pmd)))) {
2441774f2d2890 Qi Zheng 2024-09-26 3478 pte_unmap_unlock(pte, ptl);
2441774f2d2890 Qi Zheng 2024-09-26 3479 return false;
2441774f2d2890 Qi Zheng 2024-09-26 3480 }
2441774f2d2890 Qi Zheng 2024-09-26 3481
bd74fdaea14602 Yu Zhao 2022-09-18 3482 arch_enter_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3483 restart:
bd74fdaea14602 Yu Zhao 2022-09-18 3484 for (i = pte_index(start), addr = start; addr != end; i++, addr += PAGE_SIZE) {
bd74fdaea14602 Yu Zhao 2022-09-18 3485 unsigned long pfn;
bd74fdaea14602 Yu Zhao 2022-09-18 3486 struct folio *folio;
c33c794828f212 Ryan Roberts 2023-06-12 3487 pte_t ptent = ptep_get(pte + i);
bd74fdaea14602 Yu Zhao 2022-09-18 3488
bd74fdaea14602 Yu Zhao 2022-09-18 3489 total++;
bd74fdaea14602 Yu Zhao 2022-09-18 3490 walk->mm_stats[MM_LEAF_TOTAL]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3491
1d4832becdc2cd Yu Zhao 2024-10-19 3492 pfn = get_pte_pfn(ptent, args->vma, addr, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3493 if (pfn == -1)
bd74fdaea14602 Yu Zhao 2022-09-18 3494 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3495
798c0330c2ca07 Yu Zhao 2024-12-30 3496 folio = get_pfn_folio(pfn, memcg, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3497 if (!folio)
bd74fdaea14602 Yu Zhao 2022-09-18 3498 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3499
1d4832becdc2cd Yu Zhao 2024-10-19 3500 if (!ptep_clear_young_notify(args->vma, addr, pte + i))
1d4832becdc2cd Yu Zhao 2024-10-19 3501 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3502
a52dcec56c5b96 Yu Zhao 2024-12-30 3503 if (last != folio) {
a52dcec56c5b96 Yu Zhao 2024-12-30 @3504 walk_update_folio(walk, last, gen, dirty);
bd74fdaea14602 Yu Zhao 2022-09-18 3505
a52dcec56c5b96 Yu Zhao 2024-12-30 3506 last = folio;
a52dcec56c5b96 Yu Zhao 2024-12-30 3507 dirty = false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3508 }
bd74fdaea14602 Yu Zhao 2022-09-18 3509
a52dcec56c5b96 Yu Zhao 2024-12-30 3510 if (pte_dirty(ptent))
a52dcec56c5b96 Yu Zhao 2024-12-30 3511 dirty = true;
a52dcec56c5b96 Yu Zhao 2024-12-30 3512
a52dcec56c5b96 Yu Zhao 2024-12-30 3513 young++;
a52dcec56c5b96 Yu Zhao 2024-12-30 3514 walk->mm_stats[MM_LEAF_YOUNG]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3515 }
bd74fdaea14602 Yu Zhao 2022-09-18 3516
a52dcec56c5b96 Yu Zhao 2024-12-30 3517 walk_update_folio(walk, last, gen, dirty);
a52dcec56c5b96 Yu Zhao 2024-12-30 3518 last = NULL;
a52dcec56c5b96 Yu Zhao 2024-12-30 3519
bd74fdaea14602 Yu Zhao 2022-09-18 3520 if (i < PTRS_PER_PTE && get_next_vma(PMD_MASK, PAGE_SIZE, args, &start, &end))
bd74fdaea14602 Yu Zhao 2022-09-18 3521 goto restart;
bd74fdaea14602 Yu Zhao 2022-09-18 3522
bd74fdaea14602 Yu Zhao 2022-09-18 3523 arch_leave_lazy_mmu_mode();
52fc048320adf1 Hugh Dickins 2023-06-08 3524 pte_unmap_unlock(pte, ptl);
bd74fdaea14602 Yu Zhao 2022-09-18 3525
bd74fdaea14602 Yu Zhao 2022-09-18 3526 return suitable_to_scan(total, young);
bd74fdaea14602 Yu Zhao 2022-09-18 3527 }
bd74fdaea14602 Yu Zhao 2022-09-18 3528
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3529 static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma,
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3530 struct mm_walk *args, unsigned long *bitmap, unsigned long *first)
bd74fdaea14602 Yu Zhao 2022-09-18 3531 {
bd74fdaea14602 Yu Zhao 2022-09-18 3532 int i;
a52dcec56c5b96 Yu Zhao 2024-12-30 3533 bool dirty;
bd74fdaea14602 Yu Zhao 2022-09-18 3534 pmd_t *pmd;
bd74fdaea14602 Yu Zhao 2022-09-18 3535 spinlock_t *ptl;
a52dcec56c5b96 Yu Zhao 2024-12-30 3536 struct folio *last = NULL;
bd74fdaea14602 Yu Zhao 2022-09-18 3537 struct lru_gen_mm_walk *walk = args->private;
bd74fdaea14602 Yu Zhao 2022-09-18 3538 struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
bd74fdaea14602 Yu Zhao 2022-09-18 3539 struct pglist_data *pgdat = lruvec_pgdat(walk->lruvec);
cc25bbe10a86a7 Kinsey Ho 2024-02-14 3540 DEFINE_MAX_SEQ(walk->lruvec);
a52dcec56c5b96 Yu Zhao 2024-12-30 3541 int gen = lru_gen_from_seq(max_seq);
bd74fdaea14602 Yu Zhao 2022-09-18 3542
bd74fdaea14602 Yu Zhao 2022-09-18 3543 VM_WARN_ON_ONCE(pud_leaf(*pud));
bd74fdaea14602 Yu Zhao 2022-09-18 3544
bd74fdaea14602 Yu Zhao 2022-09-18 3545 /* try to batch at most 1+MIN_LRU_BATCH+1 entries */
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3546 if (*first == -1) {
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3547 *first = addr;
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3548 bitmap_zero(bitmap, MIN_LRU_BATCH);
bd74fdaea14602 Yu Zhao 2022-09-18 3549 return;
bd74fdaea14602 Yu Zhao 2022-09-18 3550 }
bd74fdaea14602 Yu Zhao 2022-09-18 3551
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3552 i = addr == -1 ? 0 : pmd_index(addr) - pmd_index(*first);
bd74fdaea14602 Yu Zhao 2022-09-18 3553 if (i && i <= MIN_LRU_BATCH) {
bd74fdaea14602 Yu Zhao 2022-09-18 3554 __set_bit(i - 1, bitmap);
bd74fdaea14602 Yu Zhao 2022-09-18 3555 return;
bd74fdaea14602 Yu Zhao 2022-09-18 3556 }
bd74fdaea14602 Yu Zhao 2022-09-18 3557
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3558 pmd = pmd_offset(pud, *first);
bd74fdaea14602 Yu Zhao 2022-09-18 3559
bd74fdaea14602 Yu Zhao 2022-09-18 3560 ptl = pmd_lockptr(args->mm, pmd);
bd74fdaea14602 Yu Zhao 2022-09-18 3561 if (!spin_trylock(ptl))
bd74fdaea14602 Yu Zhao 2022-09-18 3562 goto done;
bd74fdaea14602 Yu Zhao 2022-09-18 3563
bd74fdaea14602 Yu Zhao 2022-09-18 3564 arch_enter_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3565
bd74fdaea14602 Yu Zhao 2022-09-18 3566 do {
bd74fdaea14602 Yu Zhao 2022-09-18 3567 unsigned long pfn;
bd74fdaea14602 Yu Zhao 2022-09-18 3568 struct folio *folio;
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3569
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3570 /* don't round down the first address */
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3571 addr = i ? (*first & PMD_MASK) + i * PMD_SIZE : *first;
bd74fdaea14602 Yu Zhao 2022-09-18 3572
1d4832becdc2cd Yu Zhao 2024-10-19 3573 if (!pmd_present(pmd[i]))
bd74fdaea14602 Yu Zhao 2022-09-18 3574 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3575
bd74fdaea14602 Yu Zhao 2022-09-18 3576 if (!pmd_trans_huge(pmd[i])) {
1d4832becdc2cd Yu Zhao 2024-10-19 3577 if (!walk->force_scan && should_clear_pmd_young() &&
1d4832becdc2cd Yu Zhao 2024-10-19 3578 !mm_has_notifiers(args->mm))
bd74fdaea14602 Yu Zhao 2022-09-18 3579 pmdp_test_and_clear_young(vma, addr, pmd + i);
bd74fdaea14602 Yu Zhao 2022-09-18 3580 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3581 }
bd74fdaea14602 Yu Zhao 2022-09-18 3582
1d4832becdc2cd Yu Zhao 2024-10-19 3583 pfn = get_pmd_pfn(pmd[i], vma, addr, pgdat);
1d4832becdc2cd Yu Zhao 2024-10-19 3584 if (pfn == -1)
1d4832becdc2cd Yu Zhao 2024-10-19 3585 goto next;
1d4832becdc2cd Yu Zhao 2024-10-19 3586
798c0330c2ca07 Yu Zhao 2024-12-30 3587 folio = get_pfn_folio(pfn, memcg, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3588 if (!folio)
bd74fdaea14602 Yu Zhao 2022-09-18 3589 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3590
1d4832becdc2cd Yu Zhao 2024-10-19 3591 if (!pmdp_clear_young_notify(vma, addr, pmd + i))
bd74fdaea14602 Yu Zhao 2022-09-18 3592 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3593
a52dcec56c5b96 Yu Zhao 2024-12-30 3594 if (last != folio) {
a52dcec56c5b96 Yu Zhao 2024-12-30 @3595 walk_update_folio(walk, last, gen, dirty);
bd74fdaea14602 Yu Zhao 2022-09-18 3596
a52dcec56c5b96 Yu Zhao 2024-12-30 3597 last = folio;
a52dcec56c5b96 Yu Zhao 2024-12-30 3598 dirty = false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3599 }
bd74fdaea14602 Yu Zhao 2022-09-18 3600
a52dcec56c5b96 Yu Zhao 2024-12-30 3601 if (pmd_dirty(pmd[i]))
a52dcec56c5b96 Yu Zhao 2024-12-30 3602 dirty = true;
a52dcec56c5b96 Yu Zhao 2024-12-30 3603
a52dcec56c5b96 Yu Zhao 2024-12-30 3604 walk->mm_stats[MM_LEAF_YOUNG]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3605 next:
bd74fdaea14602 Yu Zhao 2022-09-18 3606 i = i > MIN_LRU_BATCH ? 0 : find_next_bit(bitmap, MIN_LRU_BATCH, i) + 1;
bd74fdaea14602 Yu Zhao 2022-09-18 3607 } while (i <= MIN_LRU_BATCH);
bd74fdaea14602 Yu Zhao 2022-09-18 3608
a52dcec56c5b96 Yu Zhao 2024-12-30 3609 walk_update_folio(walk, last, gen, dirty);
a52dcec56c5b96 Yu Zhao 2024-12-30 3610
bd74fdaea14602 Yu Zhao 2022-09-18 3611 arch_leave_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3612 spin_unlock(ptl);
bd74fdaea14602 Yu Zhao 2022-09-18 3613 done:
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3614 *first = -1;
bd74fdaea14602 Yu Zhao 2022-09-18 3615 }
bd74fdaea14602 Yu Zhao 2022-09-18 3616
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@linaro.org>
To: oe-kbuild@lists.linux.dev, Yu Zhao <yuzhao@google.com>
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Linux Memory Management List <linux-mm@kvack.org>
Subject: mm/vmscan.c:3504 walk_pte_range() error: uninitialized symbol 'dirty'.
Date: Fri, 23 May 2025 13:47:54 +0300 [thread overview]
Message-ID: <202505152339.fBOfDPsi-lkp@intel.com> (raw)
Message-ID: <20250523104754.eqMXcCR9a7X1nZPqMji5Fl_uQsVAXOU7vSeUP4_Ia9g@z> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 088d13246a4672bc03aec664675138e3f5bff68c
commit: a52dcec56c5b96250f15efbd7de3d3ea6ce863d9 mm/mglru: fix PTE-mapped large folios
config: sparc-randconfig-r073-20250515 (https://download.01.org/0day-ci/archive/20250515/202505152339.fBOfDPsi-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0
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>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202505152339.fBOfDPsi-lkp@intel.com/
smatch warnings:
mm/vmscan.c:3504 walk_pte_range() error: uninitialized symbol 'dirty'.
mm/vmscan.c:3595 walk_pmd_range_locked() error: uninitialized symbol 'dirty'.
mm/vmscan.c:4215 lru_gen_look_around() error: uninitialized symbol 'dirty'.
vim +/dirty +3504 mm/vmscan.c
bd74fdaea14602 Yu Zhao 2022-09-18 3450 static bool walk_pte_range(pmd_t *pmd, unsigned long start, unsigned long end,
bd74fdaea14602 Yu Zhao 2022-09-18 3451 struct mm_walk *args)
bd74fdaea14602 Yu Zhao 2022-09-18 3452 {
bd74fdaea14602 Yu Zhao 2022-09-18 3453 int i;
a52dcec56c5b96 Yu Zhao 2024-12-30 3454 bool dirty;
bd74fdaea14602 Yu Zhao 2022-09-18 3455 pte_t *pte;
bd74fdaea14602 Yu Zhao 2022-09-18 3456 spinlock_t *ptl;
bd74fdaea14602 Yu Zhao 2022-09-18 3457 unsigned long addr;
bd74fdaea14602 Yu Zhao 2022-09-18 3458 int total = 0;
bd74fdaea14602 Yu Zhao 2022-09-18 3459 int young = 0;
a52dcec56c5b96 Yu Zhao 2024-12-30 3460 struct folio *last = NULL;
bd74fdaea14602 Yu Zhao 2022-09-18 3461 struct lru_gen_mm_walk *walk = args->private;
bd74fdaea14602 Yu Zhao 2022-09-18 3462 struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
bd74fdaea14602 Yu Zhao 2022-09-18 3463 struct pglist_data *pgdat = lruvec_pgdat(walk->lruvec);
cc25bbe10a86a7 Kinsey Ho 2024-02-14 3464 DEFINE_MAX_SEQ(walk->lruvec);
a52dcec56c5b96 Yu Zhao 2024-12-30 3465 int gen = lru_gen_from_seq(max_seq);
2441774f2d2890 Qi Zheng 2024-09-26 3466 pmd_t pmdval;
bd74fdaea14602 Yu Zhao 2022-09-18 3467
a52dcec56c5b96 Yu Zhao 2024-12-30 3468 pte = pte_offset_map_rw_nolock(args->mm, pmd, start & PMD_MASK, &pmdval, &ptl);
52fc048320adf1 Hugh Dickins 2023-06-08 3469 if (!pte)
52fc048320adf1 Hugh Dickins 2023-06-08 3470 return false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3471
52fc048320adf1 Hugh Dickins 2023-06-08 3472 if (!spin_trylock(ptl)) {
52fc048320adf1 Hugh Dickins 2023-06-08 3473 pte_unmap(pte);
a52dcec56c5b96 Yu Zhao 2024-12-30 3474 return true;
52fc048320adf1 Hugh Dickins 2023-06-08 3475 }
bd74fdaea14602 Yu Zhao 2022-09-18 3476
2441774f2d2890 Qi Zheng 2024-09-26 3477 if (unlikely(!pmd_same(pmdval, pmdp_get_lockless(pmd)))) {
2441774f2d2890 Qi Zheng 2024-09-26 3478 pte_unmap_unlock(pte, ptl);
2441774f2d2890 Qi Zheng 2024-09-26 3479 return false;
2441774f2d2890 Qi Zheng 2024-09-26 3480 }
2441774f2d2890 Qi Zheng 2024-09-26 3481
bd74fdaea14602 Yu Zhao 2022-09-18 3482 arch_enter_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3483 restart:
bd74fdaea14602 Yu Zhao 2022-09-18 3484 for (i = pte_index(start), addr = start; addr != end; i++, addr += PAGE_SIZE) {
bd74fdaea14602 Yu Zhao 2022-09-18 3485 unsigned long pfn;
bd74fdaea14602 Yu Zhao 2022-09-18 3486 struct folio *folio;
c33c794828f212 Ryan Roberts 2023-06-12 3487 pte_t ptent = ptep_get(pte + i);
bd74fdaea14602 Yu Zhao 2022-09-18 3488
bd74fdaea14602 Yu Zhao 2022-09-18 3489 total++;
bd74fdaea14602 Yu Zhao 2022-09-18 3490 walk->mm_stats[MM_LEAF_TOTAL]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3491
1d4832becdc2cd Yu Zhao 2024-10-19 3492 pfn = get_pte_pfn(ptent, args->vma, addr, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3493 if (pfn == -1)
bd74fdaea14602 Yu Zhao 2022-09-18 3494 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3495
798c0330c2ca07 Yu Zhao 2024-12-30 3496 folio = get_pfn_folio(pfn, memcg, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3497 if (!folio)
bd74fdaea14602 Yu Zhao 2022-09-18 3498 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3499
1d4832becdc2cd Yu Zhao 2024-10-19 3500 if (!ptep_clear_young_notify(args->vma, addr, pte + i))
1d4832becdc2cd Yu Zhao 2024-10-19 3501 continue;
bd74fdaea14602 Yu Zhao 2022-09-18 3502
a52dcec56c5b96 Yu Zhao 2024-12-30 3503 if (last != folio) {
a52dcec56c5b96 Yu Zhao 2024-12-30 @3504 walk_update_folio(walk, last, gen, dirty);
^^^^^
Potentially uninitialized.
It's weird that I didn't report this in Jan because it seems like a
reasonable warning. Sorry for that.
bd74fdaea14602 Yu Zhao 2022-09-18 3505
a52dcec56c5b96 Yu Zhao 2024-12-30 3506 last = folio;
a52dcec56c5b96 Yu Zhao 2024-12-30 3507 dirty = false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3508 }
bd74fdaea14602 Yu Zhao 2022-09-18 3509
a52dcec56c5b96 Yu Zhao 2024-12-30 3510 if (pte_dirty(ptent))
a52dcec56c5b96 Yu Zhao 2024-12-30 3511 dirty = true;
a52dcec56c5b96 Yu Zhao 2024-12-30 3512
a52dcec56c5b96 Yu Zhao 2024-12-30 3513 young++;
a52dcec56c5b96 Yu Zhao 2024-12-30 3514 walk->mm_stats[MM_LEAF_YOUNG]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3515 }
bd74fdaea14602 Yu Zhao 2022-09-18 3516
a52dcec56c5b96 Yu Zhao 2024-12-30 3517 walk_update_folio(walk, last, gen, dirty);
a52dcec56c5b96 Yu Zhao 2024-12-30 3518 last = NULL;
a52dcec56c5b96 Yu Zhao 2024-12-30 3519
bd74fdaea14602 Yu Zhao 2022-09-18 3520 if (i < PTRS_PER_PTE && get_next_vma(PMD_MASK, PAGE_SIZE, args, &start, &end))
bd74fdaea14602 Yu Zhao 2022-09-18 3521 goto restart;
bd74fdaea14602 Yu Zhao 2022-09-18 3522
bd74fdaea14602 Yu Zhao 2022-09-18 3523 arch_leave_lazy_mmu_mode();
52fc048320adf1 Hugh Dickins 2023-06-08 3524 pte_unmap_unlock(pte, ptl);
bd74fdaea14602 Yu Zhao 2022-09-18 3525
bd74fdaea14602 Yu Zhao 2022-09-18 3526 return suitable_to_scan(total, young);
bd74fdaea14602 Yu Zhao 2022-09-18 3527 }
bd74fdaea14602 Yu Zhao 2022-09-18 3528
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3529 static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma,
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3530 struct mm_walk *args, unsigned long *bitmap, unsigned long *first)
bd74fdaea14602 Yu Zhao 2022-09-18 3531 {
bd74fdaea14602 Yu Zhao 2022-09-18 3532 int i;
a52dcec56c5b96 Yu Zhao 2024-12-30 3533 bool dirty;
bd74fdaea14602 Yu Zhao 2022-09-18 3534 pmd_t *pmd;
bd74fdaea14602 Yu Zhao 2022-09-18 3535 spinlock_t *ptl;
a52dcec56c5b96 Yu Zhao 2024-12-30 3536 struct folio *last = NULL;
bd74fdaea14602 Yu Zhao 2022-09-18 3537 struct lru_gen_mm_walk *walk = args->private;
bd74fdaea14602 Yu Zhao 2022-09-18 3538 struct mem_cgroup *memcg = lruvec_memcg(walk->lruvec);
bd74fdaea14602 Yu Zhao 2022-09-18 3539 struct pglist_data *pgdat = lruvec_pgdat(walk->lruvec);
cc25bbe10a86a7 Kinsey Ho 2024-02-14 3540 DEFINE_MAX_SEQ(walk->lruvec);
a52dcec56c5b96 Yu Zhao 2024-12-30 3541 int gen = lru_gen_from_seq(max_seq);
bd74fdaea14602 Yu Zhao 2022-09-18 3542
bd74fdaea14602 Yu Zhao 2022-09-18 3543 VM_WARN_ON_ONCE(pud_leaf(*pud));
bd74fdaea14602 Yu Zhao 2022-09-18 3544
bd74fdaea14602 Yu Zhao 2022-09-18 3545 /* try to batch at most 1+MIN_LRU_BATCH+1 entries */
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3546 if (*first == -1) {
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3547 *first = addr;
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3548 bitmap_zero(bitmap, MIN_LRU_BATCH);
bd74fdaea14602 Yu Zhao 2022-09-18 3549 return;
bd74fdaea14602 Yu Zhao 2022-09-18 3550 }
bd74fdaea14602 Yu Zhao 2022-09-18 3551
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3552 i = addr == -1 ? 0 : pmd_index(addr) - pmd_index(*first);
bd74fdaea14602 Yu Zhao 2022-09-18 3553 if (i && i <= MIN_LRU_BATCH) {
bd74fdaea14602 Yu Zhao 2022-09-18 3554 __set_bit(i - 1, bitmap);
bd74fdaea14602 Yu Zhao 2022-09-18 3555 return;
bd74fdaea14602 Yu Zhao 2022-09-18 3556 }
bd74fdaea14602 Yu Zhao 2022-09-18 3557
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3558 pmd = pmd_offset(pud, *first);
bd74fdaea14602 Yu Zhao 2022-09-18 3559
bd74fdaea14602 Yu Zhao 2022-09-18 3560 ptl = pmd_lockptr(args->mm, pmd);
bd74fdaea14602 Yu Zhao 2022-09-18 3561 if (!spin_trylock(ptl))
bd74fdaea14602 Yu Zhao 2022-09-18 3562 goto done;
bd74fdaea14602 Yu Zhao 2022-09-18 3563
bd74fdaea14602 Yu Zhao 2022-09-18 3564 arch_enter_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3565
bd74fdaea14602 Yu Zhao 2022-09-18 3566 do {
bd74fdaea14602 Yu Zhao 2022-09-18 3567 unsigned long pfn;
bd74fdaea14602 Yu Zhao 2022-09-18 3568 struct folio *folio;
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3569
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3570 /* don't round down the first address */
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3571 addr = i ? (*first & PMD_MASK) + i * PMD_SIZE : *first;
bd74fdaea14602 Yu Zhao 2022-09-18 3572
1d4832becdc2cd Yu Zhao 2024-10-19 3573 if (!pmd_present(pmd[i]))
bd74fdaea14602 Yu Zhao 2022-09-18 3574 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3575
bd74fdaea14602 Yu Zhao 2022-09-18 3576 if (!pmd_trans_huge(pmd[i])) {
1d4832becdc2cd Yu Zhao 2024-10-19 3577 if (!walk->force_scan && should_clear_pmd_young() &&
1d4832becdc2cd Yu Zhao 2024-10-19 3578 !mm_has_notifiers(args->mm))
bd74fdaea14602 Yu Zhao 2022-09-18 3579 pmdp_test_and_clear_young(vma, addr, pmd + i);
bd74fdaea14602 Yu Zhao 2022-09-18 3580 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3581 }
bd74fdaea14602 Yu Zhao 2022-09-18 3582
1d4832becdc2cd Yu Zhao 2024-10-19 3583 pfn = get_pmd_pfn(pmd[i], vma, addr, pgdat);
1d4832becdc2cd Yu Zhao 2024-10-19 3584 if (pfn == -1)
1d4832becdc2cd Yu Zhao 2024-10-19 3585 goto next;
1d4832becdc2cd Yu Zhao 2024-10-19 3586
798c0330c2ca07 Yu Zhao 2024-12-30 3587 folio = get_pfn_folio(pfn, memcg, pgdat);
bd74fdaea14602 Yu Zhao 2022-09-18 3588 if (!folio)
bd74fdaea14602 Yu Zhao 2022-09-18 3589 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3590
1d4832becdc2cd Yu Zhao 2024-10-19 3591 if (!pmdp_clear_young_notify(vma, addr, pmd + i))
bd74fdaea14602 Yu Zhao 2022-09-18 3592 goto next;
bd74fdaea14602 Yu Zhao 2022-09-18 3593
a52dcec56c5b96 Yu Zhao 2024-12-30 3594 if (last != folio) {
a52dcec56c5b96 Yu Zhao 2024-12-30 @3595 walk_update_folio(walk, last, gen, dirty);
Same.
bd74fdaea14602 Yu Zhao 2022-09-18 3596
a52dcec56c5b96 Yu Zhao 2024-12-30 3597 last = folio;
a52dcec56c5b96 Yu Zhao 2024-12-30 3598 dirty = false;
a52dcec56c5b96 Yu Zhao 2024-12-30 3599 }
bd74fdaea14602 Yu Zhao 2022-09-18 3600
a52dcec56c5b96 Yu Zhao 2024-12-30 3601 if (pmd_dirty(pmd[i]))
a52dcec56c5b96 Yu Zhao 2024-12-30 3602 dirty = true;
a52dcec56c5b96 Yu Zhao 2024-12-30 3603
a52dcec56c5b96 Yu Zhao 2024-12-30 3604 walk->mm_stats[MM_LEAF_YOUNG]++;
bd74fdaea14602 Yu Zhao 2022-09-18 3605 next:
bd74fdaea14602 Yu Zhao 2022-09-18 3606 i = i > MIN_LRU_BATCH ? 0 : find_next_bit(bitmap, MIN_LRU_BATCH, i) + 1;
bd74fdaea14602 Yu Zhao 2022-09-18 3607 } while (i <= MIN_LRU_BATCH);
bd74fdaea14602 Yu Zhao 2022-09-18 3608
a52dcec56c5b96 Yu Zhao 2024-12-30 3609 walk_update_folio(walk, last, gen, dirty);
a52dcec56c5b96 Yu Zhao 2024-12-30 3610
bd74fdaea14602 Yu Zhao 2022-09-18 3611 arch_leave_lazy_mmu_mode();
bd74fdaea14602 Yu Zhao 2022-09-18 3612 spin_unlock(ptl);
bd74fdaea14602 Yu Zhao 2022-09-18 3613 done:
b5ff4133617d0e T.J. Alumbaugh 2023-01-18 3614 *first = -1;
bd74fdaea14602 Yu Zhao 2022-09-18 3615 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2025-05-15 15:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-15 15:55 kernel test robot [this message]
2025-05-23 10:47 ` mm/vmscan.c:3504 walk_pte_range() error: uninitialized symbol 'dirty' Dan Carpenter
2025-05-23 22:27 ` Andrew Morton
2025-05-26 12:32 ` Dan Carpenter
2025-05-28 0:03 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2025-08-29 22:30 kernel test robot
2025-12-10 2:29 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202505152339.fBOfDPsi-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.