All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: David Howells <dhowells@redhat.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [dhowells-fs:netfs-crypt 55/68] fs/netfs/buffered_read.c:351:42: warning: variable 'subreq' is uninitialized when used here
Date: Sun, 03 May 2026 23:04:38 +0800	[thread overview]
Message-ID: <202605032211.ochIXzo6-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git netfs-crypt
head:   390dd59a3747b71c4dcff11b2cc5240385cbfedf
commit: 7693c7841ea1917c01c8cb6ae171070f4b69102b [55/68] netfs: Set subrequest->source at alloc before trace emission
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20260503/202605032211.ochIXzo6-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260503/202605032211.ochIXzo6-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/202605032211.ochIXzo6-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/netfs/buffered_read.c:351:42: warning: variable 'subreq' is uninitialized when used here [-Wuninitialized]
     351 |                                 __set_bit(NETFS_SREQ_COPY_TO_CACHE, &subreq->flags);
         |                                                                      ^~~~~~
   include/linux/bitops.h:53:52: note: expanded from macro '__set_bit'
      53 | #define __set_bit(nr, addr)             bitop(___set_bit, nr, addr)
         |                                                               ^~~~
   include/linux/bitops.h:44:37: note: expanded from macro 'bitop'
      44 |           __builtin_constant_p((uintptr_t)(addr) != (uintptr_t)NULL) && \
         |                                            ^~~~
   fs/netfs/buffered_read.c:273:37: note: initialize the variable 'subreq' to silence this warning
     273 |                 struct netfs_io_subrequest *subreq;
         |                                                   ^
         |                                                    = NULL
   1 warning generated.


vim +/subreq +351 fs/netfs/buffered_read.c

e2d46f2ec33253 David Howells 2024-12-16  247  
ee4cdf7ba857a8 David Howells 2024-07-02  248  /*
ee4cdf7ba857a8 David Howells 2024-07-02  249   * Perform a read to the pagecache from a series of sources of different types,
ee4cdf7ba857a8 David Howells 2024-07-02  250   * slicing up the region to be read according to available cache blocks and
ee4cdf7ba857a8 David Howells 2024-07-02  251   * network rsize.
ee4cdf7ba857a8 David Howells 2024-07-02  252   */
5454216af502c6 David Howells 2026-03-13  253  static void netfs_read_to_pagecache(struct netfs_io_request *rreq)
ee4cdf7ba857a8 David Howells 2024-07-02  254  {
4cbdfd0da8d2d5 David Howells 2026-04-09  255  	struct fscache_occupancy _occ = {
4cbdfd0da8d2d5 David Howells 2026-04-09  256  		.query_from	= rreq->start,
4cbdfd0da8d2d5 David Howells 2026-04-09  257  		.query_to	= rreq->start + rreq->len,
4cbdfd0da8d2d5 David Howells 2026-04-09  258  		.cached_from[0]	= 0,
4cbdfd0da8d2d5 David Howells 2026-04-09  259  		.cached_to[0]	= 0,
4cbdfd0da8d2d5 David Howells 2026-04-09  260  		.cached_from[1]	= ULLONG_MAX,
4cbdfd0da8d2d5 David Howells 2026-04-09  261  		.cached_to[1]	= ULLONG_MAX,
4cbdfd0da8d2d5 David Howells 2026-04-09  262  	};
4cbdfd0da8d2d5 David Howells 2026-04-09  263  	struct fscache_occupancy *occ = &_occ;
e192187e9d3cdb David Howells 2026-04-09  264  	struct netfs_io_stream *stream = &rreq->io_streams[0];
ee4cdf7ba857a8 David Howells 2024-07-02  265  	int ret = 0;
7e043a80b5dae5 David Howells 2022-11-03  266  
615fc17c41427e David Howells 2026-04-09  267  	_enter("R=%08x", rreq->debug_id);
615fc17c41427e David Howells 2026-04-09  268  
e192187e9d3cdb David Howells 2026-04-09  269  	bvecq_pos_set(&stream->dispatch_cursor, &rreq->load_cursor);
e192187e9d3cdb David Howells 2026-04-09  270  	bvecq_pos_set(&rreq->collect_cursor, &rreq->load_cursor);
615fc17c41427e David Howells 2026-04-09  271  
ee4cdf7ba857a8 David Howells 2024-07-02  272  	do {
ee4cdf7ba857a8 David Howells 2024-07-02  273  		struct netfs_io_subrequest *subreq;
7693c7841ea191 David Howells 2026-03-19  274  		enum netfs_io_source source;
7693c7841ea191 David Howells 2026-03-19  275  		unsigned long long hole_to, cache_to, start, stop;
7693c7841ea191 David Howells 2026-03-19  276  		size_t len;
7693c7841ea191 David Howells 2026-03-19  277  		bool copy;
5e51c627c5acbc David Howells 2022-11-04  278  
4cbdfd0da8d2d5 David Howells 2026-04-09  279  		/* If we don't have any, find out the next couple of data
4cbdfd0da8d2d5 David Howells 2026-04-09  280  		 * extents from the cache, containing of following the
4cbdfd0da8d2d5 David Howells 2026-04-09  281  		 * specified start offset.  Holes have to be fetched from the
4cbdfd0da8d2d5 David Howells 2026-04-09  282  		 * server; data regions from the cache.
4cbdfd0da8d2d5 David Howells 2026-04-09  283  		 */
4cbdfd0da8d2d5 David Howells 2026-04-09  284  		hole_to = occ->cached_from[0];
4cbdfd0da8d2d5 David Howells 2026-04-09  285  		cache_to = occ->cached_to[0];
e192187e9d3cdb David Howells 2026-04-09  286  		if (stream->issue_from >= cache_to) {
4cbdfd0da8d2d5 David Howells 2026-04-09  287  			/* Extent exhausted; shuffle down. */
4cbdfd0da8d2d5 David Howells 2026-04-09  288  			int i;
4cbdfd0da8d2d5 David Howells 2026-04-09  289  
4cbdfd0da8d2d5 David Howells 2026-04-09  290  			for (i = 0; i < ARRAY_SIZE(occ->cached_from) - 1; i++) {
4cbdfd0da8d2d5 David Howells 2026-04-09  291  				occ->cached_from[i] = occ->cached_from[i + 1];
4cbdfd0da8d2d5 David Howells 2026-04-09  292  				occ->cached_to[i]   = occ->cached_to[i + 1];
4cbdfd0da8d2d5 David Howells 2026-04-09  293  				occ->cached_type[i] = occ->cached_type[i + 1];
4cbdfd0da8d2d5 David Howells 2026-04-09  294  			}
4cbdfd0da8d2d5 David Howells 2026-04-09  295  			occ->cached_from[i] = ULLONG_MAX;
4cbdfd0da8d2d5 David Howells 2026-04-09  296  			occ->cached_to[i]   = ULLONG_MAX;
4cbdfd0da8d2d5 David Howells 2026-04-09  297  
4cbdfd0da8d2d5 David Howells 2026-04-09  298  			if (occ->cached_from[0] != ULLONG_MAX)
4cbdfd0da8d2d5 David Howells 2026-04-09  299  				continue;
4cbdfd0da8d2d5 David Howells 2026-04-09  300  
4cbdfd0da8d2d5 David Howells 2026-04-09  301  			/* Get new extents */
e192187e9d3cdb David Howells 2026-04-09  302  			netfs_read_query_cache(rreq, occ);
4cbdfd0da8d2d5 David Howells 2026-04-09  303  			continue;
4cbdfd0da8d2d5 David Howells 2026-04-09  304  		}
4cbdfd0da8d2d5 David Howells 2026-04-09  305  
7693c7841ea191 David Howells 2026-03-19  306  		start = stream->issue_from;
e192187e9d3cdb David Howells 2026-04-09  307  		stop = stream->issue_from + stream->buffered;
4986700e02d674 David Howells 2026-04-27  308  
09f608d47661d0 David Howells 2026-04-20  309  		unsigned long long zero_point = netfs_read_zero_point(rreq->inode);
4cbdfd0da8d2d5 David Howells 2026-04-09  310  		unsigned long long zlimit = umin(zero_point, rreq->i_size);
4cbdfd0da8d2d5 David Howells 2026-04-09  311  
7693c7841ea191 David Howells 2026-03-19  312  		_debug("rsub %llx %llx-%llx", start, hole_to, cache_to);
4cbdfd0da8d2d5 David Howells 2026-04-09  313  
e192187e9d3cdb David Howells 2026-04-09  314  		if (stream->issue_from >= hole_to && stream->issue_from < cache_to) {
4cbdfd0da8d2d5 David Howells 2026-04-09  315  			/* Overlap with a cached region, where the cache may
4cbdfd0da8d2d5 David Howells 2026-04-09  316  			 * record a block of zeroes.
4cbdfd0da8d2d5 David Howells 2026-04-09  317  			 */
e192187e9d3cdb David Howells 2026-04-09  318  			_debug("cached s=%llx c=%llx l=%zx",
e192187e9d3cdb David Howells 2026-04-09  319  			       stream->issue_from, cache_to, stream->buffered);
7693c7841ea191 David Howells 2026-03-19  320  			len = umin(cache_to - stream->issue_from, stream->buffered);
7693c7841ea191 David Howells 2026-03-19  321  			len = round_up(len, occ->granularity);
4cbdfd0da8d2d5 David Howells 2026-04-09  322  			if (occ->cached_type[0] == FSCACHE_EXTENT_ZERO) {
7693c7841ea191 David Howells 2026-03-19  323  				source = NETFS_FILL_WITH_ZEROES;
4cbdfd0da8d2d5 David Howells 2026-04-09  324  				netfs_stat(&netfs_n_rh_zero);
4cbdfd0da8d2d5 David Howells 2026-04-09  325  			} else {
7693c7841ea191 David Howells 2026-03-19  326  				source = NETFS_READ_FROM_CACHE;
16211268fcb366 David Howells 2022-03-01  327  			}
7693c7841ea191 David Howells 2026-03-19  328  		} else if (start >= zlimit &&
7693c7841ea191 David Howells 2026-03-19  329  			   start < stop) {
4cbdfd0da8d2d5 David Howells 2026-04-09  330  			/* If this range lies beyond the zero-point, that part
4cbdfd0da8d2d5 David Howells 2026-04-09  331  			 * can just be cleared locally.
4cbdfd0da8d2d5 David Howells 2026-04-09  332  			 */
7693c7841ea191 David Howells 2026-03-19  333  			_debug("zero %llx-%llx", start, stop);
7693c7841ea191 David Howells 2026-03-19  334  			len = stream->buffered;
7693c7841ea191 David Howells 2026-03-19  335  			source = NETFS_FILL_WITH_ZEROES;
4cbdfd0da8d2d5 David Howells 2026-04-09  336  			if (rreq->cache_resources.ops)
7693c7841ea191 David Howells 2026-03-19  337  				copy = true;
4cbdfd0da8d2d5 David Howells 2026-04-09  338  			netfs_stat(&netfs_n_rh_zero);
4cbdfd0da8d2d5 David Howells 2026-04-09  339  		} else {
4cbdfd0da8d2d5 David Howells 2026-04-09  340  			/* Read a cache hole from the server.  If any part of
4cbdfd0da8d2d5 David Howells 2026-04-09  341  			 * this range lies beyond the zero-point or the EOF,
4cbdfd0da8d2d5 David Howells 2026-04-09  342  			 * that part can just be cleared locally.
4cbdfd0da8d2d5 David Howells 2026-04-09  343  			 */
e192187e9d3cdb David Howells 2026-04-09  344  			unsigned long long limit = min3(zlimit, stop, hole_to);
4cbdfd0da8d2d5 David Howells 2026-04-09  345  
4cbdfd0da8d2d5 David Howells 2026-04-09  346  			_debug("limit %llx %llx", rreq->i_size, zero_point);
7693c7841ea191 David Howells 2026-03-19  347  			_debug("download %llx-%llx", start, stop);
7693c7841ea191 David Howells 2026-03-19  348  			len = umin(limit - start, ULONG_MAX);
7693c7841ea191 David Howells 2026-03-19  349  			source = NETFS_DOWNLOAD_FROM_SERVER;
4cbdfd0da8d2d5 David Howells 2026-04-09  350  			if (rreq->cache_resources.ops)
4cbdfd0da8d2d5 David Howells 2026-04-09 @351  				__set_bit(NETFS_SREQ_COPY_TO_CACHE, &subreq->flags);
4cbdfd0da8d2d5 David Howells 2026-04-09  352  			netfs_stat(&netfs_n_rh_download);
4cbdfd0da8d2d5 David Howells 2026-04-09  353  		}
4cbdfd0da8d2d5 David Howells 2026-04-09  354  
7693c7841ea191 David Howells 2026-03-19  355  		if (len == 0) {
7693c7841ea191 David Howells 2026-03-19  356  			pr_err("ZERO-LEN READ: R=%08x l=%zx/%zx s=%llx z=%llx i=%llx",
7693c7841ea191 David Howells 2026-03-19  357  			       rreq->debug_id, len, stream->buffered,
7693c7841ea191 David Howells 2026-03-19  358  			       start, zero_point, rreq->i_size);
16211268fcb366 David Howells 2022-03-01  359  			break;
16211268fcb366 David Howells 2022-03-01  360  		}
16211268fcb366 David Howells 2022-03-01  361  
7693c7841ea191 David Howells 2026-03-19  362  		subreq = netfs_alloc_read_subrequest(rreq, source);
7693c7841ea191 David Howells 2026-03-19  363  		if (!subreq) {
7693c7841ea191 David Howells 2026-03-19  364  			ret = -ENOMEM;
7693c7841ea191 David Howells 2026-03-19  365  			break;
7693c7841ea191 David Howells 2026-03-19  366  		}
7693c7841ea191 David Howells 2026-03-19  367  
7693c7841ea191 David Howells 2026-03-19  368  		subreq->start = start;
7693c7841ea191 David Howells 2026-03-19  369  		subreq->len   = len;
7693c7841ea191 David Howells 2026-03-19  370  		if (copy)
7693c7841ea191 David Howells 2026-03-19  371  			__set_bit(NETFS_SREQ_COPY_TO_CACHE, &subreq->flags);
7693c7841ea191 David Howells 2026-03-19  372  
e2d46f2ec33253 David Howells 2024-12-16  373  		netfs_issue_read(rreq, subreq);
5454216af502c6 David Howells 2026-03-13  374  		netfs_maybe_bulk_drop_ra_refs(rreq);
6b43bbe7fa2c53 David Howells 2026-04-27  375  
6b43bbe7fa2c53 David Howells 2026-04-27  376  		if (test_bit(NETFS_RREQ_PAUSE, &rreq->flags))
6b43bbe7fa2c53 David Howells 2026-04-27  377  			netfs_wait_for_paused_read(rreq);
6b43bbe7fa2c53 David Howells 2026-04-27  378  		if (test_bit(NETFS_RREQ_FAILED, &rreq->flags))
6b43bbe7fa2c53 David Howells 2026-04-27  379  			break;
ee4cdf7ba857a8 David Howells 2024-07-02  380  		cond_resched();
e192187e9d3cdb David Howells 2026-04-09  381  	} while (stream->buffered > 0);
ee4cdf7ba857a8 David Howells 2024-07-02  382  
e192187e9d3cdb David Howells 2026-04-09  383  	if (unlikely(!netfs_are_all_subreqs_queued(rreq))) {
e192187e9d3cdb David Howells 2026-04-09  384  		netfs_all_subreqs_queued(rreq);
2b1424cd131cfa David Howells 2025-05-19  385  		netfs_wake_collector(rreq);
e2d46f2ec33253 David Howells 2024-12-16  386  	}
ee4cdf7ba857a8 David Howells 2024-07-02  387  
ee4cdf7ba857a8 David Howells 2024-07-02  388  	/* Defer error return as we may need to wait for outstanding I/O. */
e192187e9d3cdb David Howells 2026-04-09  389  	if (ret < 0)
ee4cdf7ba857a8 David Howells 2024-07-02  390  		cmpxchg(&rreq->error, 0, ret);
615fc17c41427e David Howells 2026-04-09  391  
615fc17c41427e David Howells 2026-04-09  392  	bvecq_pos_unset(&rreq->load_cursor);
e192187e9d3cdb David Howells 2026-04-09  393  	bvecq_pos_unset(&stream->dispatch_cursor);
16211268fcb366 David Howells 2022-03-01  394  }
16211268fcb366 David Howells 2022-03-01  395  

:::::: The code at line 351 was first introduced by commit
:::::: 4cbdfd0da8d2d5220304b2df6260465f6cc50c7c cachefiles: Don't rely on backing fs storage map for most use cases

:::::: TO: David Howells <dhowells@redhat.com>
:::::: CC: David Howells <dhowells@redhat.com>

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

             reply	other threads:[~2026-05-03 15:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-03 15:04 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-05-02 18:15 [dhowells-fs:netfs-crypt 55/68] fs/netfs/buffered_read.c:351:42: warning: variable 'subreq' is uninitialized when used here kernel test robot

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=202605032211.ochIXzo6-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=dhowells@redhat.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 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.