Re: [PATCHv2 2/2] Add /proc/PID/{smaps, numa_maps} support for DAX

From: kbuild test robot
Date: Fri Oct 27 2017 - 02:49:55 EST


Hi Fan,

Thank you for the patch! Yet we hit a small issue.
[auto build test WARNING on linus/master]
[also build test WARNING on v4.14-rc6 next-20171018]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Fan-Du/proc-mm-export-PTE-sizes-directly-in-smaps/20171027-141157
config: x86_64-randconfig-x011-201743 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

fs/proc/task_mmu.c: In function 'gather_pte_stats':
>> fs/proc/task_mmu.c:1805:6: warning: 'page' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (!page)
^

vim +/page +1805 fs/proc/task_mmu.c

28093f9f3 Gerald Schaefer 2016-04-28 1771
f69ff943d Stephen Wilson 2011-05-24 1772 static int gather_pte_stats(pmd_t *pmd, unsigned long addr,
f69ff943d Stephen Wilson 2011-05-24 1773 unsigned long end, struct mm_walk *walk)
f69ff943d Stephen Wilson 2011-05-24 1774 {
d85f4d6d3 Naoya Horiguchi 2015-02-11 1775 struct numa_maps *md = walk->private;
d85f4d6d3 Naoya Horiguchi 2015-02-11 1776 struct vm_area_struct *vma = walk->vma;
f69ff943d Stephen Wilson 2011-05-24 1777 spinlock_t *ptl;
f69ff943d Stephen Wilson 2011-05-24 1778 pte_t *orig_pte;
f69ff943d Stephen Wilson 2011-05-24 1779 pte_t *pte;
3bf801467 Fan Du 2017-10-24 1780 struct page *page;
f69ff943d Stephen Wilson 2011-05-24 1781
28093f9f3 Gerald Schaefer 2016-04-28 1782 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
b6ec57f4b Kirill A. Shutemov 2016-01-21 1783 ptl = pmd_trans_huge_lock(pmd, vma);
b6ec57f4b Kirill A. Shutemov 2016-01-21 1784 if (ptl) {
3bf801467 Fan Du 2017-10-24 1785 if (!vma_is_dax(vma))
28093f9f3 Gerald Schaefer 2016-04-28 1786 page = can_gather_numa_stats_pmd(*pmd, vma, addr);
3bf801467 Fan Du 2017-10-24 1787 else if (pmd_devmap(*pmd))
3bf801467 Fan Du 2017-10-24 1788 page = pmd_page(*pmd);
32ef43848 Dave Hansen 2011-09-20 1789 if (page)
28093f9f3 Gerald Schaefer 2016-04-28 1790 gather_stats(page, md, pmd_dirty(*pmd),
32ef43848 Dave Hansen 2011-09-20 1791 HPAGE_PMD_SIZE/PAGE_SIZE);
bf929152e Kirill A. Shutemov 2013-11-14 1792 spin_unlock(ptl);
32ef43848 Dave Hansen 2011-09-20 1793 return 0;
32ef43848 Dave Hansen 2011-09-20 1794 }
32ef43848 Dave Hansen 2011-09-20 1795
1a5a9906d Andrea Arcangeli 2012-03-21 1796 if (pmd_trans_unstable(pmd))
1a5a9906d Andrea Arcangeli 2012-03-21 1797 return 0;
28093f9f3 Gerald Schaefer 2016-04-28 1798 #endif
f69ff943d Stephen Wilson 2011-05-24 1799 orig_pte = pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
f69ff943d Stephen Wilson 2011-05-24 1800 do {
3bf801467 Fan Du 2017-10-24 1801 if (!vma_is_dax(vma))
3bf801467 Fan Du 2017-10-24 1802 page = can_gather_numa_stats(*pte, vma, addr);
3bf801467 Fan Du 2017-10-24 1803 else if (pte_devmap(*pte))
3bf801467 Fan Du 2017-10-24 1804 page = pte_page(*pte);
f69ff943d Stephen Wilson 2011-05-24 @1805 if (!page)
f69ff943d Stephen Wilson 2011-05-24 1806 continue;
eb4866d00 Dave Hansen 2011-09-20 1807 gather_stats(page, md, pte_dirty(*pte), 1);
f69ff943d Stephen Wilson 2011-05-24 1808
f69ff943d Stephen Wilson 2011-05-24 1809 } while (pte++, addr += PAGE_SIZE, addr != end);
f69ff943d Stephen Wilson 2011-05-24 1810 pte_unmap_unlock(orig_pte, ptl);
a66c0410b Hugh Dickins 2016-12-12 1811 cond_resched();
f69ff943d Stephen Wilson 2011-05-24 1812 return 0;
f69ff943d Stephen Wilson 2011-05-24 1813 }
f69ff943d Stephen Wilson 2011-05-24 1814 #ifdef CONFIG_HUGETLB_PAGE
632fd60fe Naoya Horiguchi 2015-02-11 1815 static int gather_hugetlb_stats(pte_t *pte, unsigned long hmask,
f69ff943d Stephen Wilson 2011-05-24 1816 unsigned long addr, unsigned long end, struct mm_walk *walk)
f69ff943d Stephen Wilson 2011-05-24 1817 {
5c2ff95e4 Michael Holzheu 2016-02-02 1818 pte_t huge_pte = huge_ptep_get(pte);
f69ff943d Stephen Wilson 2011-05-24 1819 struct numa_maps *md;
f69ff943d Stephen Wilson 2011-05-24 1820 struct page *page;
f69ff943d Stephen Wilson 2011-05-24 1821
5c2ff95e4 Michael Holzheu 2016-02-02 1822 if (!pte_present(huge_pte))
f69ff943d Stephen Wilson 2011-05-24 1823 return 0;
f69ff943d Stephen Wilson 2011-05-24 1824
5c2ff95e4 Michael Holzheu 2016-02-02 1825 page = pte_page(huge_pte);
f69ff943d Stephen Wilson 2011-05-24 1826 if (!page)
f69ff943d Stephen Wilson 2011-05-24 1827 return 0;
f69ff943d Stephen Wilson 2011-05-24 1828
f69ff943d Stephen Wilson 2011-05-24 1829 md = walk->private;
5c2ff95e4 Michael Holzheu 2016-02-02 1830 gather_stats(page, md, pte_dirty(huge_pte), 1);
f69ff943d Stephen Wilson 2011-05-24 1831 return 0;
f69ff943d Stephen Wilson 2011-05-24 1832 }
f69ff943d Stephen Wilson 2011-05-24 1833

:::::: The code at line 1805 was first introduced by commit
:::::: f69ff943df6972aae96c10733b6847fa094d8a59 mm: proc: move show_numa_map() to fs/proc/task_mmu.c

:::::: TO: Stephen Wilson <wilsons@xxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip