All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [xiang:erofs/misc 2/3] fs/erofs/zdata.c:767 z_erofs_do_read_page() error: we previously assumed 'fe->cl' could be null (see line 666)
Date: Wed, 09 Mar 2022 22:20:48 +0800	[thread overview]
Message-ID: <202203092202.QayocaVB-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Xiang Gao <xiang@kernel.org>
CC: linux-kernel(a)vger.kernel.org
TO: Gao Xiang <hsiangkao@linux.alibaba.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/xiang/linux.git erofs/misc
head:   dd38670e1d1e1bbf14545d8f149267c0506c5119
commit: 00bdb207d41a8f783140eaa747ba86dfb3ca83f8 [2/3] erofs: get rid of `struct z_erofs_collector'
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: i386-randconfig-m021-20220307 (https://download.01.org/0day-ci/archive/20220309/202203092202.QayocaVB-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

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

New smatch warnings:
fs/erofs/zdata.c:767 z_erofs_do_read_page() error: we previously assumed 'fe->cl' could be null (see line 666)

Old smatch warnings:
fs/erofs/zdata.c:471 z_erofs_register_collection() warn: passing a valid pointer to 'PTR_ERR'
fs/erofs/zdata.c:1244 jobqueueset_init() warn: maybe use && instead of &

vim +767 fs/erofs/zdata.c

92e6efd566c4a15 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-12-08  639  
97e86a858bc360c drivers/staging/erofs/zdata.c     Gao Xiang         2019-07-31  640  static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe,
eaa9172ad988b3e fs/erofs/zdata.c                  Gao Xiang         2021-10-22  641  				struct page *page, struct page **pagepool)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  642  {
97e86a858bc360c drivers/staging/erofs/zdata.c     Gao Xiang         2019-07-31  643  	struct inode *const inode = fe->inode;
bda17a4577da729 fs/erofs/zdata.c                  Gao Xiang         2019-10-08  644  	struct erofs_sb_info *const sbi = EROFS_I_SB(inode);
3b423417d0d1d5a drivers/staging/erofs/unzip_vle.c Chao Yu           2019-01-15  645  	struct erofs_map_blocks *const map = &fe->map;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  646  	const loff_t offset = page_offset(page);
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  647  	bool tight = true;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  648  
92e6efd566c4a15 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-12-08  649  	enum z_erofs_cache_alloctype cache_strategy;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  650  	enum z_erofs_page_type page_type;
7dd68b147d60e5e drivers/staging/erofs/unzip_vle.c Thomas Weißschuh  2018-09-10  651  	unsigned int cur, end, spiltted, index;
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  652  	int err = 0;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  653  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  654  	/* register locked file pages as online pages in pack */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  655  	z_erofs_onlinepage_init(page);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  656  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  657  	spiltted = 0;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  658  	end = PAGE_SIZE;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  659  repeat:
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  660  	cur = end - 1;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  661  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  662  	/* lucky, within the range of the current map_blocks */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  663  	if (offset + cur >= map->m_la &&
1e5ceeab6929585 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  664  	    offset + cur < map->m_la + map->m_llen) {
97e86a858bc360c drivers/staging/erofs/zdata.c     Gao Xiang         2019-07-31  665  		/* didn't get a valid collection previously (very rare) */
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02 @666  		if (!fe->cl)
1e5ceeab6929585 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  667  			goto restart_now;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  668  		goto hitted;
1e5ceeab6929585 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  669  	}
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  670  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  671  	/* go ahead the next map_blocks */
4f761fa253b49f6 fs/erofs/zdata.c                  Gao Xiang         2019-09-04  672  	erofs_dbg("%s: [out-of-range] pos %llu", __func__, offset + cur);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  673  
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  674  	if (z_erofs_collector_end(fe))
f0c519fc2679ca0 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-11-23  675  		fe->backmost = false;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  676  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  677  	map->m_la = offset + cur;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  678  	map->m_llen = 0;
97e86a858bc360c drivers/staging/erofs/zdata.c     Gao Xiang         2019-07-31  679  	err = z_erofs_map_blocks_iter(inode, map, 0);
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  680  	if (err)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  681  		goto err_out;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  682  
1e5ceeab6929585 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  683  restart_now:
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  684  	if (!(map->m_flags & EROFS_MAP_MAPPED))
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  685  		goto hitted;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  686  
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  687  	err = z_erofs_collector_begin(fe, inode, map);
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  688  	if (err)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  689  		goto err_out;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  690  
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  691  	if (z_erofs_is_inline_pcluster(fe->pcl)) {
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  692  		void *mp;
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  693  
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  694  		mp = erofs_read_metabuf(&fe->map.buf, inode->i_sb,
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  695  					erofs_blknr(map->m_pa), EROFS_NO_KMAP);
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  696  		if (IS_ERR(mp)) {
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  697  			err = PTR_ERR(mp);
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  698  			erofs_err(inode->i_sb,
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  699  				  "failed to get inline page, err %d", err);
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  700  			goto err_out;
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  701  		}
09c543798c3cde1 fs/erofs/zdata.c                  Gao Xiang         2022-01-02  702  		get_page(fe->map.buf.page);
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  703  		WRITE_ONCE(fe->pcl->compressed_pages[0], fe->map.buf.page);
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  704  		fe->mode = COLLECT_PRIMARY_FOLLOWED_NOINPLACE;
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  705  	} else {
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  706  		/* preload all compressed pages (can change mode if needed) */
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  707  		if (should_alloc_managed_pages(fe, sbi->opt.cache_strategy,
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  708  					       map->m_la))
1825c8d7ce93c47 fs/erofs/zdata.c                  Gao Xiang         2020-12-09  709  			cache_strategy = TRYALLOC;
92e6efd566c4a15 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-12-08  710  		else
92e6efd566c4a15 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-12-08  711  			cache_strategy = DONTALLOC;
92e6efd566c4a15 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-12-08  712  
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  713  		preload_compressed_pages(fe, MNGD_MAPPING(sbi),
1825c8d7ce93c47 fs/erofs/zdata.c                  Gao Xiang         2020-12-09  714  					 cache_strategy, pagepool);
cecf864d3d76d50 fs/erofs/zdata.c                  Yue Hu            2021-12-29  715  	}
105d4ad857dcbf3 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  716  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  717  hitted:
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  718  	/*
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  719  	 * Ensure the current partial page belongs to this submit chain rather
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  720  	 * than other concurrent submit chains or the noio(bypass) chain since
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  721  	 * those chains are handled asynchronously thus the page cannot be used
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  722  	 * for inplace I/O or pagevec (should be processed in strict order.)
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  723  	 */
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  724  	tight &= (fe->mode >= COLLECT_PRIMARY_HOOKED &&
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  725  		  fe->mode != COLLECT_PRIMARY_FOLLOWED_NOINPLACE);
dc76ea8c1087b5c fs/erofs/zdata.c                  Gao Xiang         2019-09-22  726  
7dd68b147d60e5e drivers/staging/erofs/unzip_vle.c Thomas Weißschuh  2018-09-10  727  	cur = end - min_t(unsigned int, offset + end - map->m_la, end);
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  728  	if (!(map->m_flags & EROFS_MAP_MAPPED)) {
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  729  		zero_user_segment(page, cur, end);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  730  		goto next_part;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  731  	}
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  732  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  733  	/* let's derive page type */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  734  	page_type = cur ? Z_EROFS_VLE_PAGE_TYPE_HEAD :
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  735  		(!spiltted ? Z_EROFS_PAGE_TYPE_EXCLUSIVE :
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  736  			(tight ? Z_EROFS_PAGE_TYPE_EXCLUSIVE :
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  737  				Z_EROFS_VLE_PAGE_TYPE_TAIL_SHARED));
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  738  
a112152f6f3a2a8 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  739  	if (cur)
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  740  		tight &= (fe->mode >= COLLECT_PRIMARY_FOLLOWED);
a112152f6f3a2a8 drivers/staging/erofs/unzip_vle.c Gao Xiang         2019-02-27  741  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  742  retry:
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  743  	err = z_erofs_attach_page(fe, page, page_type,
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  744  				  fe->mode >= COLLECT_PRIMARY_FOLLOWED);
6aaa7b0664e6886 fs/erofs/zdata.c                  Gao Xiang         2020-12-08  745  	/* should allocate an additional short-lived page for pagevec */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  746  	if (err == -EAGAIN) {
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  747  		struct page *const newpage =
e3f78d5e7e6b082 fs/erofs/zdata.c                  Chao Yu           2020-09-17  748  				alloc_page(GFP_NOFS | __GFP_NOFAIL);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  749  
6aaa7b0664e6886 fs/erofs/zdata.c                  Gao Xiang         2020-12-08  750  		set_page_private(newpage, Z_EROFS_SHORTLIVED_PAGE);
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02  751  		err = z_erofs_attach_page(fe, newpage,
86432a6dca9bed7 fs/erofs/zdata.c                  Gao Xiang         2021-11-04  752  					  Z_EROFS_PAGE_TYPE_EXCLUSIVE, true);
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  753  		if (!err)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  754  			goto retry;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  755  	}
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  756  
8d8a09b093d7073 fs/erofs/zdata.c                  Gao Xiang         2019-08-30  757  	if (err)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  758  		goto err_out;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  759  
97e86a858bc360c drivers/staging/erofs/zdata.c     Gao Xiang         2019-07-31  760  	index = page->index - (map->m_la >> PAGE_SHIFT);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  761  
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  762  	z_erofs_onlinepage_fixup(page, index, true);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  763  
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  764  	/* bump up the number of spiltted parts of a page */
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  765  	++spiltted;
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  766  	/* also update nr_pages */
00bdb207d41a8f7 fs/erofs/zdata.c                  Gao Xiang         2022-03-02 @767  	fe->cl->nr_pages = max_t(pgoff_t, fe->cl->nr_pages, index + 1);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  768  next_part:
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  769  	/* can be used for verification */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  770  	map->m_llen = offset + cur - map->m_la;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  771  
2bc7596438aba6d drivers/staging/erofs/unzip_vle.c Kristaps Čivkulis 2018-08-05  772  	end = cur;
2bc7596438aba6d drivers/staging/erofs/unzip_vle.c Kristaps Čivkulis 2018-08-05  773  	if (end > 0)
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  774  		goto repeat;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  775  
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  776  out:
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  777  	z_erofs_onlinepage_endio(page);
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  778  
4f761fa253b49f6 fs/erofs/zdata.c                  Gao Xiang         2019-09-04  779  	erofs_dbg("%s, finish page: %pK spiltted: %u map->m_llen %llu",
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  780  		  __func__, page, spiltted, map->m_llen);
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  781  	return err;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  782  
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  783  	/* if some error occurred while processing this page */
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  784  err_out:
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  785  	SetPageError(page);
1e05ff36e6921ca drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-09-18  786  	goto out;
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  787  }
3883a79abd02272 drivers/staging/erofs/unzip_vle.c Gao Xiang         2018-07-26  788  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

                 reply	other threads:[~2022-03-09 14:20 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202203092202.QayocaVB-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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 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.