lkml.org 
[lkml]   [2019]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 121/123] ext4: fix block validity checks for journal inodes using indirect blocks
    Date
    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/ext4/block_validity.c | 5 +++++
    1 file changed, 5 insertions(+)

    --- a/fs/ext4/block_validity.c
    +++ b/fs/ext4/block_validity.c
    @@ -276,6 +276,11 @@ int ext4_check_blockref(const char *func
    __le32 *bref = p;
    unsigned int blk;

    + if (ext4_has_feature_journal(inode->i_sb) &&
    + (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: 2019-05-20 14:31    [W:5.701 / U:0.560 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site