lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202509231206.6HNck2h0-lkp@intel.com>
Date: Tue, 23 Sep 2025 10:08:45 +0800
From: kernel test robot <lkp@...el.com>
To: Chunhai Guo <guochunhai@...o.com>, xiang@...nel.org
Cc: oe-kbuild-all@...ts.linux.dev, chao@...nel.org, zbestahu@...il.com,
	jefflexu@...ux.alibaba.com, dhavale@...gle.com,
	lihongbo22@...wei.com, linux-erofs@...ts.ozlabs.org,
	linux-kernel@...r.kernel.org, Chunhai Guo <guochunhai@...o.com>
Subject: Re: [PATCH] erofs: add direct I/O support for compressed data

Hi Chunhai,

kernel test robot noticed the following build warnings:

[auto build test WARNING on xiang-erofs/dev-test]
[also build test WARNING on xiang-erofs/dev xiang-erofs/fixes linus/master v6.17-rc7 next-20250922]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Chunhai-Guo/erofs-add-direct-I-O-support-for-compressed-data/20250922-204843
base:   https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git dev-test
patch link:    https://lore.kernel.org/r/20250922124304.489419-1-guochunhai%40vivo.com
patch subject: [PATCH] erofs: add direct I/O support for compressed data
config: loongarch-randconfig-r072-20250923 (https://download.01.org/0day-ci/archive/20250923/202509231206.6HNck2h0-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project cafc064fc7a96b3979a023ddae1da2b499d6c954)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250923/202509231206.6HNck2h0-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509231206.6HNck2h0-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/erofs/zdata.c:2069:6: warning: variable 'tmp_cnt' set but not used [-Wunused-but-set-variable]
    2069 |         int tmp_cnt = 0;
         |             ^
   1 warning generated.


vim +/tmp_cnt +2069 fs/erofs/zdata.c

  2056	
  2057	static ssize_t z_erofs_dio_read_iter(struct kiocb *iocb, struct iov_iter *iter)
  2058	{
  2059		struct inode *inode = file_inode(iocb->ki_filp);
  2060		Z_EROFS_DEFINE_FRONTEND(f, inode, iocb->ki_pos);
  2061		ssize_t err, off0;
  2062		loff_t offset = iocb->ki_pos;
  2063		unsigned int i = 0, total_pages, nr_pages = 0;
  2064		struct folio *head = NULL, *folio;
  2065		struct dio_erofs dio;
  2066		struct page **pages;
  2067		loff_t i_size;
  2068		struct iov_iter iter_saved = *iter;
> 2069		int tmp_cnt = 0;
  2070	
  2071		if (!iov_iter_count(iter))
  2072			return 0;
  2073	
  2074		i_size = i_size_read(inode);
  2075		if (offset >= i_size)
  2076			return 0;
  2077	
  2078		memset(&dio, 0, offsetof(struct dio_erofs, pages));
  2079		atomic_set(&dio.ref, 1);
  2080		dio.should_dirty = user_backed_iter(iter) && iov_iter_rw(iter) == READ;
  2081		dio.iocb = iocb;
  2082		dio.pos = ALIGN(min(iocb->ki_pos + (loff_t)iov_iter_count(iter),
  2083					i_size), PAGE_SIZE);
  2084		dio.is_pinned = iov_iter_extract_will_pin(iter);
  2085		dio.waiter = current;
  2086		f.dio = &dio;
  2087		iter_saved = *iter;
  2088		inode_dio_begin(inode);
  2089		pages = dio.pages;
  2090		total_pages = DIV_ROUND_UP(dio.pos - iocb->ki_pos, PAGE_SIZE);
  2091		for (; total_pages > 0; total_pages -= nr_pages) {
  2092			err = iov_iter_extract_pages(iter, &pages, LONG_MAX,
  2093					min(ARRAY_SIZE(dio.pages), total_pages), 0,
  2094					&off0);
  2095			if (err <= 0) {
  2096				err = -EFAULT;
  2097				goto fail_dio;
  2098			}
  2099			DBG_BUGON(off0);
  2100			iov_iter_revert(iter, err & ~PAGE_MASK);
  2101			nr_pages = DIV_ROUND_UP(err, PAGE_SIZE);
  2102			tmp_cnt += nr_pages;
  2103			for (i = 0; i < nr_pages; i++) {
  2104				folio = page_folio(pages[i]);
  2105				if (folio_test_large(folio) ||
  2106						folio_test_private(folio)) {
  2107					err = -EFAULT;
  2108					goto fail_dio;
  2109				}
  2110				folio->private = head;
  2111				head = folio;
  2112			}
  2113		}
  2114	
  2115		z_erofs_pcluster_readmore(&f, NULL, true);
  2116		while (head) {
  2117			folio = head;
  2118			head = folio_get_private(folio);
  2119			dio.pos -= folio_size(folio);
  2120			err = z_erofs_scan_folio(&f, folio, false);
  2121			if (err && err != -EINTR)
  2122				erofs_err(inode->i_sb, "readahead error at folio %lu @ nid %llu",
  2123					  folio->index, EROFS_I(inode)->nid);
  2124		}
  2125		z_erofs_pcluster_end(&f);
  2126	
  2127		err = z_erofs_runqueue(&f, 0);
  2128		erofs_put_metabuf(&f.map.buf);
  2129		erofs_release_pages(&f.pagepool);
  2130	
  2131		if (!atomic_dec_and_test(&dio.ref)) {
  2132			for (;;) {
  2133				set_current_state(TASK_UNINTERRUPTIBLE);
  2134				if (!READ_ONCE(dio.waiter))
  2135					break;
  2136	
  2137				blk_io_schedule();
  2138			}
  2139			__set_current_state(TASK_RUNNING);
  2140		}
  2141	
  2142		err = err ?: dio.eio;
  2143		if (likely(!err)) {
  2144			err = dio.size;
  2145			if (offset + dio.size > i_size) /* check for short read */
  2146				err = i_size - offset;
  2147			iocb->ki_pos += err;
  2148		}
  2149		inode_dio_end(inode);
  2150		return err;
  2151	
  2152	fail_dio:
  2153		if (dio.is_pinned) {
  2154			while (head) {
  2155				folio = head;
  2156				head = folio_get_private(folio);
  2157				unpin_user_page(folio_page(folio, 0));
  2158			}
  2159			for (; i < nr_pages; i++)
  2160				unpin_user_page(dio.pages[i]);
  2161		}
  2162		*iter = iter_saved;
  2163		return err;
  2164	}
  2165	

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ