Merge tag 'staging-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-2.6-microblaze.git] / fs / xfs / xfs_attr_inactive.c
index c42f90e..bfad669 100644 (file)
@@ -367,7 +367,7 @@ xfs_attr_inactive(
         * removal below.
         */
        if (xfs_inode_hasattr(dp) &&
-           dp->i_d.di_aformat != XFS_DINODE_FMT_LOCAL) {
+           dp->i_afp->if_format != XFS_DINODE_FMT_LOCAL) {
                error = xfs_attr3_root_inactive(&trans, dp);
                if (error)
                        goto out_cancel;
@@ -388,8 +388,11 @@ out_cancel:
        xfs_trans_cancel(trans);
 out_destroy_fork:
        /* kill the in-core attr fork before we drop the inode lock */
-       if (dp->i_afp)
-               xfs_idestroy_fork(dp, XFS_ATTR_FORK);
+       if (dp->i_afp) {
+               xfs_idestroy_fork(dp->i_afp);
+               kmem_cache_free(xfs_ifork_zone, dp->i_afp);
+               dp->i_afp = NULL;
+       }
        if (lock_mode)
                xfs_iunlock(dp, lock_mode);
        return error;