]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: turn the XFS_DA_OP_REPLACE checks in xfs_attr_shortform_addname into asserts
authorChristoph Hellwig <hch@lst.de>
Mon, 15 Apr 2024 23:07:44 +0000 (16:07 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 17 Apr 2024 21:06:26 +0000 (14:06 -0700)
Source kernel commit: 378b6aef9de0f7c3d0de309ecc61c11eb29e57da

Since commit deed9512872d ("xfs: Check for -ENOATTR or -EEXIST"), the
high-level attr code does a lookup for any attr we're trying to set,
and does the checks to handle the create vs replace cases, which thus
never hit the low-level attr code.

Turn the checks in xfs_attr_shortform_addname as they must never trip.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
libxfs/xfs_attr.c

index 055d204101a5bd0d39f7c705acf97d6468b0fdb8..1419846bdf9de58359835272c567495ab378ec9a 100644 (file)
@@ -1070,8 +1070,7 @@ xfs_attr_shortform_addname(
        if (xfs_attr_sf_findname(args)) {
                int             error;
 
-               if (!(args->op_flags & XFS_DA_OP_REPLACE))
-                       return -EEXIST;
+               ASSERT(args->op_flags & XFS_DA_OP_REPLACE);
 
                error = xfs_attr_sf_removename(args);
                if (error)
@@ -1085,8 +1084,7 @@ xfs_attr_shortform_addname(
                 */
                args->op_flags &= ~XFS_DA_OP_REPLACE;
        } else {
-               if (args->op_flags & XFS_DA_OP_REPLACE)
-                       return -ENOATTR;
+               ASSERT(!(args->op_flags & XFS_DA_OP_REPLACE));
        }
 
        if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||