lkml.org 
[lkml]   [2012]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[16/65] xfs: fix endian conversion issue in discard code
    3.0-stable review patch.  If anyone has any objections, please let me know.

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


    From: Dave Chinner <dchinner@redhat.com>

    commit b1c770c273a4787069306fc82aab245e9ac72e9d upstream

    When finding the longest extent in an AG, we read the value directly
    out of the AGF buffer without endian conversion. This will give an
    incorrect length, resulting in FITRIM operations potentially not
    trimming everything that it should.

    Note, for 3.0-stable this has been modified to apply to
    fs/xfs/linux-2.6/xfs_discard.c instead of fs/xfs/xfs_discard.c. -bpm

    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ben Myers <bpm@sgi.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/xfs/linux-2.6/xfs_discard.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/fs/xfs/linux-2.6/xfs_discard.c
    +++ b/fs/xfs/linux-2.6/xfs_discard.c
    @@ -68,7 +68,7 @@ xfs_trim_extents(
    * Look up the longest btree in the AGF and start with it.
    */
    error = xfs_alloc_lookup_le(cur, 0,
    - XFS_BUF_TO_AGF(agbp)->agf_longest, &i);
    + be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
    if (error)
    goto out_del_cursor;

    @@ -84,7 +84,7 @@ xfs_trim_extents(
    if (error)
    goto out_del_cursor;
    XFS_WANT_CORRUPTED_GOTO(i == 1, out_del_cursor);
    - ASSERT(flen <= XFS_BUF_TO_AGF(agbp)->agf_longest);
    + ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));

    /*
    * Too small? Give up.



    \
     
     \ /
      Last update: 2012-02-01 22:49    [W:4.046 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site