All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.