diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index efe8caa3811c9df517cc1c8e9a31e5674722f71e..37f834bc7cd6df84a4d5c1e4b42c2f8bd425f337 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2280,8 +2280,11 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping, } page = __grab_cache_page(mapping, index); - if (!page) - return -ENOMEM; + if (!page) { + ext4_journal_stop(handle); + ret = -ENOMEM; + goto out; + } *pagep = page; ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,