Hi wenjun93, kernel test robot noticed the following build warnings: [auto build test WARNING on mszeredi-vfs/overlayfs-next] [also build test WARNING on linus/master v6.3 next-20230505] [cannot apply to mszeredi-vfs/next] [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/wenjun93/overlayfs-clean-error-handling/20230506-162258 base: https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git overlayfs-next patch link: https://lore.kernel.org/r/20230506082111.1655980-1-gwj1235%40yeah.net patch subject: [PATCH] overlayfs: clean error handling config: i386-randconfig-a011-20230501 (https://download.01.org/0day-ci/archive/20230506/202305061831.o7pAYoBr-lkp@xxxxxxxxx/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/d5593461bec1095c3008da7403952420e637c01a git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review wenjun93/overlayfs-clean-error-handling/20230506-162258 git checkout d5593461bec1095c3008da7403952420e637c01a # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash fs/overlayfs/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202305061831.o7pAYoBr-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): >> fs/overlayfs/super.c:806:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_dput; ^ fs/overlayfs/super.c:804:3: note: previous statement is here if (d_really_is_negative(work)) ^ fs/overlayfs/super.c:1197:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_unlock; ^ fs/overlayfs/super.c:1195:2: note: previous statement is here if (IS_ERR(temp)) ^ fs/overlayfs/super.c:1218:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto cleanup_temp; ^ fs/overlayfs/super.c:1216:2: note: previous statement is here if (IS_ERR(whiteout)) ^ >> fs/overlayfs/super.c:1195:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (IS_ERR(temp)) ^~~~~~~~~~~~ fs/overlayfs/super.c:1236:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/super.c:1195:2: note: remove the 'if' if its condition is always true if (IS_ERR(temp)) ^~~~~~~~~~~~~~~~~ fs/overlayfs/super.c:1190:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/super.c:1297:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/super.c:1295:2: note: previous statement is here if (IS_ERR_OR_NULL(workdir)) ^ fs/overlayfs/super.c:1612:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/super.c:1610:2: note: previous statement is here if (ofs->fs == NULL) ^ fs/overlayfs/super.c:1610:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (ofs->fs == NULL) ^~~~~~~~~~~~~~~ fs/overlayfs/super.c:1719:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/super.c:1610:2: note: remove the 'if' if its condition is always true if (ofs->fs == NULL) ^~~~~~~~~~~~~~~~~~~~ fs/overlayfs/super.c:1606:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/super.c:1762:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_err; ^ fs/overlayfs/super.c:1760:2: note: previous statement is here if (!oe) ^ fs/overlayfs/super.c:1906:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/super.c:1904:2: note: previous statement is here if (WARN_ON(sb->s_user_ns != current_user_ns())) ^ fs/overlayfs/super.c:1913:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/super.c:1911:2: note: previous statement is here if (!ofs) ^ fs/overlayfs/super.c:1918:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_err; ^ fs/overlayfs/super.c:1916:2: note: previous statement is here if (!cred) ^ fs/overlayfs/super.c:1942:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_err; ^ fs/overlayfs/super.c:1940:2: note: previous statement is here if (!splitlower) ^ fs/overlayfs/super.c:1955:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_err; ^ fs/overlayfs/super.c:1953:2: note: previous statement is here if (!layers) ^ fs/overlayfs/super.c:2012:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_err; ^ fs/overlayfs/super.c:2010:2: note: previous statement is here if (IS_ERR(oe)) ^ fs/overlayfs/super.c:2067:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_free_oe; ^ fs/overlayfs/super.c:2065:2: note: previous statement is here if (!root_dentry) ^ fs/overlayfs/super.c:1904:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (WARN_ON(sb->s_user_ns != current_user_ns())) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/bug.h:121:28: note: expanded from macro 'WARN_ON' #define WARN_ON(condition) ({ \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/super.c:2084:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/super.c:1904:2: note: remove the 'if' if its condition is always true if (WARN_ON(sb->s_user_ns != current_user_ns())) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/super.c:1902:9: note: initialize the variable 'err' to silence this warning int err; ^ -- >> fs/overlayfs/namei.c:538:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto fail; ^ fs/overlayfs/namei.c:536:2: note: previous statement is here if (index->d_name.len < sizeof(struct ovl_fb)*2) ^ fs/overlayfs/namei.c:544:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto fail; ^ fs/overlayfs/namei.c:542:2: note: previous statement is here if (!fh) ^ fs/overlayfs/namei.c:548:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto fail; ^ fs/overlayfs/namei.c:546:2: note: previous statement is here if (hex2bin(fh->buf, index->d_name.name, len)) ^ >> fs/overlayfs/namei.c:536:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (index->d_name.len < sizeof(struct ovl_fb)*2) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/namei.c:610:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/namei.c:536:2: note: remove the 'if' if its condition is always true if (index->d_name.len < sizeof(struct ovl_fb)*2) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/namei.c:531:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/namei.c:912:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_put_upper; ^ fs/overlayfs/namei.c:910:3: note: previous statement is here if (!stack) ^ fs/overlayfs/namei.c:1073:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_put; ^ fs/overlayfs/namei.c:1071:2: note: previous statement is here if (!oe) ^ fs/overlayfs/namei.c:1120:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_free_oe; ^ fs/overlayfs/namei.c:1118:3: note: previous statement is here if (IS_ERR(inode)) ^ 7 warnings generated. -- >> fs/overlayfs/dir.c:120:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] return err; ^ fs/overlayfs/dir.c:118:2: note: previous statement is here if (IS_ERR(whiteout)) ^ >> fs/overlayfs/dir.c:118:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (IS_ERR(whiteout)) ^~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:120:10: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/dir.c:118:2: note: remove the 'if' if its condition is always true if (IS_ERR(whiteout)) ^~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:114:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/dir.c:181:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/dir.c:179:2: note: previous statement is here if (newdentry->d_inode) ^ fs/overlayfs/dir.c:179:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (newdentry->d_inode) ^~~~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:220:6: note: uninitialized use occurs here if (err) { ^~~ fs/overlayfs/dir.c:179:2: note: remove the 'if' if its condition is always true if (newdentry->d_inode) ^~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:174:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/dir.c:341:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_unlock; ^ fs/overlayfs/dir.c:339:2: note: previous statement is here if (IS_ERR(newdentry)) ^ fs/overlayfs/dir.c:339:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (IS_ERR(newdentry)) ^~~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:354:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/dir.c:339:2: note: remove the 'if' if its condition is always true if (IS_ERR(newdentry)) ^~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/dir.c:329:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 fs/overlayfs/dir.c:399:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_unlock; ^ fs/overlayfs/dir.c:397:2: note: previous statement is here if (IS_ERR(opaquedir)) ^ fs/overlayfs/dir.c:478:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_unlock; ^ fs/overlayfs/dir.c:476:2: note: previous statement is here if (IS_ERR(upper)) ^ fs/overlayfs/dir.c:482:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_dput; ^ fs/overlayfs/dir.c:480:2: note: previous statement is here if (d_is_negative(upper) || !IS_WHITEOUT(d_inode(upper))) ^ fs/overlayfs/dir.c:487:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_dput; ^ fs/overlayfs/dir.c:485:2: note: previous statement is here if (IS_ERR(newdentry)) ^ fs/overlayfs/dir.c:583:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_revert_creds; ^ fs/overlayfs/dir.c:581:3: note: previous statement is here if (!override_cred) ^ fs/overlayfs/dir.c:638:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_drop_write; ^ fs/overlayfs/dir.c:636:2: note: previous statement is here if (!inode) ^ fs/overlayfs/dir.c:764:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/dir.c:762:3: note: previous statement is here if (IS_ERR(opaquedir)) ^ fs/overlayfs/dir.c:775:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out_unlock; ^ fs/overlayfs/dir.c:773:2: note: previous statement is here if (IS_ERR(upper)) ^ fs/overlayfs/dir.c:762:7: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (IS_ERR(opaquedir)) -- >> fs/overlayfs/readdir.c:769:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto out; ^ fs/overlayfs/readdir.c:767:3: note: previous statement is here if (IS_ERR(cache)) ^ >> fs/overlayfs/readdir.c:767:7: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (IS_ERR(cache)) ^~~~~~~~~~~~~ fs/overlayfs/readdir.c:795:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/readdir.c:767:3: note: remove the 'if' if its condition is always true if (IS_ERR(cache)) ^~~~~~~~~~~~~~~~~~ fs/overlayfs/readdir.c:740:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 2 warnings generated. -- >> fs/overlayfs/copy_up.c:513:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto free_name; ^ fs/overlayfs/copy_up.c:511:2: note: previous statement is here if (IS_ERR(temp)) ^ fs/overlayfs/copy_up.c:711:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto unlock; ^ fs/overlayfs/copy_up.c:709:2: note: previous statement is here if (lock_rename(c->workdir, c->destdir) != NULL) ^ fs/overlayfs/copy_up.c:722:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto unlock; ^ fs/overlayfs/copy_up.c:720:2: note: previous statement is here if (IS_ERR(temp)) ^ fs/overlayfs/copy_up.c:747:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] goto cleanup; ^ fs/overlayfs/copy_up.c:745:2: note: previous statement is here if (IS_ERR(upper)) ^ >> fs/overlayfs/copy_up.c:709:6: warning: variable 'err' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] if (lock_rename(c->workdir, c->destdir) != NULL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/copy_up.c:763:9: note: uninitialized use occurs here return err; ^~~ fs/overlayfs/copy_up.c:709:2: note: remove the 'if' if its condition is always true if (lock_rename(c->workdir, c->destdir) != NULL) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/overlayfs/copy_up.c:700:9: note: initialize the variable 'err' to silence this warning int err; ^ = 0 5 warnings generated. .. vim +/if +806 fs/overlayfs/super.c e9be9d5e76e348 Miklos Szeredi 2014-10-24 761 ad204488d3046b Miklos Szeredi 2017-11-10 762 static struct dentry *ovl_workdir_create(struct ovl_fs *ofs, 6b8aa129dcbe0e Amir Goldstein 2017-06-21 763 const char *name, bool persist) e9be9d5e76e348 Miklos Szeredi 2014-10-24 764 { ad204488d3046b Miklos Szeredi 2017-11-10 765 struct inode *dir = ofs->workbasedir->d_inode; 08f4c7c86d4cf1 Miklos Szeredi 2020-06-04 766 struct vfsmount *mnt = ovl_upper_mnt(ofs); e9be9d5e76e348 Miklos Szeredi 2014-10-24 767 struct dentry *work; e9be9d5e76e348 Miklos Szeredi 2014-10-24 768 int err; e9be9d5e76e348 Miklos Szeredi 2014-10-24 769 bool retried = false; e9be9d5e76e348 Miklos Szeredi 2014-10-24 770 5955102c9984fa Al Viro 2016-01-22 771 inode_lock_nested(dir, I_MUTEX_PARENT); e9be9d5e76e348 Miklos Szeredi 2014-10-24 772 retry: 22f289ce1f8b10 Christian Brauner 2022-04-04 773 work = ovl_lookup_upper(ofs, name, ofs->workbasedir, strlen(name)); e9be9d5e76e348 Miklos Szeredi 2014-10-24 774 e9be9d5e76e348 Miklos Szeredi 2014-10-24 775 if (!IS_ERR(work)) { c11b9fdd6a612f Miklos Szeredi 2016-09-01 776 struct iattr attr = { c11b9fdd6a612f Miklos Szeredi 2016-09-01 777 .ia_valid = ATTR_MODE, 32a3d848eb91a2 Al Viro 2016-12-04 778 .ia_mode = S_IFDIR | 0, c11b9fdd6a612f Miklos Szeredi 2016-09-01 779 }; e9be9d5e76e348 Miklos Szeredi 2014-10-24 780 e9be9d5e76e348 Miklos Szeredi 2014-10-24 781 if (work->d_inode) { e9be9d5e76e348 Miklos Szeredi 2014-10-24 782 err = -EEXIST; e9be9d5e76e348 Miklos Szeredi 2014-10-24 783 if (retried) e9be9d5e76e348 Miklos Szeredi 2014-10-24 784 goto out_dput; e9be9d5e76e348 Miklos Szeredi 2014-10-24 785 6b8aa129dcbe0e Amir Goldstein 2017-06-21 786 if (persist) 6b8aa129dcbe0e Amir Goldstein 2017-06-21 787 goto out_unlock; 6b8aa129dcbe0e Amir Goldstein 2017-06-21 788 e9be9d5e76e348 Miklos Szeredi 2014-10-24 789 retried = true; 576bb263450bbb Christian Brauner 2022-04-04 790 err = ovl_workdir_cleanup(ofs, dir, mnt, work, 0); e9be9d5e76e348 Miklos Szeredi 2014-10-24 791 dput(work); 235ce9ed96bc62 Amir Goldstein 2020-08-30 792 if (err == -EINVAL) { 235ce9ed96bc62 Amir Goldstein 2020-08-30 793 work = ERR_PTR(err); 235ce9ed96bc62 Amir Goldstein 2020-08-30 794 goto out_unlock; 235ce9ed96bc62 Amir Goldstein 2020-08-30 795 } e9be9d5e76e348 Miklos Szeredi 2014-10-24 796 goto retry; e9be9d5e76e348 Miklos Szeredi 2014-10-24 797 } e9be9d5e76e348 Miklos Szeredi 2014-10-24 798 576bb263450bbb Christian Brauner 2022-04-04 799 err = ovl_mkdir_real(ofs, dir, &work, attr.ia_mode); 1f5573cfe7a705 Miklos Szeredi 2021-11-04 800 if (err) 1f5573cfe7a705 Miklos Szeredi 2021-11-04 801 goto out_dput; 1f5573cfe7a705 Miklos Szeredi 2021-11-04 802 1f5573cfe7a705 Miklos Szeredi 2021-11-04 803 /* Weird filesystem returning with hashed negative (kernfs)? */ 1f5573cfe7a705 Miklos Szeredi 2021-11-04 804 if (d_really_is_negative(work)) d5593461bec109 wenjun93 2023-05-06 805 err = -EINVAL; 1f5573cfe7a705 Miklos Szeredi 2021-11-04 @806 goto out_dput; c11b9fdd6a612f Miklos Szeredi 2016-09-01 807 cb348edb6bef72 Miklos Szeredi 2016-10-04 808 /* cb348edb6bef72 Miklos Szeredi 2016-10-04 809 * Try to remove POSIX ACL xattrs from workdir. We are good if: cb348edb6bef72 Miklos Szeredi 2016-10-04 810 * cb348edb6bef72 Miklos Szeredi 2016-10-04 811 * a) success (there was a POSIX ACL xattr and was removed) cb348edb6bef72 Miklos Szeredi 2016-10-04 812 * b) -ENODATA (there was no POSIX ACL xattr) cb348edb6bef72 Miklos Szeredi 2016-10-04 813 * c) -EOPNOTSUPP (POSIX ACL xattrs are not supported) cb348edb6bef72 Miklos Szeredi 2016-10-04 814 * cb348edb6bef72 Miklos Szeredi 2016-10-04 815 * There are various other error values that could effectively cb348edb6bef72 Miklos Szeredi 2016-10-04 816 * mean that the xattr doesn't exist (e.g. -ERANGE is returned cb348edb6bef72 Miklos Szeredi 2016-10-04 817 * if the xattr name is too long), but the set of filesystems cb348edb6bef72 Miklos Szeredi 2016-10-04 818 * allowed as upper are limited to "normal" ones, where checking cb348edb6bef72 Miklos Szeredi 2016-10-04 819 * for the above two errors is sufficient. cb348edb6bef72 Miklos Szeredi 2016-10-04 820 */ 31acceb97500dd Christian Brauner 2022-09-22 821 err = ovl_do_remove_acl(ofs, work, XATTR_NAME_POSIX_ACL_DEFAULT); e1ff3dd1ae52ce Miklos Szeredi 2016-09-05 822 if (err && err != -ENODATA && err != -EOPNOTSUPP) c11b9fdd6a612f Miklos Szeredi 2016-09-01 823 goto out_dput; c11b9fdd6a612f Miklos Szeredi 2016-09-01 824 31acceb97500dd Christian Brauner 2022-09-22 825 err = ovl_do_remove_acl(ofs, work, XATTR_NAME_POSIX_ACL_ACCESS); e1ff3dd1ae52ce Miklos Szeredi 2016-09-05 826 if (err && err != -ENODATA && err != -EOPNOTSUPP) c11b9fdd6a612f Miklos Szeredi 2016-09-01 827 goto out_dput; c11b9fdd6a612f Miklos Szeredi 2016-09-01 828 c11b9fdd6a612f Miklos Szeredi 2016-09-01 829 /* Clear any inherited mode bits */ c11b9fdd6a612f Miklos Szeredi 2016-09-01 830 inode_lock(work->d_inode); a15506eac96fdb Christian Brauner 2022-04-04 831 err = ovl_do_notify_change(ofs, work, &attr); c11b9fdd6a612f Miklos Szeredi 2016-09-01 832 inode_unlock(work->d_inode); c11b9fdd6a612f Miklos Szeredi 2016-09-01 833 if (err) c11b9fdd6a612f Miklos Szeredi 2016-09-01 834 goto out_dput; 6b8aa129dcbe0e Amir Goldstein 2017-06-21 835 } else { 6b8aa129dcbe0e Amir Goldstein 2017-06-21 836 err = PTR_ERR(work); 6b8aa129dcbe0e Amir Goldstein 2017-06-21 837 goto out_err; e9be9d5e76e348 Miklos Szeredi 2014-10-24 838 } e9be9d5e76e348 Miklos Szeredi 2014-10-24 839 out_unlock: 6b8aa129dcbe0e Amir Goldstein 2017-06-21 840 inode_unlock(dir); e9be9d5e76e348 Miklos Szeredi 2014-10-24 841 return work; e9be9d5e76e348 Miklos Szeredi 2014-10-24 842 e9be9d5e76e348 Miklos Szeredi 2014-10-24 843 out_dput: e9be9d5e76e348 Miklos Szeredi 2014-10-24 844 dput(work); 6b8aa129dcbe0e Amir Goldstein 2017-06-21 845 out_err: 1bd0a3aea4357e lijiazi 2019-12-16 846 pr_warn("failed to create directory %s/%s (errno: %i); mounting read-only\n", ad204488d3046b Miklos Szeredi 2017-11-10 847 ofs->config.workdir, name, -err); 6b8aa129dcbe0e Amir Goldstein 2017-06-21 848 work = NULL; e9be9d5e76e348 Miklos Szeredi 2014-10-24 849 goto out_unlock; e9be9d5e76e348 Miklos Szeredi 2014-10-24 850 } e9be9d5e76e348 Miklos Szeredi 2014-10-24 851 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests