]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
f2fs: check the generic conditions first
authorJaegeuk Kim <jaegeuk@kernel.org>
Mon, 30 Jun 2025 16:06:09 +0000 (16:06 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:28:28 +0000 (16:28 +0200)
[ Upstream commit e23ab8028de0d92df5921a570f5212c0370db3b5 ]

Let's return errors caught by the generic checks. This fixes generic/494 where
it expects to see EBUSY by setattr_prepare instead of EINVAL by f2fs for active
swapfile.

Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/f2fs/file.c

index 8f0cb7c7eedeb4387e4d0e7852999980c0e72440..031015823acb2b78acdadcd8c436a2668c9ff5f0 100644 (file)
@@ -991,6 +991,18 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
        if (unlikely(f2fs_cp_error(F2FS_I_SB(inode))))
                return -EIO;
 
+       err = setattr_prepare(idmap, dentry, attr);
+       if (err)
+               return err;
+
+       err = fscrypt_prepare_setattr(dentry, attr);
+       if (err)
+               return err;
+
+       err = fsverity_prepare_setattr(dentry, attr);
+       if (err)
+               return err;
+
        if (unlikely(IS_IMMUTABLE(inode)))
                return -EPERM;
 
@@ -1008,18 +1020,6 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
                        return -EINVAL;
        }
 
-       err = setattr_prepare(idmap, dentry, attr);
-       if (err)
-               return err;
-
-       err = fscrypt_prepare_setattr(dentry, attr);
-       if (err)
-               return err;
-
-       err = fsverity_prepare_setattr(dentry, attr);
-       if (err)
-               return err;
-
        if (is_quota_modification(idmap, inode, attr)) {
                err = f2fs_dquot_initialize(inode);
                if (err)