lkml.org 
[lkml]   [2020]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 51/61] ext4: fix block validity checks for journal inodes using indirect blocks
    3.16.85-rc1 review patch.  If anyone has any objections, please let me know.

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

    From: Theodore Ts'o <tytso@mit.edu>

    commit 170417c8c7bb2cbbdd949bf5c443c0c8f24a203b upstream.

    Commit 345c0dbf3a30 ("ext4: protect journal inode's blocks using
    block_validity") failed to add an exception for the journal inode in
    ext4_check_blockref(), which is the function used by ext4_get_branch()
    for indirect blocks. This caused attempts to read from the ext3-style
    journals to fail with:

    [ 848.968550] EXT4-fs error (device sdb7): ext4_get_branch:171: inode #8: block 30343695: comm jbd2/sdb7-8: invalid block

    Fix this by adding the missing exception check.

    Fixes: 345c0dbf3a30 ("ext4: protect journal inode's blocks using block_validity")
    Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: Use EXT4_HAS_COMPAT_FEATURE]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    --- a/fs/ext4/block_validity.c
    +++ b/fs/ext4/block_validity.c
    @@ -277,6 +277,12 @@ int ext4_check_blockref(const char *func
    __le32 *bref = p;
    unsigned int blk;

    + if (EXT4_HAS_COMPAT_FEATURE(inode->i_sb,
    + EXT4_FEATURE_COMPAT_HAS_JOURNAL) &&
    + (inode->i_ino ==
    + le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_journal_inum)))
    + return 0;
    +
    while (bref < p+max) {
    blk = le32_to_cpu(*bref++);
    if (blk &&
    \
     
     \ /
      Last update: 2020-06-09 20:08    [W:3.380 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site