* [linux-next:master 7462/8237] mm/shmem.c:1761:12: warning: 'folio' is used uninitialized
@ 2022-05-03 17:53 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-05-03 17:53 UTC (permalink / raw)
To: Matthew Wilcox (Oracle)
Cc: kbuild-all, Linux Memory Management List, Andrew Morton
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 44a2f39e611ac0bc1f17c288a583d7f2e5684aa7
commit: 2b58b3f33ba268c00aa7181e203c58fab6661751 [7462/8237] mm/shmem: convert shmem_swapin_page() to shmem_swapin_folio()
config: sparc-randconfig-c023-20220501 (https://download.01.org/0day-ci/archive/20220504/202205040154.ijA4ofuQ-lkp@intel.com/config)
compiler: sparc-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=2b58b3f33ba268c00aa7181e203c58fab6661751
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 2b58b3f33ba268c00aa7181e203c58fab6661751
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=sparc SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
mm/shmem.c: In function 'shmem_swapin_folio.constprop':
>> mm/shmem.c:1761:12: warning: 'folio' is used uninitialized [-Wuninitialized]
1761 | if (folio) {
| ^
In file included from <command-line>:
mm/shmem.c: In function 'shmem_add_to_page_cache.constprop':
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_256' declared with attribute error: BUILD_BUG failed
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:333:25: note: in definition of macro '__compiletime_assert'
333 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
| ^~~~~~~~~~~~~~~~
include/linux/vm_event_item.h:147:27: note: in expansion of macro 'BUILD_BUG'
147 | #define THP_FILE_ALLOC ({ BUILD_BUG(); 0; })
| ^~~~~~~~~
mm/shmem.c:743:40: note: in expansion of macro 'THP_FILE_ALLOC'
743 | count_vm_event(THP_FILE_ALLOC);
| ^~~~~~~~~~~~~~
In file included from include/linux/math64.h:6,
from include/linux/time64.h:5,
from include/linux/restart_block.h:10,
from include/linux/thread_info.h:14,
from include/asm-generic/preempt.h:5,
from ./arch/sparc/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:78,
from include/linux/spinlock.h:55,
from include/linux/wait.h:9,
from include/linux/wait_bit.h:8,
from include/linux/fs.h:6,
from mm/shmem.c:24:
mm/shmem.c: In function 'shmem_getpage_gfp':
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_264' declared with attribute error: BUILD_BUG failed
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/math.h:15:46: note: in definition of macro '__round_mask'
15 | #define __round_mask(x, y) ((__typeof__(x))((y)-1))
| ^
mm/shmem.c:1892:26: note: in expansion of macro 'round_down'
1892 | hindex = round_down(index, HPAGE_PMD_NR);
| ^~~~~~~~~~
include/linux/compiler_types.h:340:9: note: in expansion of macro '__compiletime_assert'
340 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
| ^~~~~~~~~~~~~~~~
include/linux/huge_mm.h:307:28: note: in expansion of macro 'BUILD_BUG'
307 | #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
| ^~~~~~~~~
include/linux/huge_mm.h:105:26: note: in expansion of macro 'HPAGE_PMD_SHIFT'
105 | #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT)
| ^~~~~~~~~~~~~~~
include/linux/huge_mm.h:106:26: note: in expansion of macro 'HPAGE_PMD_ORDER'
106 | #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER)
| ^~~~~~~~~~~~~~~
mm/shmem.c:1892:44: note: in expansion of macro 'HPAGE_PMD_NR'
1892 | hindex = round_down(index, HPAGE_PMD_NR);
| ^~~~~~~~~~~~
In file included from <command-line>:
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_265' declared with attribute error: BUILD_BUG failed
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:333:25: note: in definition of macro '__compiletime_assert'
333 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
352 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
| ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
| ^~~~~~~~~~~~~~~~
include/linux/huge_mm.h:307:28: note: in expansion of macro 'BUILD_BUG'
307 | #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
| ^~~~~~~~~
include/linux/huge_mm.h:105:26: note: in expansion of macro 'HPAGE_PMD_SHIFT'
105 | #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT)
| ^~~~~~~~~~~~~~~
include/linux/huge_mm.h:106:26: note: in expansion of macro 'HPAGE_PMD_ORDER'
106 | #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER)
| ^~~~~~~~~~~~~~~
mm/shmem.c:1915:34: note: in expansion of macro 'HPAGE_PMD_NR'
1915 | hindex + HPAGE_PMD_NR - 1) {
| ^~~~~~~~~~~~
vim +/folio +1761 mm/shmem.c
1669
1670 /*
1671 * Swap in the page pointed to by *pagep.
1672 * Caller has to make sure that *pagep contains a valid swapped page.
1673 * Returns 0 and the page in pagep if success. On failure, returns the
1674 * error code and NULL in *pagep.
1675 */
1676 static int shmem_swapin_folio(struct inode *inode, pgoff_t index,
1677 struct folio **foliop, enum sgp_type sgp,
1678 gfp_t gfp, struct vm_area_struct *vma,
1679 vm_fault_t *fault_type)
1680 {
1681 struct address_space *mapping = inode->i_mapping;
1682 struct shmem_inode_info *info = SHMEM_I(inode);
1683 struct mm_struct *charge_mm = vma ? vma->vm_mm : NULL;
1684 struct page *page;
1685 struct folio *folio;
1686 swp_entry_t swap;
1687 int error;
1688
1689 VM_BUG_ON(!*foliop || !xa_is_value(*foliop));
1690 swap = radix_to_swp_entry(*foliop);
1691 *foliop = NULL;
1692
1693 /* Look it up and read it in.. */
1694 page = lookup_swap_cache(swap, NULL, 0);
1695 if (!page) {
1696 /* Or update major stats only when swapin succeeds?? */
1697 if (fault_type) {
1698 *fault_type |= VM_FAULT_MAJOR;
1699 count_vm_event(PGMAJFAULT);
1700 count_memcg_event_mm(charge_mm, PGMAJFAULT);
1701 }
1702 /* Here we actually start the io */
1703 page = shmem_swapin(swap, gfp, info, index);
1704 if (!page) {
1705 error = -ENOMEM;
1706 goto failed;
1707 }
1708 }
1709 folio = page_folio(page);
1710
1711 /* We have to do this with page locked to prevent races */
1712 folio_lock(folio);
1713 if (!folio_test_swapcache(folio) ||
1714 folio_swap_entry(folio).val != swap.val ||
1715 !shmem_confirm_swap(mapping, index, swap)) {
1716 error = -EEXIST;
1717 goto unlock;
1718 }
1719 if (!folio_test_uptodate(folio)) {
1720 error = -EIO;
1721 goto failed;
1722 }
1723 folio_wait_writeback(folio);
1724
1725 /*
1726 * Some architectures may have to restore extra metadata to the
1727 * folio after reading from swap.
1728 */
1729 arch_swap_restore(swap, folio);
1730
1731 if (shmem_should_replace_folio(folio, gfp)) {
1732 error = shmem_replace_page(&page, gfp, info, index);
1733 if (error)
1734 goto failed;
1735 }
1736
1737 error = shmem_add_to_page_cache(folio, mapping, index,
1738 swp_to_radix_entry(swap), gfp,
1739 charge_mm);
1740 if (error)
1741 goto failed;
1742
1743 spin_lock_irq(&info->lock);
1744 info->swapped--;
1745 shmem_recalc_inode(inode);
1746 spin_unlock_irq(&info->lock);
1747
1748 if (sgp == SGP_WRITE)
1749 folio_mark_accessed(folio);
1750
1751 delete_from_swap_cache(&folio->page);
1752 folio_mark_dirty(folio);
1753 swap_free(swap);
1754
1755 *foliop = folio;
1756 return 0;
1757 failed:
1758 if (!shmem_confirm_swap(mapping, index, swap))
1759 error = -EEXIST;
1760 unlock:
> 1761 if (folio) {
1762 folio_unlock(folio);
1763 folio_put(folio);
1764 }
1765
1766 return error;
1767 }
1768
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-03 17:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-03 17:53 [linux-next:master 7462/8237] mm/shmem.c:1761:12: warning: 'folio' is used uninitialized 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;
as well as URLs for NNTP newsgroup(s).