All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: David Howells <dhowells@redhat.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [dhowells-fs:ceph-iter 52/87] fs/ceph/inode.c:2492:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true
Date: Sat, 05 Sep 2026 01:42:43 +0200	[thread overview]
Message-ID: <202609050154.osd6wrTN-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git ceph-iter
head:   376ad9d4942bf11500931178bbeb965348f01057
commit: e52f99c9eea903bf2dc1fb18fae2bc0c49875445 [52/87] ceph: Convert ceph_mds_request::r_pagelist to a databuf
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20260905/202609050154.osd6wrTN-lkp@intel.com/config)
compiler: clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260905/202609050154.osd6wrTN-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/202609050154.osd6wrTN-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/ceph/inode.c:2492:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2492 |         if (ret < 0)
         |             ^~~~~~~
   fs/ceph/inode.c:2552:15: note: uninitialized use occurs here
    2552 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2492:2: note: remove the 'if' if its condition is always false
    2492 |         if (ret < 0)
         |         ^~~~~~~~~~~~
    2493 |                 goto out;
         |                 ~~~~~~~~
   fs/ceph/inode.c:2484:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2484 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2485 |             ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
         |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2552:15: note: uninitialized use occurs here
    2552 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2484:2: note: remove the 'if' if its condition is always false
    2484 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2485 |             ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
         |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2486 |                 goto out;
         |                 ~~~~~~~~
>> fs/ceph/inode.c:2484:6: warning: variable 'header' is used uninitialized whenever '||' condition is true [-Wsometimes-uninitialized]
    2484 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2552:15: note: uninitialized use occurs here
    2552 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2484:6: note: remove the '||' if its condition is always false
    2484 |         if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ceph/inode.c:2481:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2481 |         if (!dbuf)
         |             ^~~~~
   fs/ceph/inode.c:2552:15: note: uninitialized use occurs here
    2552 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2481:2: note: remove the 'if' if its condition is always false
    2481 |         if (!dbuf)
         |         ^~~~~~~~~~
    2482 |                 goto out;
         |                 ~~~~~~~~
   fs/ceph/inode.c:2475:7: warning: variable 'header' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    2475 |                 if (ret < 0)
         |                     ^~~~~~~
   fs/ceph/inode.c:2552:15: note: uninitialized use occurs here
    2552 |         kunmap_local(header);
         |                      ^~~~~~
   fs/ceph/inode.c:2475:3: note: remove the 'if' if its condition is always false
    2475 |                 if (ret < 0)
         |                 ^~~~~~~~~~~~
    2476 |                         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
   5 warnings generated.


vim +2492 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 retry_op = 0;
5c64737d253683 Xiubo Li      2022-08-25  2454  	int len = CEPH_FSCRYPT_BLOCK_SIZE;
5c64737d253683 Xiubo Li      2022-08-25  2455  	loff_t i_size = i_size_read(inode);
5c64737d253683 Xiubo Li      2022-08-25  2456  	int got, ret, issued;
5c64737d253683 Xiubo Li      2022-08-25  2457  	u64 objver;
5c64737d253683 Xiubo Li      2022-08-25  2458  
5c64737d253683 Xiubo Li      2022-08-25  2459  	ret = __ceph_get_caps(inode, NULL, CEPH_CAP_FILE_RD, 0, -1, &got);
5c64737d253683 Xiubo Li      2022-08-25  2460  	if (ret < 0)
5c64737d253683 Xiubo Li      2022-08-25  2461  		return ret;
5c64737d253683 Xiubo Li      2022-08-25  2462  
5c64737d253683 Xiubo Li      2022-08-25  2463  	issued = __ceph_caps_issued(ci, NULL);
5c64737d253683 Xiubo Li      2022-08-25  2464  
38d46409c4639a Xiubo Li      2023-06-12  2465  	doutc(cl, "size %lld -> %lld got cap refs on %s, issued %s\n",
5c64737d253683 Xiubo Li      2022-08-25  2466  	      i_size, attr->ia_size, ceph_cap_string(got),
5c64737d253683 Xiubo Li      2022-08-25  2467  	      ceph_cap_string(issued));
5c64737d253683 Xiubo Li      2022-08-25  2468  
5c64737d253683 Xiubo Li      2022-08-25  2469  	/* Try to writeback the dirty pagecaches */
5c64737d253683 Xiubo Li      2022-08-25  2470  	if (issued & (CEPH_CAP_FILE_BUFFER)) {
f452a2204614fc David Howells 2025-03-12  2471  		loff_t lend = orig_pos + CEPH_FSCRYPT_BLOCK_SIZE - 1;
5c64737d253683 Xiubo Li      2022-08-25  2472  
5c64737d253683 Xiubo Li      2022-08-25  2473  		ret = filemap_write_and_wait_range(inode->i_mapping,
5c64737d253683 Xiubo Li      2022-08-25  2474  						   orig_pos, lend);
5c64737d253683 Xiubo Li      2022-08-25  2475  		if (ret < 0)
5c64737d253683 Xiubo Li      2022-08-25  2476  			goto out;
5c64737d253683 Xiubo Li      2022-08-25  2477  	}
5c64737d253683 Xiubo Li      2022-08-25  2478  
5c64737d253683 Xiubo Li      2022-08-25  2479  	ret = -ENOMEM;
e52f99c9eea903 David Howells 2023-08-03  2480  	dbuf = bvecq_alloc_chain(2, GFP_KERNEL, false);
e52f99c9eea903 David Howells 2023-08-03  2481  	if (!dbuf)
5c64737d253683 Xiubo Li      2022-08-25  2482  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2483  
e52f99c9eea903 David Howells 2023-08-03 @2484  	if (ceph_bvecq_insert_frag(dbuf, 0, sizeof(*header), GFP_KERNEL) < 0 ||
e52f99c9eea903 David Howells 2023-08-03  2485  	    ceph_bvecq_insert_frag(dbuf, 1, PAGE_SIZE, GFP_KERNEL) < 0)
5c64737d253683 Xiubo Li      2022-08-25  2486  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2487  
e52f99c9eea903 David Howells 2023-08-03  2488  	iov_iter_bvec_queue(&iter, ITER_DEST, dbuf, 1, 0, len);
5c64737d253683 Xiubo Li      2022-08-25  2489  
5c64737d253683 Xiubo Li      2022-08-25  2490  	pos = orig_pos;
5c64737d253683 Xiubo Li      2022-08-25  2491  	ret = __ceph_sync_read(inode, &pos, &iter, &retry_op, &objver);
5c64737d253683 Xiubo Li      2022-08-25 @2492  	if (ret < 0)
5c64737d253683 Xiubo Li      2022-08-25  2493  		goto out;
5c64737d253683 Xiubo Li      2022-08-25  2494  
e52f99c9eea903 David Howells 2023-08-03  2495  	header = kmap_local_bvecq(dbuf, 0);
e52f99c9eea903 David Howells 2023-08-03  2496  
5c64737d253683 Xiubo Li      2022-08-25  2497  	/* Insert the header first */
e52f99c9eea903 David Howells 2023-08-03  2498  	header->ver = 1;
e52f99c9eea903 David Howells 2023-08-03  2499  	header->compat = 1;
e52f99c9eea903 David Howells 2023-08-03  2500  	header->change_attr = cpu_to_le64(inode_peek_iversion_raw(inode));
5c64737d253683 Xiubo Li      2022-08-25  2501  
5c64737d253683 Xiubo Li      2022-08-25  2502  	/*
5c64737d253683 Xiubo Li      2022-08-25  2503  	 * Always set the block_size to CEPH_FSCRYPT_BLOCK_SIZE,
5c64737d253683 Xiubo Li      2022-08-25  2504  	 * because in MDS it may need this to do the truncate.
5c64737d253683 Xiubo Li      2022-08-25  2505  	 */
e52f99c9eea903 David Howells 2023-08-03  2506  	header->block_size = cpu_to_le32(CEPH_FSCRYPT_BLOCK_SIZE);
5c64737d253683 Xiubo Li      2022-08-25  2507  
5c64737d253683 Xiubo Li      2022-08-25  2508  	/*
5c64737d253683 Xiubo Li      2022-08-25  2509  	 * If we hit a hole here, we should just skip filling
5c64737d253683 Xiubo Li      2022-08-25  2510  	 * the fscrypt for the request, because once the fscrypt
5c64737d253683 Xiubo Li      2022-08-25  2511  	 * is enabled, the file will be split into many blocks
5c64737d253683 Xiubo Li      2022-08-25  2512  	 * with the size of CEPH_FSCRYPT_BLOCK_SIZE, if there
5c64737d253683 Xiubo Li      2022-08-25  2513  	 * has a hole, the hole size should be multiple of block
5c64737d253683 Xiubo Li      2022-08-25  2514  	 * size.
5c64737d253683 Xiubo Li      2022-08-25  2515  	 *
5c64737d253683 Xiubo Li      2022-08-25  2516  	 * If the Rados object doesn't exist, it will be set to 0.
5c64737d253683 Xiubo Li      2022-08-25  2517  	 */
5c64737d253683 Xiubo Li      2022-08-25  2518  	if (!objver) {
38d46409c4639a Xiubo Li      2023-06-12  2519  		doutc(cl, "hit hole, ppos %lld < size %lld\n", pos, i_size);
5c64737d253683 Xiubo Li      2022-08-25  2520  
e52f99c9eea903 David Howells 2023-08-03  2521  		header->data_len = cpu_to_le32(8 + 8 + 4);
e52f99c9eea903 David Howells 2023-08-03  2522  		header->file_offset = 0;
5c64737d253683 Xiubo Li      2022-08-25  2523  		ret = 0;
5c64737d253683 Xiubo Li      2022-08-25  2524  	} else {
e52f99c9eea903 David Howells 2023-08-03  2525  		header->data_len = cpu_to_le32(8 + 8 + 4 + CEPH_FSCRYPT_BLOCK_SIZE);
e52f99c9eea903 David Howells 2023-08-03  2526  		header->file_offset = cpu_to_le64(orig_pos);
5c64737d253683 Xiubo Li      2022-08-25  2527  
38d46409c4639a Xiubo Li      2023-06-12  2528  		doutc(cl, "encrypt block boff/bsize %d/%lu\n", boff,
38d46409c4639a Xiubo Li      2023-06-12  2529  		      CEPH_FSCRYPT_BLOCK_SIZE);
295fc4aa7de4b7 Xiubo Li      2023-03-06  2530  
5c64737d253683 Xiubo Li      2022-08-25  2531  		/* truncate and zero out the extra contents for the last block */
e52f99c9eea903 David Howells 2023-08-03  2532  		p = kmap_local_bvecq(dbuf, 1);
e52f99c9eea903 David Howells 2023-08-03  2533  		memset(p + boff, 0, PAGE_SIZE - boff);
e52f99c9eea903 David Howells 2023-08-03  2534  		kunmap_local(p);
5c64737d253683 Xiubo Li      2022-08-25  2535  
5c64737d253683 Xiubo Li      2022-08-25  2536  		/* encrypt the last block */
e52f99c9eea903 David Howells 2023-08-03  2537  		ret = ceph_fscrypt_encrypt_block_inplace(inode, dbuf->bv[0].bv_page,
5c64737d253683 Xiubo Li      2022-08-25  2538  							 CEPH_FSCRYPT_BLOCK_SIZE,
fa65058063cbab Eric Biggers  2025-07-09  2539  							 0, block);
5c64737d253683 Xiubo Li      2022-08-25  2540  		if (ret)
5c64737d253683 Xiubo Li      2022-08-25  2541  			goto out;
5c64737d253683 Xiubo Li      2022-08-25  2542  	}
5c64737d253683 Xiubo Li      2022-08-25  2543  
e52f99c9eea903 David Howells 2023-08-03  2544  	req->r_dbuf = dbuf;
e52f99c9eea903 David Howells 2023-08-03  2545  	req->r_dbuf_len = sizeof(*header);
e52f99c9eea903 David Howells 2023-08-03  2546  	if (header->block_size)
e52f99c9eea903 David Howells 2023-08-03  2547  		req->r_dbuf_len += CEPH_FSCRYPT_BLOCK_SIZE;
5c64737d253683 Xiubo Li      2022-08-25  2548  out:
38d46409c4639a Xiubo Li      2023-06-12  2549  	doutc(cl, "%p %llx.%llx size dropping cap refs on %s\n", inode,
38d46409c4639a Xiubo Li      2023-06-12  2550  	      ceph_vinop(inode), ceph_cap_string(got));
5c64737d253683 Xiubo Li      2022-08-25  2551  	ceph_put_cap_refs(ci, got);
e52f99c9eea903 David Howells 2023-08-03  2552  	kunmap_local(header);
e52f99c9eea903 David Howells 2023-08-03  2553  	if (ret)
e52f99c9eea903 David Howells 2023-08-03  2554  		bvecq_put(dbuf);
5c64737d253683 Xiubo Li      2022-08-25  2555  	return ret;
5c64737d253683 Xiubo Li      2022-08-25  2556  }
5c64737d253683 Xiubo Li      2022-08-25  2557  

:::::: The code at line 2492 was first introduced by commit
:::::: 5c64737d253683b7d138dde0da513a9ade16a170 ceph: add truncate size handling support for fscrypt

:::::: 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-04 23:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04 23:42 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-09-05  1:01 [dhowells-fs:ceph-iter 52/87] fs/ceph/inode.c:2492:6: warning: variable 'header' is used uninitialized whenever 'if' condition is true 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=202609050154.osd6wrTN-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=dhowells@redhat.com \
    --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.