Commit 4d06bfb9 authored by Ritesh Harjani's avatar Ritesh Harjani Committed by Theodore Ts'o

ext4: Add error handling for io_end_vec struct allocation

This patch adds the error handling in case of any memory allocation
failure for io_end_vec. This was missing in original
patch series which enables dioread_nolock for blocksize < pagesize.

Fixes: c8cc8816 ("ext4: Add support for blocksize < pagesize in dioread_nolock")
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarRitesh Harjani <riteshh@linux.ibm.com>
Link: https://lore.kernel.org/r/20191106093809.10673-1-riteshh@linux.ibm.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent 8d0d47ea
...@@ -2240,6 +2240,10 @@ static int mpage_process_page(struct mpage_da_data *mpd, struct page *page, ...@@ -2240,6 +2240,10 @@ static int mpage_process_page(struct mpage_da_data *mpd, struct page *page,
err = 0; err = 0;
if (!err && mpd->map.m_len && mpd->map.m_lblk > lblk) { if (!err && mpd->map.m_len && mpd->map.m_lblk > lblk) {
io_end_vec = ext4_alloc_io_end_vec(io_end); io_end_vec = ext4_alloc_io_end_vec(io_end);
if (IS_ERR(io_end_vec)) {
err = PTR_ERR(io_end_vec);
goto out;
}
io_end_vec->offset = mpd->map.m_lblk << blkbits; io_end_vec->offset = mpd->map.m_lblk << blkbits;
} }
*map_bh = true; *map_bh = true;
...@@ -2405,8 +2409,11 @@ static int mpage_map_and_submit_extent(handle_t *handle, ...@@ -2405,8 +2409,11 @@ static int mpage_map_and_submit_extent(handle_t *handle,
loff_t disksize; loff_t disksize;
int progress = 0; int progress = 0;
ext4_io_end_t *io_end = mpd->io_submit.io_end; ext4_io_end_t *io_end = mpd->io_submit.io_end;
struct ext4_io_end_vec *io_end_vec = ext4_alloc_io_end_vec(io_end); struct ext4_io_end_vec *io_end_vec;
io_end_vec = ext4_alloc_io_end_vec(io_end);
if (IS_ERR(io_end_vec))
return PTR_ERR(io_end_vec);
io_end_vec->offset = ((loff_t)map->m_lblk) << inode->i_blkbits; io_end_vec->offset = ((loff_t)map->m_lblk) << inode->i_blkbits;
do { do {
err = mpage_map_one_extent(handle, mpd); err = mpage_map_one_extent(handle, mpd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment