* [chrome-os:chromeos-5.4 64/158] fs/proc/task_mmu.c:1879:28: sparse: sparse: context imbalance in 'deactivate_pte_range' - unexpected unlock
@ 2020-09-11 22:49 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-09-11 22:49 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 16514 bytes --]
CC: kbuild-all(a)lists.01.org
TO: cros-kernel-buildreports(a)googlegroups.com
TO: Guenter Roeck <groeck@google.com>
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 59cae41f4fcd3f1d266be2b63a13973486562f2e
commit: 4c3ad28b9c913ffe3146c439648f2ba50138a0ae [64/158] CHROMIUM: mm: per-process reclaim
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: i386-randconfig-s001-20200912 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.2-191-g10164920-dirty
git checkout 4c3ad28b9c913ffe3146c439648f2ba50138a0ae
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
fs/proc/task_mmu.c:671:28: sparse: sparse: context imbalance in 'smaps_pte_range' - unexpected unlock
fs/proc/task_mmu.c:1258:28: sparse: sparse: context imbalance in 'clear_refs_pte_range' - unexpected unlock
fs/proc/task_mmu.c:1611:28: sparse: sparse: context imbalance in 'pagemap_pmd_range' - unexpected unlock
>> fs/proc/task_mmu.c:1879:28: sparse: sparse: context imbalance in 'deactivate_pte_range' - unexpected unlock
>> fs/proc/task_mmu.c:1982:28: sparse: sparse: context imbalance in 'reclaim_pte_range' - unexpected unlock
git remote add chrome-os https://chromium.googlesource.com/chromiumos/third_party/kernel
git fetch --no-tags chrome-os chromeos-5.4
git checkout 4c3ad28b9c913ffe3146c439648f2ba50138a0ae
vim +/deactivate_pte_range +1879 fs/proc/task_mmu.c
4c3ad28b9c913f Minchan Kim 2015-01-09 1839
4c3ad28b9c913f Minchan Kim 2015-01-09 1840 static int deactivate_pte_range(pmd_t *pmd, unsigned long addr,
4c3ad28b9c913f Minchan Kim 2015-01-09 1841 unsigned long end, struct mm_walk *walk)
4c3ad28b9c913f Minchan Kim 2015-01-09 1842 {
4c3ad28b9c913f Minchan Kim 2015-01-09 1843 pte_t *orig_pte, *pte, ptent;
4c3ad28b9c913f Minchan Kim 2015-01-09 1844 spinlock_t *ptl;
4c3ad28b9c913f Minchan Kim 2015-01-09 1845 struct page *page;
4c3ad28b9c913f Minchan Kim 2015-01-09 1846 struct vm_area_struct *vma = walk->vma;
4c3ad28b9c913f Minchan Kim 2015-01-09 1847 struct mm_struct *mm = vma->vm_mm;
4c3ad28b9c913f Minchan Kim 2015-01-09 1848 unsigned long next = pmd_addr_end(addr, end);
4c3ad28b9c913f Minchan Kim 2015-01-09 1849
4c3ad28b9c913f Minchan Kim 2015-01-09 1850 ptl = pmd_trans_huge_lock(pmd, vma);
4c3ad28b9c913f Minchan Kim 2015-01-09 1851 if (ptl) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1852 if (!pmd_present(*pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1853 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1854
4c3ad28b9c913f Minchan Kim 2015-01-09 1855 if (is_huge_zero_pmd(*pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1856 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1857
4c3ad28b9c913f Minchan Kim 2015-01-09 1858 page = pmd_page(*pmd);
4c3ad28b9c913f Minchan Kim 2015-01-09 1859 if (page_mapcount(page) > 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 1860 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1861
4c3ad28b9c913f Minchan Kim 2015-01-09 1862 if (next - addr != HPAGE_PMD_SIZE) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1863 int err;
4c3ad28b9c913f Minchan Kim 2015-01-09 1864
4c3ad28b9c913f Minchan Kim 2015-01-09 1865 get_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1866 spin_unlock(ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1867 lock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1868 err = split_huge_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1869 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1870 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1871 if (!err)
4c3ad28b9c913f Minchan Kim 2015-01-09 1872 goto regular_page;
4c3ad28b9c913f Minchan Kim 2015-01-09 1873 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1874 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1875
4c3ad28b9c913f Minchan Kim 2015-01-09 1876 pmdp_test_and_clear_young(vma, addr, pmd);
4c3ad28b9c913f Minchan Kim 2015-01-09 1877 deactivate_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1878 huge_unlock:
4c3ad28b9c913f Minchan Kim 2015-01-09 @1879 spin_unlock(ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1880 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1881 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1882
4c3ad28b9c913f Minchan Kim 2015-01-09 1883 if (pmd_trans_unstable(pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1884 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1885
4c3ad28b9c913f Minchan Kim 2015-01-09 1886 regular_page:
4c3ad28b9c913f Minchan Kim 2015-01-09 1887 orig_pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1888 for (pte = orig_pte; addr < end; pte++, addr += PAGE_SIZE) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1889 ptent = *pte;
4c3ad28b9c913f Minchan Kim 2015-01-09 1890
4c3ad28b9c913f Minchan Kim 2015-01-09 1891 if (!pte_present(ptent))
4c3ad28b9c913f Minchan Kim 2015-01-09 1892 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 1893
4c3ad28b9c913f Minchan Kim 2015-01-09 1894 page = vm_normal_page(vma, addr, ptent);
4c3ad28b9c913f Minchan Kim 2015-01-09 1895 if (!page)
4c3ad28b9c913f Minchan Kim 2015-01-09 1896 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 1897
4c3ad28b9c913f Minchan Kim 2015-01-09 1898 if (PageTransCompound(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1899 if (page_mapcount(page) != 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 1900 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 1901 get_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1902 if (!trylock_page(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1903 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1904 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 1905 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1906 pte_unmap_unlock(orig_pte, ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1907 if (split_huge_page(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1908 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1909 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1910 pte_offset_map_lock(mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1911 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 1912 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1913 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1914 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1915 pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1916 pte--;
4c3ad28b9c913f Minchan Kim 2015-01-09 1917 addr -= PAGE_SIZE;
4c3ad28b9c913f Minchan Kim 2015-01-09 1918 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 1919 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1920
4c3ad28b9c913f Minchan Kim 2015-01-09 1921 VM_BUG_ON_PAGE(PageTransCompound(page), page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1922
4c3ad28b9c913f Minchan Kim 2015-01-09 1923 if (page_mapcount(page) > 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 1924 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 1925
4c3ad28b9c913f Minchan Kim 2015-01-09 1926 ptep_test_and_clear_young(vma, addr, pte);
4c3ad28b9c913f Minchan Kim 2015-01-09 1927 deactivate_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1928 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1929 pte_unmap_unlock(orig_pte, ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1930 cond_resched();
4c3ad28b9c913f Minchan Kim 2015-01-09 1931 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1932 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1933
4c3ad28b9c913f Minchan Kim 2015-01-09 1934
4c3ad28b9c913f Minchan Kim 2015-01-09 1935 static int reclaim_pte_range(pmd_t *pmd, unsigned long addr,
4c3ad28b9c913f Minchan Kim 2015-01-09 1936 unsigned long end, struct mm_walk *walk)
4c3ad28b9c913f Minchan Kim 2015-01-09 1937 {
4c3ad28b9c913f Minchan Kim 2015-01-09 1938 pte_t *orig_pte, *pte, ptent;
4c3ad28b9c913f Minchan Kim 2015-01-09 1939 spinlock_t *ptl;
4c3ad28b9c913f Minchan Kim 2015-01-09 1940 LIST_HEAD(page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 1941 struct page *page;
4c3ad28b9c913f Minchan Kim 2015-01-09 1942 int isolated = 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1943 struct vm_area_struct *vma = walk->vma;
4c3ad28b9c913f Minchan Kim 2015-01-09 1944 struct mm_struct *mm = vma->vm_mm;
4c3ad28b9c913f Minchan Kim 2015-01-09 1945 unsigned long next = pmd_addr_end(addr, end);
4c3ad28b9c913f Minchan Kim 2015-01-09 1946
4c3ad28b9c913f Minchan Kim 2015-01-09 1947 ptl = pmd_trans_huge_lock(pmd, vma);
4c3ad28b9c913f Minchan Kim 2015-01-09 1948 if (ptl) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1949 if (!pmd_present(*pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1950 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1951
4c3ad28b9c913f Minchan Kim 2015-01-09 1952 if (is_huge_zero_pmd(*pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1953 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1954
4c3ad28b9c913f Minchan Kim 2015-01-09 1955 page = pmd_page(*pmd);
4c3ad28b9c913f Minchan Kim 2015-01-09 1956 if (page_mapcount(page) > 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 1957 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1958
4c3ad28b9c913f Minchan Kim 2015-01-09 1959 if (next - addr != HPAGE_PMD_SIZE) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1960 int err;
4c3ad28b9c913f Minchan Kim 2015-01-09 1961
4c3ad28b9c913f Minchan Kim 2015-01-09 1962 get_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1963 spin_unlock(ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1964 lock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1965 err = split_huge_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1966 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1967 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1968 if (!err)
4c3ad28b9c913f Minchan Kim 2015-01-09 1969 goto regular_page;
4c3ad28b9c913f Minchan Kim 2015-01-09 1970 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1971 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1972
4c3ad28b9c913f Minchan Kim 2015-01-09 1973 if (isolate_lru_page(page))
4c3ad28b9c913f Minchan Kim 2015-01-09 1974 goto huge_unlock;
4c3ad28b9c913f Minchan Kim 2015-01-09 1975
4c3ad28b9c913f Minchan Kim 2015-01-09 1976 /* Clear all the references to make sure it gets reclaimed */
4c3ad28b9c913f Minchan Kim 2015-01-09 1977 pmdp_test_and_clear_young(vma, addr, pmd);
4c3ad28b9c913f Minchan Kim 2015-01-09 1978 ClearPageReferenced(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1979 test_and_clear_page_young(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 1980 list_add(&page->lru, &page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 1981 huge_unlock:
4c3ad28b9c913f Minchan Kim 2015-01-09 @1982 spin_unlock(ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1983 reclaim_pages(&page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 1984 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1985 }
4c3ad28b9c913f Minchan Kim 2015-01-09 1986
4c3ad28b9c913f Minchan Kim 2015-01-09 1987 if (pmd_trans_unstable(pmd))
4c3ad28b9c913f Minchan Kim 2015-01-09 1988 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 1989
4c3ad28b9c913f Minchan Kim 2015-01-09 1990 regular_page:
4c3ad28b9c913f Minchan Kim 2015-01-09 1991 orig_pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 1992 for (pte = orig_pte; addr < end; pte++, addr += PAGE_SIZE) {
4c3ad28b9c913f Minchan Kim 2015-01-09 1993 ptent = *pte;
4c3ad28b9c913f Minchan Kim 2015-01-09 1994 if (!pte_present(ptent))
4c3ad28b9c913f Minchan Kim 2015-01-09 1995 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 1996
4c3ad28b9c913f Minchan Kim 2015-01-09 1997 page = vm_normal_page(vma, addr, ptent);
4c3ad28b9c913f Minchan Kim 2015-01-09 1998 if (!page)
4c3ad28b9c913f Minchan Kim 2015-01-09 1999 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 2000
4c3ad28b9c913f Minchan Kim 2015-01-09 2001 if (PageTransCompound(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 2002 if (page_mapcount(page) != 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 2003 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 2004 get_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2005 if (!trylock_page(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 2006 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2007 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 2008 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2009 pte_unmap_unlock(orig_pte, ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2010
4c3ad28b9c913f Minchan Kim 2015-01-09 2011 if (split_huge_page(page)) {
4c3ad28b9c913f Minchan Kim 2015-01-09 2012 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2013 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2014 pte_offset_map_lock(mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2015 break;
4c3ad28b9c913f Minchan Kim 2015-01-09 2016 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2017 unlock_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2018 put_page(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2019 pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2020 pte--;
4c3ad28b9c913f Minchan Kim 2015-01-09 2021 addr -= PAGE_SIZE;
4c3ad28b9c913f Minchan Kim 2015-01-09 2022 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 2023 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2024
4c3ad28b9c913f Minchan Kim 2015-01-09 2025 VM_BUG_ON_PAGE(PageTransCompound(page), page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2026
4c3ad28b9c913f Minchan Kim 2015-01-09 2027 if (!PageLRU(page))
4c3ad28b9c913f Minchan Kim 2015-01-09 2028 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 2029
4c3ad28b9c913f Minchan Kim 2015-01-09 2030 if (page_mapcount(page) > 1)
4c3ad28b9c913f Minchan Kim 2015-01-09 2031 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 2032
4c3ad28b9c913f Minchan Kim 2015-01-09 2033 if (isolate_lru_page(page))
4c3ad28b9c913f Minchan Kim 2015-01-09 2034 continue;
4c3ad28b9c913f Minchan Kim 2015-01-09 2035
4c3ad28b9c913f Minchan Kim 2015-01-09 2036 isolated++;
4c3ad28b9c913f Minchan Kim 2015-01-09 2037 list_add(&page->lru, &page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 2038 /* Clear all the references to make sure it gets reclaimed */
4c3ad28b9c913f Minchan Kim 2015-01-09 2039 ptep_test_and_clear_young(vma, addr, pte);
4c3ad28b9c913f Minchan Kim 2015-01-09 2040 ClearPageReferenced(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2041 test_and_clear_page_young(page);
4c3ad28b9c913f Minchan Kim 2015-01-09 2042 if (isolated >= SWAP_CLUSTER_MAX) {
4c3ad28b9c913f Minchan Kim 2015-01-09 2043 pte_unmap_unlock(orig_pte, ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2044 reclaim_pages(&page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 2045 isolated = 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 2046 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2047 orig_pte = pte;
4c3ad28b9c913f Minchan Kim 2015-01-09 2048 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2049 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2050
4c3ad28b9c913f Minchan Kim 2015-01-09 2051 pte_unmap_unlock(orig_pte, ptl);
4c3ad28b9c913f Minchan Kim 2015-01-09 2052 reclaim_pages(&page_list);
4c3ad28b9c913f Minchan Kim 2015-01-09 2053
4c3ad28b9c913f Minchan Kim 2015-01-09 2054 cond_resched();
4c3ad28b9c913f Minchan Kim 2015-01-09 2055 return 0;
4c3ad28b9c913f Minchan Kim 2015-01-09 2056 }
4c3ad28b9c913f Minchan Kim 2015-01-09 2057
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29001 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-09-11 22:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11 22:49 [chrome-os:chromeos-5.4 64/158] fs/proc/task_mmu.c:1879:28: sparse: sparse: context imbalance in 'deactivate_pte_range' - unexpected unlock kernel test robot
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.