lkml.org 
[lkml]   [2018]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 101/101] xfs: dont fail when converting shortform attr to long form during ATTR_REPLACE
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Darrick J. Wong" <darrick.wong@oracle.com>

    commit 7b38460dc8e4eafba06c78f8e37099d3b34d473c upstream.

    Kanda Motohiro reported that expanding a tiny xattr into a large xattr
    fails on XFS because we remove the tiny xattr from a shortform fork and
    then try to re-add it after converting the fork to extents format having
    not removed the ATTR_REPLACE flag. This fails because the attr is no
    longer present, causing a fs shutdown.

    This is derived from the patch in his bug report, but we really
    shouldn't ignore a nonzero retval from the remove call.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119
    Reported-by: kanda.motohiro@gmail.com
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/xfs/libxfs/xfs_attr.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    --- a/fs/xfs/libxfs/xfs_attr.c
    +++ b/fs/xfs/libxfs/xfs_attr.c
    @@ -487,7 +487,14 @@ xfs_attr_shortform_addname(xfs_da_args_t
    if (args->flags & ATTR_CREATE)
    return retval;
    retval = xfs_attr_shortform_remove(args);
    - ASSERT(retval == 0);
    + if (retval)
    + return retval;
    + /*
    + * Since we have removed the old attr, clear ATTR_REPLACE so
    + * that the leaf format add routine won't trip over the attr
    + * not being around.
    + */
    + args->flags &= ~ATTR_REPLACE;
    }

    if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||

    \
     
     \ /
      Last update: 2018-12-06 15:48    [W:4.029 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site