lkml.org 
[lkml]   [2019]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 002/346] ext4: do not delete unlinked inode from orphan list on failed truncate
    Date
    From: Jan Kara <jack@suse.cz>

    commit ee0ed02ca93ef1ecf8963ad96638795d55af2c14 upstream.

    It is possible that unlinked inode enters ext4_setattr() (e.g. if
    somebody calls ftruncate(2) on unlinked but still open file). In such
    case we should not delete the inode from the orphan list if truncate
    fails. Note that this is mostly a theoretical concern as filesystem is
    corrupted if we reach this path anyway but let's be consistent in our
    orphan handling.

    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/ext4/inode.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/ext4/inode.c
    +++ b/fs/ext4/inode.c
    @@ -5627,7 +5627,7 @@ int ext4_setattr(struct dentry *dentry,
    up_write(&EXT4_I(inode)->i_data_sem);
    ext4_journal_stop(handle);
    if (error) {
    - if (orphan)
    + if (orphan && inode->i_nlink)
    ext4_orphan_del(NULL, inode);
    goto err_out;
    }

    \
     
     \ /
      Last update: 2019-05-30 06:37    [W:4.044 / U:0.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site