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:ceph-iter 81/87] fs/ceph/inode.c:2503:50: warning: variable 'pos' is uninitialized when used here
Date: Sat, 05 Sep 2026 11:07:35 +0800	[thread overview]
Message-ID: <202609051157.fouhIIkr-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git ceph-iter
head:   376ad9d4942bf11500931178bbeb965348f01057
commit: b761e790c5985b9648236697803fa145e76ee755 [81/87] ceph: Use netfslib [INCOMPLETE]
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20260905/202609051157.fouhIIkr-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 0edd1b088cc36b4faee80358c925a91e16006258)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260905/202609051157.fouhIIkr-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/202609051157.fouhIIkr-lkp@intel.com/

All warnings (new ones prefixed by >>):

   fs/ceph/inode.c:2478:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2478 |         if (ret < 0 && ret != -ENODATA)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2536:15: note: uninitialized use occurs here
    2536 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2478:2: note: remove the 'if' if its condition is always false
    2478 |         if (ret < 0 && ret != -ENODATA)
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2479 |                 goto out;
         |                 ~~~~~~~~
   fs/ceph/inode.c:2472:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2472 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2473 |             ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
         |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2536:15: note: uninitialized use occurs here
    2536 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2472:2: note: remove the 'if' if its condition is always false
    2472 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2473 |             ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
         |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2474 |                 goto out;
         |                 ~~~~~~~~
   fs/ceph/inode.c:2472:6: warning: variable 'header' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
    2472 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2536:15: note: uninitialized use occurs here
    2536 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2472:6: note: remove the '||' if its condition is always false
    2472 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2469:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2469 |         if (!dbuf)
         |             ^~~~~
   fs/ceph/inode.c:2536:15: note: uninitialized use occurs here
    2536 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2469:2: note: remove the 'if' if its condition is always false
    2469 |         if (!dbuf)
         |         ^~~~~~~~~~
    2470 |                 goto out;
         |                 ~~~~~~~~
   fs/ceph/inode.c:2451:50: note: initialize the variable 'header' to silence this warning
    2451 |         struct ceph_fscrypt_truncate_size_header *header;
         |                                                         ^
         |                                                          = NULL
>> fs/ceph/inode.c:2503:50: warning: variable 'pos' is uninitialized when used here [-Wuninitialized]
    2503 |                 doutc(cl, "hit hole, ppos %lld < size %lld\n", pos, i_size);
         |                                                                ^~~
   fs/ceph/inode.c:2446:12: note: initialize the variable 'pos' to silence this warning
    2446 |         loff_t pos, orig_pos = round_down(attr->ia_size,
         |                   ^
         |                    = 0
   5 warnings generated.


vim +/pos +2503 fs/ceph/inode.c

79f2f6ad878c1f Jeff Layton   2020-09-03  2431  
5c64737d253683 Xiubo Li      2022-08-25  2432  /*
5c64737d253683 Xiubo Li      2022-08-25  2433   * Transfer the encrypted last block to the MDS and the MDS
5c64737d253683 Xiubo Li      2022-08-25  2434   * will help update it when truncating a smaller size.
5c64737d253683 Xiubo Li      2022-08-25  2435   *
5c64737d253683 Xiubo Li      2022-08-25  2436   * We don't support a PAGE_SIZE that is smaller than the
5c64737d253683 Xiubo Li      2022-08-25  2437   * CEPH_FSCRYPT_BLOCK_SIZE.
5c64737d253683 Xiubo Li      2022-08-25  2438   */
5c64737d253683 Xiubo Li      2022-08-25  2439  static int fill_fscrypt_truncate(struct inode *inode,
5c64737d253683 Xiubo Li      2022-08-25  2440  				 struct ceph_mds_request *req,
5c64737d253683 Xiubo Li      2022-08-25  2441  				 struct iattr *attr)
5c64737d253683 Xiubo Li      2022-08-25  2442  {
38d46409c4639a Xiubo Li      2023-06-12  2443  	struct ceph_client *cl = ceph_inode_to_client(inode);
5c64737d253683 Xiubo Li      2022-08-25  2444  	struct ceph_inode_info *ci = ceph_inode(inode);
5c64737d253683 Xiubo Li      2022-08-25  2445  	int boff = attr->ia_size % CEPH_FSCRYPT_BLOCK_SIZE;
5c64737d253683 Xiubo Li      2022-08-25  2446  	loff_t pos, orig_pos = round_down(attr->ia_size,
5c64737d253683 Xiubo Li      2022-08-25  2447  					  CEPH_FSCRYPT_BLOCK_SIZE);
5c64737d253683 Xiubo Li      2022-08-25  2448  	u64 block = orig_pos >> CEPH_FSCRYPT_BLOCK_SHIFT;
e52f99c9eea903 David Howells 2023-08-03  2449  	struct bvecq *dbuf = NULL;
5c64737d253683 Xiubo Li      2022-08-25  2450  	struct iov_iter iter;
e52f99c9eea903 David Howells 2023-08-03  2451  	struct ceph_fscrypt_truncate_size_header *header;
e52f99c9eea903 David Howells 2023-08-03  2452  	void *p;
5c64737d253683 Xiubo Li      2022-08-25  2453  	int len = CEPH_FSCRYPT_BLOCK_SIZE;
5c64737d253683 Xiubo Li      2022-08-25  2454  	loff_t i_size = i_size_read(inode);
5c64737d253683 Xiubo Li      2022-08-25  2455  	int got, ret, issued;
5c64737d253683 Xiubo Li      2022-08-25  2456  
5c64737d253683 Xiubo Li      2022-08-25  2457  	ret = __ceph_get_caps(inode, NULL, CEPH_CAP_FILE_RD, 0, -1, &got);
5c64737d253683 Xiubo Li      2022-08-25  2458  	if (ret < 0)
5c64737d253683 Xiubo Li      2022-08-25  2459  		return ret;
5c64737d253683 Xiubo Li      2022-08-25  2460  
5c64737d253683 Xiubo Li      2022-08-25  2461  	issued = __ceph_caps_issued(ci, NULL);
5c64737d253683 Xiubo Li      2022-08-25  2462  
38d46409c4639a Xiubo Li      2023-06-12  2463  	doutc(cl, "size %lld -> %lld got cap refs on %s, issued %s\n",
5c64737d253683 Xiubo Li      2022-08-25  2464  	      i_size, attr->ia_size, ceph_cap_string(got),
5c64737d253683 Xiubo Li      2022-08-25  2465  	      ceph_cap_string(issued));
5c64737d253683 Xiubo Li      2022-08-25  2466  
5c64737d253683 Xiubo Li      2022-08-25  2467  	ret = -ENOMEM;
e52f99c9eea903 David Howells 2023-08-03  2468  	dbuf = bvecq_alloc_chain(2, GFP_KERNEL, false);
e52f99c9eea903 David Howells 2023-08-03 @2469  	if (!dbuf)
5c64737d253683 Xiubo Li      2022-08-25  2470  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2471  
e52f99c9eea903 David Howells 2023-08-03  2472  	if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
e52f99c9eea903 David Howells 2023-08-03  2473  	    ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
5c64737d253683 Xiubo Li      2022-08-25  2474  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2475  
e52f99c9eea903 David Howells 2023-08-03  2476  	iov_iter_bvec_queue(&iter, ITER_DEST, dbuf, 1, 0, len);
b761e790c5985b David Howells 2024-12-05  2477  	ret = netfs_unbuffered_read_from_inode(inode, orig_pos, dbuf, len, true);
b761e790c5985b David Howells 2024-12-05  2478  	if (ret < 0 && ret != -ENODATA)
5c64737d253683 Xiubo Li      2022-08-25  2479  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2480  
e52f99c9eea903 David Howells 2023-08-03  2481  	header = kmap_local_bvecq(dbuf, 0);
e52f99c9eea903 David Howells 2023-08-03  2482  
5c64737d253683 Xiubo Li      2022-08-25  2483  	/* Insert the header first */
e52f99c9eea903 David Howells 2023-08-03  2484  	header->ver = 1;
e52f99c9eea903 David Howells 2023-08-03  2485  	header->compat = 1;
e52f99c9eea903 David Howells 2023-08-03  2486  	header->change_attr = cpu_to_le64(inode_peek_iversion_raw(inode));
5c64737d253683 Xiubo Li      2022-08-25  2487  
5c64737d253683 Xiubo Li      2022-08-25  2488  	/*
5c64737d253683 Xiubo Li      2022-08-25  2489  	 * Always set the block_size to CEPH_FSCRYPT_BLOCK_SIZE,
5c64737d253683 Xiubo Li      2022-08-25  2490  	 * because in MDS it may need this to do the truncate.
5c64737d253683 Xiubo Li      2022-08-25  2491  	 */
e52f99c9eea903 David Howells 2023-08-03  2492  	header->block_size = cpu_to_le32(CEPH_FSCRYPT_BLOCK_SIZE);
5c64737d253683 Xiubo Li      2022-08-25  2493  
5c64737d253683 Xiubo Li      2022-08-25  2494  	/*
b761e790c5985b David Howells 2024-12-05  2495  	 * If we hit a hole here, we should just skip filling the fscrypt for
b761e790c5985b David Howells 2024-12-05  2496  	 * the request, because once the fscrypt is enabled, the file will be
b761e790c5985b David Howells 2024-12-05  2497  	 * split into many blocks with the size of CEPH_FSCRYPT_BLOCK_SIZE.  If
b761e790c5985b David Howells 2024-12-05  2498  	 * there was a hole, the hole size should be multiple of block size.
5c64737d253683 Xiubo Li      2022-08-25  2499  	 *
5c64737d253683 Xiubo Li      2022-08-25  2500  	 * If the Rados object doesn't exist, it will be set to 0.
5c64737d253683 Xiubo Li      2022-08-25  2501  	 */
b761e790c5985b David Howells 2024-12-05  2502  	if (ret != -ENODATA) {
38d46409c4639a Xiubo Li      2023-06-12 @2503  		doutc(cl, "hit hole, ppos %lld < size %lld\n", pos, i_size);
5c64737d253683 Xiubo Li      2022-08-25  2504  
e52f99c9eea903 David Howells 2023-08-03  2505  		header->data_len = cpu_to_le32(8 + 8 + 4);
e52f99c9eea903 David Howells 2023-08-03  2506  		header->file_offset = 0;
5c64737d253683 Xiubo Li      2022-08-25  2507  		ret = 0;
5c64737d253683 Xiubo Li      2022-08-25  2508  	} else {
e52f99c9eea903 David Howells 2023-08-03  2509  		header->data_len = cpu_to_le32(8 + 8 + 4 + CEPH_FSCRYPT_BLOCK_SIZE);
e52f99c9eea903 David Howells 2023-08-03  2510  		header->file_offset = cpu_to_le64(orig_pos);
5c64737d253683 Xiubo Li      2022-08-25  2511  
38d46409c4639a Xiubo Li      2023-06-12  2512  		doutc(cl, "encrypt block boff/bsize %d/%lu\n", boff,
38d46409c4639a Xiubo Li      2023-06-12  2513  		      CEPH_FSCRYPT_BLOCK_SIZE);
295fc4aa7de4b7 Xiubo Li      2023-03-06  2514  
5c64737d253683 Xiubo Li      2022-08-25  2515  		/* truncate and zero out the extra contents for the last block */
e52f99c9eea903 David Howells 2023-08-03  2516  		p = kmap_local_bvecq(dbuf, 1);
e52f99c9eea903 David Howells 2023-08-03  2517  		memset(p + boff, 0, PAGE_SIZE - boff);
e52f99c9eea903 David Howells 2023-08-03  2518  		kunmap_local(p);
5c64737d253683 Xiubo Li      2022-08-25  2519  
5c64737d253683 Xiubo Li      2022-08-25  2520  		/* encrypt the last block */
e52f99c9eea903 David Howells 2023-08-03  2521  		ret = ceph_fscrypt_encrypt_block_inplace(inode, dbuf->bv[0].bv_page,
5c64737d253683 Xiubo Li      2022-08-25  2522  							 CEPH_FSCRYPT_BLOCK_SIZE,
fa65058063cbab Eric Biggers  2025-07-09  2523  							 0, block);
5c64737d253683 Xiubo Li      2022-08-25  2524  		if (ret)
5c64737d253683 Xiubo Li      2022-08-25  2525  			goto out;
5c64737d253683 Xiubo Li      2022-08-25  2526  	}
5c64737d253683 Xiubo Li      2022-08-25  2527  
e52f99c9eea903 David Howells 2023-08-03  2528  	req->r_dbuf = dbuf;
e52f99c9eea903 David Howells 2023-08-03  2529  	req->r_dbuf_len = sizeof(*header);
e52f99c9eea903 David Howells 2023-08-03  2530  	if (header->block_size)
e52f99c9eea903 David Howells 2023-08-03  2531  		req->r_dbuf_len += CEPH_FSCRYPT_BLOCK_SIZE;
5c64737d253683 Xiubo Li      2022-08-25  2532  out:
38d46409c4639a Xiubo Li      2023-06-12  2533  	doutc(cl, "%p %llx.%llx size dropping cap refs on %s\n", inode,
38d46409c4639a Xiubo Li      2023-06-12  2534  	      ceph_vinop(inode), ceph_cap_string(got));
5c64737d253683 Xiubo Li      2022-08-25  2535  	ceph_put_cap_refs(ci, got);
e52f99c9eea903 David Howells 2023-08-03  2536  	kunmap_local(header);
e52f99c9eea903 David Howells 2023-08-03  2537  	if (ret)
e52f99c9eea903 David Howells 2023-08-03  2538  		bvecq_put(dbuf);
5c64737d253683 Xiubo Li      2022-08-25  2539  	return ret;
5c64737d253683 Xiubo Li      2022-08-25  2540  }
5c64737d253683 Xiubo Li      2022-08-25  2541  

:::::: The code at line 2503 was first introduced by commit
:::::: 38d46409c4639a1d659ebfa70e27a8bed6b8ee1d ceph: print cluster fsid and client global_id in all debug logs

:::::: TO: Xiubo Li <xiubli@redhat.com>
:::::: CC: Ilya Dryomov <idryomov@gmail.com>

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

             reply	other threads:[~2026-09-05  3:07 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-05  3:07 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-09-05  0:33 [dhowells-fs:ceph-iter 81/87] fs/ceph/inode.c:2503:50: warning: variable 'pos' 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=202609051157.fouhIIkr-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.