All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 7388/9759] mm/shmem.c:1316:16: warning: Value stored to 'folio' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
@ 2022-05-08 13:02 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-05-08 13:02 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 26787 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Matthew Wilcox (Oracle)" <willy@infradead.org>
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/next/linux-next.git master
head:   38a288f5941ef03752887ad86f2d85442358c99a
commit: b5a5d07ad0bbab66e0d24f93860423361d763453 [7388/9759] swap: turn get_swap_page() into folio_alloc_swap()
:::::: branch date: 2 days ago
:::::: commit date: 9 days ago
config: mips-randconfig-c004-20220508 (https://download.01.org/0day-ci/archive/20220508/202205082108.s73LU6wD-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project af4cf1c6b8ed0d8102fc5e69acdc2fcbbcdaa9a7)
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
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mips-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=b5a5d07ad0bbab66e0d24f93860423361d763453
        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 b5a5d07ad0bbab66e0d24f93860423361d763453
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   drivers/pinctrl/pinctrl-utils.c:48:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
           memset(new_map + old_num, 0, (new_num - old_num) * sizeof(*new_map));
           ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   38 warnings generated.
   drivers/gpio/gpio-tqmx86.c:318:27: warning: Access to field 'domain' results in a dereference of an undefined pointer value (loaded from variable 'girq') [clang-analyzer-core.NullDereference]
           irq_domain_set_pm_device(girq->domain, dev);
                                    ^~~~
   drivers/gpio/gpio-tqmx86.c:234:2: note: 'girq' declared without an initial value
           struct gpio_irq_chip *girq;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-tqmx86.c:240:6: note: Assuming 'irq' is >= 0
           if (irq < 0 && irq != -ENXIO)
               ^~~~~~~
   drivers/gpio/gpio-tqmx86.c:240:14: note: Left side of '&&' is false
           if (irq < 0 && irq != -ENXIO)
                       ^
   drivers/gpio/gpio-tqmx86.c:244:6: note: Assuming 'res' is non-null
           if (!res) {
               ^~~~
   drivers/gpio/gpio-tqmx86.c:244:2: note: Taking false branch
           if (!res) {
           ^
   drivers/gpio/gpio-tqmx86.c:250:6: note: Assuming 'io_base' is non-null
           if (!io_base)
               ^~~~~~~~
   drivers/gpio/gpio-tqmx86.c:250:2: note: Taking false branch
           if (!io_base)
           ^
   drivers/gpio/gpio-tqmx86.c:254:6: note: Assuming 'gpio' is non-null
           if (!gpio)
               ^~~~~
   drivers/gpio/gpio-tqmx86.c:254:2: note: Taking false branch
           if (!gpio)
           ^
   drivers/gpio/gpio-tqmx86.c:257:2: note: Loop condition is false.  Exiting loop
           raw_spin_lock_init(&gpio->spinlock);
           ^
   include/linux/spinlock.h:102:39: note: expanded from macro 'raw_spin_lock_init'
   # define raw_spin_lock_init(lock)                                       \
                                                                           ^
   drivers/gpio/gpio-tqmx86.c:279:6: note: Assuming 'irq' is <= 0
           if (irq > 0) {
               ^~~~~~~
   drivers/gpio/gpio-tqmx86.c:279:2: note: Taking false branch
           if (irq > 0) {
           ^
   drivers/gpio/gpio-tqmx86.c:313:6: note: Assuming 'ret' is 0
           if (ret) {
               ^~~
   drivers/gpio/gpio-tqmx86.c:313:2: note: Taking false branch
           if (ret) {
           ^
   drivers/gpio/gpio-tqmx86.c:318:27: note: Access to field 'domain' results in a dereference of an undefined pointer value (loaded from variable 'girq')
           irq_domain_set_pm_device(girq->domain, dev);
                                    ^~~~
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   46 warnings generated.
   Suppressed 46 warnings (46 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   37 warnings generated.
   Suppressed 37 warnings (37 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   46 warnings generated.
   Suppressed 46 warnings (46 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   51 warnings generated.
>> mm/shmem.c:1316:16: warning: Value stored to 'folio' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct folio *folio = page_folio(page);
                         ^~~~~
   mm/shmem.c:1316:16: note: Value stored to 'folio' during its initialization is never read
           struct folio *folio = page_folio(page);
                         ^~~~~
   mm/shmem.c:1338:2: warning: Value stored to 'index' is never read [clang-analyzer-deadcode.DeadStores]
           index = page->index;
           ^       ~~~~~~~~~~~
   mm/shmem.c:1338:2: note: Value stored to 'index' is never read
           index = page->index;
           ^       ~~~~~~~~~~~
   mm/shmem.c:1530:24: warning: Value stored to 'mapping' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct address_space *mapping = info->vfs_inode.i_mapping;
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/shmem.c:1530:24: note: Value stored to 'mapping' during its initialization is never read
           struct address_space *mapping = info->vfs_inode.i_mapping;
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/shmem.c:2269:3: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memset(info, 0, (char *)inode - (char *)info);
                   ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   mm/shmem.c:2269:3: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
                   memset(info, 0, (char *)inode - (char *)info);
                   ^
   include/linux/fortify-string.h:272:25: note: expanded from macro 'memset'
   #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:265:2: note: expanded from macro '__fortify_memset_chk'
           __underlying_memset(p, c, __fortify_size);                      \
           ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:47:29: note: expanded from macro '__underlying_memset'
   #define __underlying_memset     __builtin_memset
                                   ^~~~~~~~~~~~~~~~
   Suppressed 47 warnings (46 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   51 warnings generated.
   mm/util.c:63:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(buf, s, len);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   mm/util.c:63:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(buf, s, len);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   mm/util.c:109:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(buf, s, len);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   mm/util.c:109:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(buf, s, len);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   mm/util.c:131:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(p, src, len);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'

vim +/folio +1316 mm/shmem.c

^1da177e4c3f41 Linus Torvalds          2005-04-16  1310  
^1da177e4c3f41 Linus Torvalds          2005-04-16  1311  /*
^1da177e4c3f41 Linus Torvalds          2005-04-16  1312   * Move the page from the page cache to the swap cache.
^1da177e4c3f41 Linus Torvalds          2005-04-16  1313   */
^1da177e4c3f41 Linus Torvalds          2005-04-16  1314  static int shmem_writepage(struct page *page, struct writeback_control *wbc)
^1da177e4c3f41 Linus Torvalds          2005-04-16  1315  {
b5a5d07ad0bbab Matthew Wilcox (Oracle  2022-04-29 @1316) 	struct folio *folio = page_folio(page);
^1da177e4c3f41 Linus Torvalds          2005-04-16  1317  	struct shmem_inode_info *info;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1318  	struct address_space *mapping;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1319  	struct inode *inode;
6922c0c7abd387 Hugh Dickins            2011-08-03  1320  	swp_entry_t swap;
6922c0c7abd387 Hugh Dickins            2011-08-03  1321  	pgoff_t index;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1322  
1e6decf30af5c5 Hugh Dickins            2021-09-02  1323  	/*
1e6decf30af5c5 Hugh Dickins            2021-09-02  1324  	 * If /sys/kernel/mm/transparent_hugepage/shmem_enabled is "always" or
1e6decf30af5c5 Hugh Dickins            2021-09-02  1325  	 * "force", drivers/gpu/drm/i915/gem/i915_gem_shmem.c gets huge pages,
1e6decf30af5c5 Hugh Dickins            2021-09-02  1326  	 * and its shmem_writeback() needs them to be split when swapping.
1e6decf30af5c5 Hugh Dickins            2021-09-02  1327  	 */
1e6decf30af5c5 Hugh Dickins            2021-09-02  1328  	if (PageTransCompound(page)) {
1e6decf30af5c5 Hugh Dickins            2021-09-02  1329  		/* Ensure the subpages are still dirty */
1e6decf30af5c5 Hugh Dickins            2021-09-02  1330  		SetPageDirty(page);
1e6decf30af5c5 Hugh Dickins            2021-09-02  1331  		if (split_huge_page(page) < 0)
1e6decf30af5c5 Hugh Dickins            2021-09-02  1332  			goto redirty;
1e6decf30af5c5 Hugh Dickins            2021-09-02  1333  		ClearPageDirty(page);
1e6decf30af5c5 Hugh Dickins            2021-09-02  1334  	}
1e6decf30af5c5 Hugh Dickins            2021-09-02  1335  
^1da177e4c3f41 Linus Torvalds          2005-04-16  1336  	BUG_ON(!PageLocked(page));
^1da177e4c3f41 Linus Torvalds          2005-04-16  1337  	mapping = page->mapping;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1338  	index = page->index;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1339  	inode = mapping->host;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1340  	info = SHMEM_I(inode);
^1da177e4c3f41 Linus Torvalds          2005-04-16  1341  	if (info->flags & VM_LOCKED)
^1da177e4c3f41 Linus Torvalds          2005-04-16  1342  		goto redirty;
d9fe526a83b84e Hugh Dickins            2008-02-04  1343  	if (!total_swap_pages)
^1da177e4c3f41 Linus Torvalds          2005-04-16  1344  		goto redirty;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1345  
d9fe526a83b84e Hugh Dickins            2008-02-04  1346  	/*
97b713ba3ebaa6 Christoph Hellwig       2015-01-14  1347  	 * Our capabilities prevent regular writeback or sync from ever calling
97b713ba3ebaa6 Christoph Hellwig       2015-01-14  1348  	 * shmem_writepage; but a stacking filesystem might use ->writepage of
97b713ba3ebaa6 Christoph Hellwig       2015-01-14  1349  	 * its underlying filesystem, in which case tmpfs should write out to
97b713ba3ebaa6 Christoph Hellwig       2015-01-14  1350  	 * swap only in response to memory pressure, and not for the writeback
97b713ba3ebaa6 Christoph Hellwig       2015-01-14  1351  	 * threads or sync.
d9fe526a83b84e Hugh Dickins            2008-02-04  1352  	 */
48f170fb7d7db8 Hugh Dickins            2011-07-25  1353  	if (!wbc->for_reclaim) {
48f170fb7d7db8 Hugh Dickins            2011-07-25  1354  		WARN_ON_ONCE(1);	/* Still happens? Tell us about it! */
48f170fb7d7db8 Hugh Dickins            2011-07-25  1355  		goto redirty;
48f170fb7d7db8 Hugh Dickins            2011-07-25  1356  	}
1635f6a74152f1 Hugh Dickins            2012-05-29  1357  
1635f6a74152f1 Hugh Dickins            2012-05-29  1358  	/*
1635f6a74152f1 Hugh Dickins            2012-05-29  1359  	 * This is somewhat ridiculous, but without plumbing a SWAP_MAP_FALLOC
1635f6a74152f1 Hugh Dickins            2012-05-29  1360  	 * value into swapfile.c, the only way we can correctly account for a
1635f6a74152f1 Hugh Dickins            2012-05-29  1361  	 * fallocated page arriving here is now to initialize it and write it.
1aac1400319d30 Hugh Dickins            2012-05-29  1362  	 *
1aac1400319d30 Hugh Dickins            2012-05-29  1363  	 * That's okay for a page already fallocated earlier, but if we have
1aac1400319d30 Hugh Dickins            2012-05-29  1364  	 * not yet completed the fallocation, then (a) we want to keep track
1aac1400319d30 Hugh Dickins            2012-05-29  1365  	 * of this page in case we have to undo it, and (b) it may not be a
1aac1400319d30 Hugh Dickins            2012-05-29  1366  	 * good idea to continue anyway, once we're pushing into swap.  So
1aac1400319d30 Hugh Dickins            2012-05-29  1367  	 * reactivate the page, and let shmem_fallocate() quit when too many.
1635f6a74152f1 Hugh Dickins            2012-05-29  1368  	 */
1635f6a74152f1 Hugh Dickins            2012-05-29  1369  	if (!PageUptodate(page)) {
1aac1400319d30 Hugh Dickins            2012-05-29  1370  		if (inode->i_private) {
1aac1400319d30 Hugh Dickins            2012-05-29  1371  			struct shmem_falloc *shmem_falloc;
1aac1400319d30 Hugh Dickins            2012-05-29  1372  			spin_lock(&inode->i_lock);
1aac1400319d30 Hugh Dickins            2012-05-29  1373  			shmem_falloc = inode->i_private;
1aac1400319d30 Hugh Dickins            2012-05-29  1374  			if (shmem_falloc &&
8e205f779d1443 Hugh Dickins            2014-07-23  1375  			    !shmem_falloc->waitq &&
1aac1400319d30 Hugh Dickins            2012-05-29  1376  			    index >= shmem_falloc->start &&
1aac1400319d30 Hugh Dickins            2012-05-29  1377  			    index < shmem_falloc->next)
1aac1400319d30 Hugh Dickins            2012-05-29  1378  				shmem_falloc->nr_unswapped++;
1aac1400319d30 Hugh Dickins            2012-05-29  1379  			else
1aac1400319d30 Hugh Dickins            2012-05-29  1380  				shmem_falloc = NULL;
1aac1400319d30 Hugh Dickins            2012-05-29  1381  			spin_unlock(&inode->i_lock);
1aac1400319d30 Hugh Dickins            2012-05-29  1382  			if (shmem_falloc)
1aac1400319d30 Hugh Dickins            2012-05-29  1383  				goto redirty;
1aac1400319d30 Hugh Dickins            2012-05-29  1384  		}
1635f6a74152f1 Hugh Dickins            2012-05-29  1385  		clear_highpage(page);
1635f6a74152f1 Hugh Dickins            2012-05-29  1386  		flush_dcache_page(page);
1635f6a74152f1 Hugh Dickins            2012-05-29  1387  		SetPageUptodate(page);
1635f6a74152f1 Hugh Dickins            2012-05-29  1388  	}
1635f6a74152f1 Hugh Dickins            2012-05-29  1389  
b5a5d07ad0bbab Matthew Wilcox (Oracle  2022-04-29  1390) 	swap = folio_alloc_swap(folio);
48f170fb7d7db8 Hugh Dickins            2011-07-25  1391  	if (!swap.val)
48f170fb7d7db8 Hugh Dickins            2011-07-25  1392  		goto redirty;
d9fe526a83b84e Hugh Dickins            2008-02-04  1393  
b1dea800ac3959 Hugh Dickins            2011-05-11  1394  	/*
b1dea800ac3959 Hugh Dickins            2011-05-11  1395  	 * Add inode to shmem_unuse()'s list of swapped-out inodes,
6922c0c7abd387 Hugh Dickins            2011-08-03  1396  	 * if it's not already there.  Do it now before the page is
6922c0c7abd387 Hugh Dickins            2011-08-03  1397  	 * moved to swap cache, when its pagelock no longer protects
b1dea800ac3959 Hugh Dickins            2011-05-11  1398  	 * the inode from eviction.  But don't unlock the mutex until
6922c0c7abd387 Hugh Dickins            2011-08-03  1399  	 * we've incremented swapped, because shmem_unuse_inode() will
6922c0c7abd387 Hugh Dickins            2011-08-03  1400  	 * prune a !swapped inode from the swaplist under this mutex.
b1dea800ac3959 Hugh Dickins            2011-05-11  1401  	 */
b1dea800ac3959 Hugh Dickins            2011-05-11  1402  	mutex_lock(&shmem_swaplist_mutex);
05bf86b4ccfd0f Hugh Dickins            2011-05-14  1403  	if (list_empty(&info->swaplist))
b56a2d8af9147a Vineeth Remanan Pillai  2019-03-05  1404  		list_add(&info->swaplist, &shmem_swaplist);
b1dea800ac3959 Hugh Dickins            2011-05-11  1405  
4afab1cd256e42 Yang Shi                2019-11-30  1406  	if (add_to_swap_cache(page, swap,
3852f6768ede54 Joonsoo Kim             2020-08-11  1407  			__GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN,
3852f6768ede54 Joonsoo Kim             2020-08-11  1408  			NULL) == 0) {
4595ef88d13613 Kirill A. Shutemov      2016-07-26  1409  		spin_lock_irq(&info->lock);
6922c0c7abd387 Hugh Dickins            2011-08-03  1410  		shmem_recalc_inode(inode);
267a4c76bbdb95 Hugh Dickins            2015-12-11  1411  		info->swapped++;
4595ef88d13613 Kirill A. Shutemov      2016-07-26  1412  		spin_unlock_irq(&info->lock);
6922c0c7abd387 Hugh Dickins            2011-08-03  1413  
267a4c76bbdb95 Hugh Dickins            2015-12-11  1414  		swap_shmem_alloc(swap);
267a4c76bbdb95 Hugh Dickins            2015-12-11  1415  		shmem_delete_from_page_cache(page, swp_to_radix_entry(swap));
267a4c76bbdb95 Hugh Dickins            2015-12-11  1416  
6922c0c7abd387 Hugh Dickins            2011-08-03  1417  		mutex_unlock(&shmem_swaplist_mutex);
d9fe526a83b84e Hugh Dickins            2008-02-04  1418  		BUG_ON(page_mapped(page));
9fab5619bdd7f8 Hugh Dickins            2009-03-31  1419  		swap_writepage(page, wbc);
^1da177e4c3f41 Linus Torvalds          2005-04-16  1420  		return 0;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1421  	}
^1da177e4c3f41 Linus Torvalds          2005-04-16  1422  
6922c0c7abd387 Hugh Dickins            2011-08-03  1423  	mutex_unlock(&shmem_swaplist_mutex);
75f6d6d29a40b5 Minchan Kim             2017-07-06  1424  	put_swap_page(page, swap);
^1da177e4c3f41 Linus Torvalds          2005-04-16  1425  redirty:
^1da177e4c3f41 Linus Torvalds          2005-04-16  1426  	set_page_dirty(page);
d9fe526a83b84e Hugh Dickins            2008-02-04  1427  	if (wbc->for_reclaim)
d9fe526a83b84e Hugh Dickins            2008-02-04  1428  		return AOP_WRITEPAGE_ACTIVATE;	/* Return with page locked */
d9fe526a83b84e Hugh Dickins            2008-02-04  1429  	unlock_page(page);
d9fe526a83b84e Hugh Dickins            2008-02-04  1430  	return 0;
^1da177e4c3f41 Linus Torvalds          2005-04-16  1431  }
^1da177e4c3f41 Linus Torvalds          2005-04-16  1432  

-- 
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-08 13:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-08 13:02 [linux-next:master 7388/9759] mm/shmem.c:1316:16: warning: Value stored to 'folio' during its initialization is never read [clang-analyzer-deadcode.DeadStores] 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.