Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: squashfs: fix leaked page locks when page actor allocation fails
Date: Mon, 28 Sep 2026 06:21:19 +0800	[thread overview]
Message-ID: <202609280655.spyNjO2a-lkp@intel.com> (raw)
In-Reply-To: <202609280655.spyNjO2a-lkp@intel.com>

Hi Nguyen,

kernel test robot noticed the following build warnings:



url:    https://github.com/intel-lab-lkp/linux/commits/Nguyen-Ngoc-Thang/squashfs-fix-leaked-page-locks-when-page-actor-allocation-fails/20260927-130541
base:   
patch link:    https://lore.kernel.org/r/202609280655.spyNjO2a-lkp%40intel.com
config: x86_64-randconfig-1003-20260928 (https://download.01.org/0day-ci/archive/20260928/202609280655.spyNjO2a-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
rustc: rustc 1.96.0 (ac68faa20 2026-05-25)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260928/202609280655.spyNjO2a-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609280655.spyNjO2a-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/squashfs/file_direct.c:121:1: warning: unused label 'out' [-Wunused-label]
     121 | out:
         | ^~~~
   1 warning generated.


vim +/out +121 fs/squashfs/file_direct.c

0d455c12c642864 Phillip Lougher         2013-11-13   20  
0d455c12c642864 Phillip Lougher         2013-11-13   21  /* Read separately compressed datablock directly into page cache */
2a7aea59cf4dd4a Matthew Wilcox (Oracle  2024-12-20   22) int squashfs_readpage_block(struct folio *folio, u64 block, int bsize,
a3f94cb99a854fa Phillip Lougher         2018-08-02   23  		int expected)
0d455c12c642864 Phillip Lougher         2013-11-13   24  {
2a7aea59cf4dd4a Matthew Wilcox (Oracle  2024-12-20   25) 	struct page *target_page = &folio->page;
2a7aea59cf4dd4a Matthew Wilcox (Oracle  2024-12-20   26) 	struct inode *inode = folio->mapping->host;
0d455c12c642864 Phillip Lougher         2013-11-13   27  	struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
12427de9439d68b Phillip Lougher         2023-11-13   28  	loff_t file_end = (i_size_read(inode) - 1) >> PAGE_SHIFT;
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01   29  	int mask = (1 << (msblk->block_log - PAGE_SHIFT)) - 1;
7f73fcde4d93072 Phillip Lougher         2024-08-19   30  	loff_t start_index = folio->index & ~mask;
12427de9439d68b Phillip Lougher         2023-11-13   31  	loff_t end_index = start_index | mask;
d31638ff6c5437c Phillip Lougher         2024-10-21   32  	loff_t index;
d31638ff6c5437c Phillip Lougher         2024-10-21   33  	int i, pages, bytes, res = -ENOMEM;
7f73fcde4d93072 Phillip Lougher         2024-08-19   34  	struct page **page, *last_page;
0d455c12c642864 Phillip Lougher         2013-11-13   35  	struct squashfs_page_actor *actor;
0d455c12c642864 Phillip Lougher         2013-11-13   36  	void *pageaddr;
0d455c12c642864 Phillip Lougher         2013-11-13   37  
0d455c12c642864 Phillip Lougher         2013-11-13   38  	if (end_index > file_end)
0d455c12c642864 Phillip Lougher         2013-11-13   39  		end_index = file_end;
0d455c12c642864 Phillip Lougher         2013-11-13   40  
0d455c12c642864 Phillip Lougher         2013-11-13   41  	pages = end_index - start_index + 1;
0d455c12c642864 Phillip Lougher         2013-11-13   42  
14694888db2c1f7 Fabian Frederick        2014-08-06   43  	page = kmalloc_array(pages, sizeof(void *), GFP_KERNEL);
0d455c12c642864 Phillip Lougher         2013-11-13   44  	if (page == NULL)
0d455c12c642864 Phillip Lougher         2013-11-13   45  		return res;
0d455c12c642864 Phillip Lougher         2013-11-13   46  
0d455c12c642864 Phillip Lougher         2013-11-13   47  	/* Try to grab all the pages covered by the Squashfs block */
d31638ff6c5437c Phillip Lougher         2024-10-21   48  	for (i = 0, index = start_index; index <= end_index; index++) {
d31638ff6c5437c Phillip Lougher         2024-10-21   49  		page[i] = (index == folio->index) ? target_page :
2a7aea59cf4dd4a Matthew Wilcox (Oracle  2024-12-20   50) 			grab_cache_page_nowait(folio->mapping, index);
0d455c12c642864 Phillip Lougher         2013-11-13   51  
1bb1a07afad9730 Phillip Lougher         2022-06-11   52  		if (page[i] == NULL)
0d455c12c642864 Phillip Lougher         2013-11-13   53  			continue;
0d455c12c642864 Phillip Lougher         2013-11-13   54  
0d455c12c642864 Phillip Lougher         2013-11-13   55  		if (PageUptodate(page[i])) {
0d455c12c642864 Phillip Lougher         2013-11-13   56  			unlock_page(page[i]);
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01   57  			put_page(page[i]);
1bb1a07afad9730 Phillip Lougher         2022-06-11   58  			continue;
0d455c12c642864 Phillip Lougher         2013-11-13   59  		}
0d455c12c642864 Phillip Lougher         2013-11-13   60  
1bb1a07afad9730 Phillip Lougher         2022-06-11   61  		i++;
0d455c12c642864 Phillip Lougher         2013-11-13   62  	}
0d455c12c642864 Phillip Lougher         2013-11-13   63  
1bb1a07afad9730 Phillip Lougher         2022-06-11   64  	pages = i;
1bb1a07afad9730 Phillip Lougher         2022-06-11   65  
f268eedddf3595e Phillip Lougher         2022-06-11   66  	/*
f268eedddf3595e Phillip Lougher         2022-06-11   67  	 * Create a "page actor" which will kmap and kunmap the
f268eedddf3595e Phillip Lougher         2022-06-11   68  	 * page cache pages appropriately within the decompressor
f268eedddf3595e Phillip Lougher         2022-06-11   69  	 */
2258e22f05aff58 Phillip Lougher         2024-08-19   70  	actor = squashfs_page_actor_init_special(msblk, page, pages, expected,
2258e22f05aff58 Phillip Lougher         2024-08-19   71  						start_index << PAGE_SHIFT);
f268eedddf3595e Phillip Lougher         2022-06-11   72  	if (actor == NULL)
3d998ec2d6828d8 Nguyen Ngoc Thang       2026-09-27   73  		goto mark_errored;
f268eedddf3595e Phillip Lougher         2022-06-11   74  
0d455c12c642864 Phillip Lougher         2013-11-13   75  	/* Decompress directly into the page cache buffers */
0d455c12c642864 Phillip Lougher         2013-11-13   76  	res = squashfs_read_data(inode->i_sb, block, bsize, NULL, actor);
f268eedddf3595e Phillip Lougher         2022-06-11   77  
7f73fcde4d93072 Phillip Lougher         2024-08-19   78  	last_page = squashfs_page_actor_free(actor);
f268eedddf3595e Phillip Lougher         2022-06-11   79  
0d455c12c642864 Phillip Lougher         2013-11-13   80  	if (res < 0)
0d455c12c642864 Phillip Lougher         2013-11-13   81  		goto mark_errored;
0d455c12c642864 Phillip Lougher         2013-11-13   82  
84e0e03b308816a Phillip Lougher         2024-08-23   83  	if (res != expected || IS_ERR(last_page)) {
a3f94cb99a854fa Phillip Lougher         2018-08-02   84  		res = -EIO;
a3f94cb99a854fa Phillip Lougher         2018-08-02   85  		goto mark_errored;
a3f94cb99a854fa Phillip Lougher         2018-08-02   86  	}
a3f94cb99a854fa Phillip Lougher         2018-08-02   87  
1bb1a07afad9730 Phillip Lougher         2022-06-11   88  	/* Last page (if present) may have trailing bytes not filled */
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01   89  	bytes = res % PAGE_SIZE;
7f73fcde4d93072 Phillip Lougher         2024-08-19   90  	if (end_index == file_end && last_page && bytes) {
7f73fcde4d93072 Phillip Lougher         2024-08-19   91  		pageaddr = kmap_local_page(last_page);
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01   92  		memset(pageaddr + bytes, 0, PAGE_SIZE - bytes);
1bb1a07afad9730 Phillip Lougher         2022-06-11   93  		kunmap_local(pageaddr);
0d455c12c642864 Phillip Lougher         2013-11-13   94  	}
0d455c12c642864 Phillip Lougher         2013-11-13   95  
0d455c12c642864 Phillip Lougher         2013-11-13   96  	/* Mark pages as uptodate, unlock and release */
0d455c12c642864 Phillip Lougher         2013-11-13   97  	for (i = 0; i < pages; i++) {
0d455c12c642864 Phillip Lougher         2013-11-13   98  		flush_dcache_page(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13   99  		SetPageUptodate(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13  100  		unlock_page(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13  101  		if (page[i] != target_page)
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01  102  			put_page(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13  103  	}
0d455c12c642864 Phillip Lougher         2013-11-13  104  
0d455c12c642864 Phillip Lougher         2013-11-13  105  	kfree(page);
0d455c12c642864 Phillip Lougher         2013-11-13  106  
0d455c12c642864 Phillip Lougher         2013-11-13  107  	return 0;
0d455c12c642864 Phillip Lougher         2013-11-13  108  
0d455c12c642864 Phillip Lougher         2013-11-13  109  mark_errored:
bbf45b7e6855556 Matthew Wilcox (Oracle  2024-04-20  110) 	/* Decompression failed.  Target_page is
0d455c12c642864 Phillip Lougher         2013-11-13  111  	 * dealt with by the caller
0d455c12c642864 Phillip Lougher         2013-11-13  112  	 */
0d455c12c642864 Phillip Lougher         2013-11-13  113  	for (i = 0; i < pages; i++) {
6d565409503f4e1 Phillip Lougher         2013-11-24  114  		if (page[i] == NULL || page[i] == target_page)
0d455c12c642864 Phillip Lougher         2013-11-13  115  			continue;
0d455c12c642864 Phillip Lougher         2013-11-13  116  		flush_dcache_page(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13  117  		unlock_page(page[i]);
09cbfeaf1a5a67b Kiryl Shutsemau         2016-04-01  118  		put_page(page[i]);
0d455c12c642864 Phillip Lougher         2013-11-13  119  	}
0d455c12c642864 Phillip Lougher         2013-11-13  120  
0d455c12c642864 Phillip Lougher         2013-11-13 @121  out:

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

           reply	other threads:[~2026-09-27 22:21 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <202609280655.spyNjO2a-lkp@intel.com>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202609280655.spyNjO2a-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox