From: kernel test robot <lkp@intel.com>
To: Alex Markuze <amarkuze@redhat.com>
Cc: oe-kbuild-all@lists.linux.dev, ceph-devel@vger.kernel.org,
Xiubo Li <xiubo.li@clyso.com>
Subject: [ceph-client:testing 27/33] fs/ceph/mds_client.c:528:17: sparse: sparse: non size-preserving pointer to integer cast
Date: Tue, 08 Sep 2026 13:11:19 +0800 [thread overview]
Message-ID: <202609081319.wC7kigIc-lkp@intel.com> (raw)
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
reply other threads:[~2026-09-08 5:11 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202609081319.wC7kigIc-lkp@intel.com \
--to=lkp@intel.com \
--cc=amarkuze@redhat.com \
--cc=ceph-devel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=xiubo.li@clyso.com \
/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.