From: kernel test robot <lkp@intel.com>
To: George Anthony Vernon <contact@gvernon.com>,
slava@dubeyko.com, glaubitz@physik.fu-berlin.de,
frank.li@vivo.com
Cc: oe-kbuild-all@lists.linux.dev,
George Anthony Vernon <contact@gvernon.com>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
syzbot+97e301b4b82ae803d21b@syzkaller.appspotmail.com,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Subject: Re: [PATCH v3] hfs: Validate CNIDs in hfs_read_inode
Date: Tue, 10 Mar 2026 22:39:45 +0800 [thread overview]
Message-ID: <202603102229.zVuUXq6v-lkp@intel.com> (raw)
In-Reply-To: <20260310000826.242674-1-contact@gvernon.com>
Hi George,
kernel test robot noticed the following build warnings:
[auto build test WARNING on brauner-vfs/vfs.all]
[also build test WARNING on linus/master v7.0-rc3 next-20260309]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/George-Anthony-Vernon/hfs-Validate-CNIDs-in-hfs_read_inode/20260310-081836
base: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all
patch link: https://lore.kernel.org/r/20260310000826.242674-1-contact%40gvernon.com
patch subject: [PATCH v3] hfs: Validate CNIDs in hfs_read_inode
config: microblaze-randconfig-r132-20260310 (https://download.01.org/0day-ci/archive/20260310/202603102229.zVuUXq6v-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 9.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260310/202603102229.zVuUXq6v-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/202603102229.zVuUXq6v-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> fs/hfs/inode.c:408:55: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] cnid @@ got restricted __be32 [usertype] FlNum @@
fs/hfs/inode.c:408:55: sparse: expected unsigned int [usertype] cnid
fs/hfs/inode.c:408:55: sparse: got restricted __be32 [usertype] FlNum
>> fs/hfs/inode.c:431:54: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] cnid @@ got restricted __be32 [usertype] DirID @@
fs/hfs/inode.c:431:54: sparse: expected unsigned int [usertype] cnid
fs/hfs/inode.c:431:54: sparse: got restricted __be32 [usertype] DirID
vim +408 fs/hfs/inode.c
378
379 /*
380 * hfs_read_inode
381 */
382 static int hfs_read_inode(struct inode *inode, void *data)
383 {
384 struct hfs_iget_data *idata = data;
385 struct hfs_sb_info *hsb = HFS_SB(inode->i_sb);
386 hfs_cat_rec *rec;
387
388 HFS_I(inode)->flags = 0;
389 HFS_I(inode)->rsrc_inode = NULL;
390 mutex_init(&HFS_I(inode)->extents_lock);
391 INIT_LIST_HEAD(&HFS_I(inode)->open_dir_list);
392 spin_lock_init(&HFS_I(inode)->open_dir_lock);
393
394 /* Initialize the inode */
395 inode->i_uid = hsb->s_uid;
396 inode->i_gid = hsb->s_gid;
397 set_nlink(inode, 1);
398
399 if (idata->key)
400 HFS_I(inode)->cat_key = *idata->key;
401 else
402 HFS_I(inode)->flags |= HFS_FLG_RSRC;
403 HFS_I(inode)->tz_secondswest = sys_tz.tz_minuteswest * 60;
404
405 rec = idata->rec;
406 switch (rec->type) {
407 case HFS_CDR_FIL:
> 408 if (!is_valid_catalog_record(rec->file.FlNum, HFS_CDR_FIL))
409 goto make_bad_inode;
410 if (!HFS_IS_RSRC(inode)) {
411 hfs_inode_read_fork(inode, rec->file.ExtRec, rec->file.LgLen,
412 rec->file.PyLen, be16_to_cpu(rec->file.ClpSize));
413 } else {
414 hfs_inode_read_fork(inode, rec->file.RExtRec, rec->file.RLgLen,
415 rec->file.RPyLen, be16_to_cpu(rec->file.ClpSize));
416 }
417
418 inode->i_ino = be32_to_cpu(rec->file.FlNum);
419 inode->i_mode = S_IRUGO | S_IXUGO;
420 if (!(rec->file.Flags & HFS_FIL_LOCK))
421 inode->i_mode |= S_IWUGO;
422 inode->i_mode &= ~hsb->s_file_umask;
423 inode->i_mode |= S_IFREG;
424 inode_set_mtime_to_ts(inode,
425 inode_set_atime_to_ts(inode, inode_set_ctime_to_ts(inode, hfs_m_to_utime(rec->file.MdDat))));
426 inode->i_op = &hfs_file_inode_operations;
427 inode->i_fop = &hfs_file_operations;
428 inode->i_mapping->a_ops = &hfs_aops;
429 break;
430 case HFS_CDR_DIR:
> 431 if (!is_valid_catalog_record(rec->dir.DirID, HFS_CDR_DIR))
432 goto make_bad_inode;
433 inode->i_ino = be32_to_cpu(rec->dir.DirID);
434 inode->i_size = be16_to_cpu(rec->dir.Val) + 2;
435 HFS_I(inode)->fs_blocks = 0;
436 inode->i_mode = S_IFDIR | (S_IRWXUGO & ~hsb->s_dir_umask);
437 inode_set_mtime_to_ts(inode,
438 inode_set_atime_to_ts(inode, inode_set_ctime_to_ts(inode, hfs_m_to_utime(rec->dir.MdDat))));
439 inode->i_op = &hfs_dir_inode_operations;
440 inode->i_fop = &hfs_dir_operations;
441 break;
442 make_bad_inode:
443 pr_warn("Invalid cnid %lu\n", inode->i_ino);
444 pr_warn("Volume is probably corrupted, try performing fsck.\n");
445 fallthrough;
446 default:
447 make_bad_inode(inode);
448 break;
449 }
450 return 0;
451 }
452
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2026-03-10 14:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-10 0:08 [PATCH v3] hfs: Validate CNIDs in hfs_read_inode George Anthony Vernon
2026-03-10 10:41 ` Tetsuo Handa
2026-03-10 21:29 ` Viacheslav Dubeyko
2026-03-10 14:39 ` kernel test robot [this message]
2026-03-10 21:28 ` Viacheslav Dubeyko
2026-03-11 20:31 ` George Anthony Vernon
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=202603102229.zVuUXq6v-lkp@intel.com \
--to=lkp@intel.com \
--cc=contact@gvernon.com \
--cc=frank.li@vivo.com \
--cc=glaubitz@physik.fu-berlin.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=slava@dubeyko.com \
--cc=syzbot+97e301b4b82ae803d21b@syzkaller.appspotmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox