lkml.org 
[lkml]   [2016]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 091/180] xfs: fix inode validity check in xfs_iflush_cluster
    Date
    From: Dave Chinner <dchinner@redhat.com>

    commit 51b07f30a71c27405259a0248206ed4e22adbee2 upstream.

    Some careless idiot(*) wrote crap code in commit 1a3e8f3 ("xfs:
    convert inode cache lookups to use RCU locking") back in late 2010,
    and so xfs_iflush_cluster checks the wrong inode for whether it is
    still valid under RCU protection. Fix it to lock and check the
    correct inode.

    (*) Careless-idiot: Dave Chinner <dchinner@redhat.com>

    cc: <stable@vger.kernel.org> # 3.10.x-
    Discovered-by: Brain Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    fs/xfs/xfs_inode.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
    index 1f9c806..52faf49 100644
    --- a/fs/xfs/xfs_inode.c
    +++ b/fs/xfs/xfs_inode.c
    @@ -2604,13 +2604,13 @@ xfs_iflush_cluster(
    * We need to check under the i_flags_lock for a valid inode
    * here. Skip it if it is not valid or the wrong inode.
    */
    - spin_lock(&ip->i_flags_lock);
    - if (!ip->i_ino ||
    + spin_lock(&iq->i_flags_lock);
    + if (!iq->i_ino ||
    (XFS_INO_TO_AGINO(mp, iq->i_ino) & mask) != first_index) {
    - spin_unlock(&ip->i_flags_lock);
    + spin_unlock(&iq->i_flags_lock);
    continue;
    }
    - spin_unlock(&ip->i_flags_lock);
    + spin_unlock(&iq->i_flags_lock);

    /*
    * Do an un-protected check to see if the inode is dirty and
    --
    2.8.0.rc2.1.gbe9624a
    \
     
     \ /
      Last update: 2016-09-17 09:57    [W:4.301 / U:0.576 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site