All of lore.kernel.org
 help / color / mirror / Atom feed
* [ceph-client:testing 27/33] fs/ceph/mds_client.c:528:17: sparse: sparse: non size-preserving pointer to integer cast
@ 2026-09-08  5:11 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-08  5:11 UTC (permalink / raw)
  To: Alex Markuze; +Cc: oe-kbuild-all, ceph-devel, Xiubo Li

tree:   https://github.com/ceph/ceph-client.git testing
head:   190736464f4572bfb360fd3747fb827493e02e09
commit: 0ae2716890be9bd8ccad10859bdf92e67544faa4 [27/33] ceph: switch MDS request plumbing to struct ceph_journal_info
config: nios2-randconfig-r133-20260908 (https://download.01.org/0day-ci/archive/20260908/202609081319.wC7kigIc-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260908/202609081319.wC7kigIc-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/202609081319.wC7kigIc-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> fs/ceph/mds_client.c:528:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1008:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1008:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1008:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1008:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1174:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1317:9: sparse: sparse: non size-preserving pointer to integer cast
>> fs/ceph/mds_client.c:1317:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1342:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1342:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1457:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1457:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1457:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1478:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1478:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1478:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1498:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1498:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1498:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1515:33: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1515:33: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1515:33: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1530:33: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1530:33: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1530:33: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1555:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1555:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1555:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:1555:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1555:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1808:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1965:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:1996:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2033:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2033:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2033:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2058:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2141:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2168:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2173:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2189:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2189:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2227:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2227:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2244:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2244:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2323:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2392:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2392:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2392:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2392:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2440:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2440:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2540:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2557:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2623:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2643:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2772:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:2772:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2772:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:2996:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3095:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3095:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:3095:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3176:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3176:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:3176:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:3180:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3180:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:3180:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3192:17: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3614:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3614:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:3614:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3683:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3789:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:3789:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4066:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4100:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4106:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4120:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4120:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4168:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4173:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4217:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4234:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4347:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4398:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4404:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4424:17: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4619:25: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4656:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4656:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4656:9: sparse: sparse: non size-preserving pointer to integer cast
   fs/ceph/mds_client.c:4656:9: sparse: sparse: non size-preserving integer to pointer cast
   fs/ceph/mds_client.c:4739:17: sparse: sparse: non size-preserving pointer to integer cast

vim +528 fs/ceph/mds_client.c

   474	
   475	/*
   476	 * parse readdir results
   477	 */
   478	static int parse_reply_info_readdir(void **p, void *end,
   479					    struct ceph_mds_request *req,
   480					    u64 features,
   481					    struct ceph_mds_client *mdsc)
   482	{
   483		struct ceph_mds_reply_info_parsed *info = &req->r_reply_info;
   484		struct ceph_client *cl = req->r_mdsc->fsc->client;
   485		u32 num, i = 0;
   486		int err;
   487	
   488		err = parse_reply_info_dir(p, end, &info->dir_dir, features);
   489		if (err < 0)
   490			goto out_bad;
   491	
   492		ceph_decode_need(p, end, sizeof(num) + 2, bad);
   493		num = ceph_decode_32(p);
   494		{
   495			u16 flags = ceph_decode_16(p);
   496			info->dir_end = !!(flags & CEPH_READDIR_FRAG_END);
   497			info->dir_complete = !!(flags & CEPH_READDIR_FRAG_COMPLETE);
   498			info->hash_order = !!(flags & CEPH_READDIR_HASH_ORDER);
   499			info->offset_hash = !!(flags & CEPH_READDIR_OFFSET_HASH);
   500		}
   501		if (num == 0)
   502			goto done;
   503	
   504		BUG_ON(!info->dir_entries);
   505		if ((unsigned long)(info->dir_entries + num) >
   506		    (unsigned long)info->dir_entries + info->dir_buf_size) {
   507			pr_err_client(cl, "dir contents are larger than expected\n");
   508			WARN_ON(1);
   509			goto bad;
   510		}
   511	
   512		info->dir_nr = num;
   513		while (num) {
   514			struct inode *inode = d_inode(req->r_dentry);
   515			struct ceph_inode_info *ci = ceph_inode(inode);
   516			struct ceph_mds_reply_dir_entry *rde = info->dir_entries + i;
   517			struct fscrypt_str oname = FSTR_INIT(NULL, 0);
   518			struct ceph_fname fname;
   519			u32 altname_len, _name_len;
   520			u8 *altname, *_name;
   521			u8 *tname = NULL;
   522	
   523			/* dentry */
   524			ceph_decode_32_safe(p, end, _name_len, bad);
   525			ceph_decode_need(p, end, _name_len, bad);
   526			_name = *p;
   527			*p += _name_len;
 > 528			boutc_bounded(cl, "parsed dir dname '%.*s'\n",
   529				      (_name_len, BLOG_STR(_name, _name_len)),
   530				      (_name_len, (const char *)_name));
   531	
   532			if (info->hash_order)
   533				rde->raw_hash = ceph_str_hash(ci->i_dir_layout.dl_dir_hash,
   534							      _name, _name_len);
   535	
   536			/* dentry lease */
   537			err = parse_reply_info_lease(p, end, &rde->lease, features,
   538						     &altname_len, &altname);
   539			if (err)
   540				goto out_bad;
   541	
   542			/*
   543			 * Try to dencrypt the dentry names and update them
   544			 * in the ceph_mds_reply_dir_entry struct.
   545			 */
   546			fname.dir = inode;
   547			fname.name = _name;
   548			fname.name_len = _name_len;
   549			fname.ctext = altname;
   550			fname.ctext_len = altname_len;
   551			/*
   552			 * The _name_len maybe larger than altname_len, such as
   553			 * when the human readable name length is in range of
   554			 * (CEPH_NOHASH_NAME_MAX, CEPH_NOHASH_NAME_MAX + SHA256_DIGEST_SIZE),
   555			 * then the copy in ceph_fname_to_usr will corrupt the
   556			 * data if there has no encryption key.
   557			 *
   558			 * Just set the no_copy flag and then if there has no
   559			 * encryption key the oname.name will be assigned to
   560			 * _name always.
   561			 */
   562			fname.no_copy = true;
   563			if (altname_len == 0) {
   564				/*
   565				 * Set tname to _name, and this will be used
   566				 * to do the base64_decode in-place. It's
   567				 * safe because the decoded string should
   568				 * always be shorter, which is 3/4 of origin
   569				 * string. If this message was allocated with
   570				 * vmalloc() (happens, but rarely), leave it
   571				 * NULL and let ceph_fname_to_usr() allocate
   572				 * suitable temporary working space instead.
   573				 */
   574				if (likely(!is_vmalloc_addr(_name)))
   575					tname = _name;
   576	
   577				/*
   578				 * Set oname to _name too, and this will be
   579				 * used to do the dencryption in-place.
   580				 */
   581				oname.name = _name;
   582				oname.len = _name_len;
   583			} else {
   584				/*
   585				 * This will do the decryption only in-place
   586				 * from altname cryptext directly.
   587				 */
   588				oname.name = altname;
   589				oname.len = altname_len;
   590			}
   591			rde->is_nokey = false;
   592			err = ceph_fname_to_usr(&fname, tname, &oname, &rde->is_nokey);
   593			if (err) {
   594				pr_err_client(cl, "unable to decode %.*s, got %d\n",
   595					      _name_len, _name, err);
   596				goto out_bad;
   597			}
   598			rde->name = oname.name;
   599			rde->name_len = oname.len;
   600	
   601			/* inode */
   602			err = parse_reply_info_in(p, end, &rde->inode, features, mdsc);
   603			if (err < 0)
   604				goto out_bad;
   605			/* ceph_readdir_prepopulate() will update it */
   606			rde->offset = 0;
   607			i++;
   608			num--;
   609		}
   610	
   611	done:
   612		/* Skip over any unrecognized fields */
   613		*p = end;
   614		return 0;
   615	
   616	bad:
   617		err = -EIO;
   618	out_bad:
   619		pr_err_client(cl, "problem parsing dir contents %d\n", err);
   620		return err;
   621	}
   622	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-08  5:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-08  5:11 [ceph-client:testing 27/33] fs/ceph/mds_client.c:528:17: sparse: sparse: non size-preserving pointer to integer cast kernel test robot

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.