Re: [PATCH] overlayfs: clean error handling

From: kernel test robot
Date: Sat May 06 2023 - 06:51:22 EST


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