Hi NeilBrown, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/NeilBrown/ovl-use-is_subdir-for-testing-if-one-thing-is-a-subdir-of-another/20250625-070919 base: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all patch link: https://lore.kernel.org/r/20250624230636.3233059-3-neil%40brown.name patch subject: [PATCH 02/12] ovl: Call ovl_create_temp() and ovl_create_index() without lock held. config: x86_64-randconfig-161-20250627 (https://download.01.org/0day-ci/archive/20250628/202506281017.jeQF1pnr-lkp@xxxxxxxxx/config) compiler: clang version 20.1.7 (https://github.com/llvm/llvm-project 6146a88f60492b520a36f8f8f3231e15f3cc6082) 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@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202506281017.jeQF1pnr-lkp@xxxxxxxxx/ New smatch warnings: fs/overlayfs/dir.c:427 ovl_clear_empty() warn: passing zero to 'ERR_PTR' vim +/ERR_PTR +427 fs/overlayfs/dir.c e9be9d5e76e348 Miklos Szeredi 2014-10-24 353 static struct dentry *ovl_clear_empty(struct dentry *dentry, e9be9d5e76e348 Miklos Szeredi 2014-10-24 354 struct list_head *list) e9be9d5e76e348 Miklos Szeredi 2014-10-24 355 { 576bb263450bbb Christian Brauner 2022-04-04 356 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); e9be9d5e76e348 Miklos Szeredi 2014-10-24 357 struct dentry *workdir = ovl_workdir(dentry); e9be9d5e76e348 Miklos Szeredi 2014-10-24 358 struct inode *wdir = workdir->d_inode; e9be9d5e76e348 Miklos Szeredi 2014-10-24 359 struct dentry *upperdir = ovl_dentry_upper(dentry->d_parent); e9be9d5e76e348 Miklos Szeredi 2014-10-24 360 struct inode *udir = upperdir->d_inode; e9be9d5e76e348 Miklos Szeredi 2014-10-24 361 struct path upperpath; e9be9d5e76e348 Miklos Szeredi 2014-10-24 362 struct dentry *upper; e9be9d5e76e348 Miklos Szeredi 2014-10-24 363 struct dentry *opaquedir; e9be9d5e76e348 Miklos Szeredi 2014-10-24 364 struct kstat stat; e9be9d5e76e348 Miklos Szeredi 2014-10-24 365 int err; e9be9d5e76e348 Miklos Szeredi 2014-10-24 366 cc6f67bcafcb6b Miklos Szeredi 2015-05-19 367 if (WARN_ON(!workdir)) cc6f67bcafcb6b Miklos Szeredi 2015-05-19 368 return ERR_PTR(-EROFS); cc6f67bcafcb6b Miklos Szeredi 2015-05-19 369 e9be9d5e76e348 Miklos Szeredi 2014-10-24 370 ovl_path_upper(dentry, &upperpath); a528d35e8bfcc5 David Howells 2017-01-31 371 err = vfs_getattr(&upperpath, &stat, a528d35e8bfcc5 David Howells 2017-01-31 372 STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); e9be9d5e76e348 Miklos Szeredi 2014-10-24 373 if (err) fb1b87daadb6ed NeilBrown 2025-06-25 374 goto out; e9be9d5e76e348 Miklos Szeredi 2014-10-24 375 e9be9d5e76e348 Miklos Szeredi 2014-10-24 376 err = -ESTALE; e9be9d5e76e348 Miklos Szeredi 2014-10-24 377 if (!S_ISDIR(stat.mode)) fb1b87daadb6ed NeilBrown 2025-06-25 378 goto out; e9be9d5e76e348 Miklos Szeredi 2014-10-24 379 upper = upperpath.dentry; fb1b87daadb6ed NeilBrown 2025-06-25 380 /* This test is racey but we re-test under the lock */ fb1b87daadb6ed NeilBrown 2025-06-25 381 if (upper->d_parent != upperdir) fb1b87daadb6ed NeilBrown 2025-06-25 382 goto out; e9be9d5e76e348 Miklos Szeredi 2014-10-24 383 576bb263450bbb Christian Brauner 2022-04-04 384 opaquedir = ovl_create_temp(ofs, workdir, OVL_CATTR(stat.mode)); e9be9d5e76e348 Miklos Szeredi 2014-10-24 385 err = PTR_ERR(opaquedir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 386 if (IS_ERR(opaquedir)) fb1b87daadb6ed NeilBrown 2025-06-25 387 /* workdir was unlocked, no upperdir */ fb1b87daadb6ed NeilBrown 2025-06-25 388 goto out; fb1b87daadb6ed NeilBrown 2025-06-25 389 err = ovl_lock_rename_workdir(workdir, upperdir); fb1b87daadb6ed NeilBrown 2025-06-25 390 if (err) fb1b87daadb6ed NeilBrown 2025-06-25 391 goto out_cleanup_unlocked; fb1b87daadb6ed NeilBrown 2025-06-25 392 if (upper->d_parent->d_inode != udir) fb1b87daadb6ed NeilBrown 2025-06-25 393 goto out_cleanup; Should there be an error code for this? dad7017a840d8d Christian Brauner 2022-04-04 394 err = ovl_copy_xattr(dentry->d_sb, &upperpath, opaquedir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 395 if (err) e9be9d5e76e348 Miklos Szeredi 2014-10-24 396 goto out_cleanup; e9be9d5e76e348 Miklos Szeredi 2014-10-24 397 5cf5b477f0ca33 Miklos Szeredi 2016-12-16 398 err = ovl_set_opaque(dentry, opaquedir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 399 if (err) e9be9d5e76e348 Miklos Szeredi 2014-10-24 400 goto out_cleanup; e9be9d5e76e348 Miklos Szeredi 2014-10-24 401 5955102c9984fa Al Viro 2016-01-22 402 inode_lock(opaquedir->d_inode); 5272eaf3a56827 Christian Brauner 2022-04-04 403 err = ovl_set_attr(ofs, opaquedir, &stat); 5955102c9984fa Al Viro 2016-01-22 404 inode_unlock(opaquedir->d_inode); e9be9d5e76e348 Miklos Szeredi 2014-10-24 405 if (err) e9be9d5e76e348 Miklos Szeredi 2014-10-24 406 goto out_cleanup; e9be9d5e76e348 Miklos Szeredi 2014-10-24 407 bc9241367aac08 NeilBrown 2025-06-13 408 err = ovl_do_rename(ofs, workdir, opaquedir, upperdir, upper, RENAME_EXCHANGE); e9be9d5e76e348 Miklos Szeredi 2014-10-24 409 if (err) e9be9d5e76e348 Miklos Szeredi 2014-10-24 410 goto out_cleanup; e9be9d5e76e348 Miklos Szeredi 2014-10-24 411 576bb263450bbb Christian Brauner 2022-04-04 412 ovl_cleanup_whiteouts(ofs, upper, list); 576bb263450bbb Christian Brauner 2022-04-04 413 ovl_cleanup(ofs, wdir, upper); e9be9d5e76e348 Miklos Szeredi 2014-10-24 414 unlock_rename(workdir, upperdir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 415 e9be9d5e76e348 Miklos Szeredi 2014-10-24 416 /* dentry's upper doesn't match now, get rid of it */ e9be9d5e76e348 Miklos Szeredi 2014-10-24 417 d_drop(dentry); e9be9d5e76e348 Miklos Szeredi 2014-10-24 418 e9be9d5e76e348 Miklos Szeredi 2014-10-24 419 return opaquedir; e9be9d5e76e348 Miklos Szeredi 2014-10-24 420 e9be9d5e76e348 Miklos Szeredi 2014-10-24 421 out_cleanup: e9be9d5e76e348 Miklos Szeredi 2014-10-24 422 unlock_rename(workdir, upperdir); fb1b87daadb6ed NeilBrown 2025-06-25 423 out_cleanup_unlocked: fb1b87daadb6ed NeilBrown 2025-06-25 424 ovl_cleanup_unlocked(ofs, workdir, opaquedir); fb1b87daadb6ed NeilBrown 2025-06-25 425 dput(opaquedir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 426 out: e9be9d5e76e348 Miklos Szeredi 2014-10-24 @427 return ERR_PTR(err); e9be9d5e76e348 Miklos Szeredi 2014-10-24 428 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki