ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling

This was found through a code checker (http://repo.or.cz/w/smatch.git/). 
It looks like you might be able to trigger the error by trying to migrate 
a readonly file system.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
Dan Carpenter 2009-02-15 20:02:19 -05:00 committed by Theodore Ts'o
parent 2acf2c261b
commit 090542641d

View File

@ -481,7 +481,7 @@ int ext4_ext_migrate(struct inode *inode)
+ 1); + 1);
if (IS_ERR(handle)) { if (IS_ERR(handle)) {
retval = PTR_ERR(handle); retval = PTR_ERR(handle);
goto err_out; return retval;
} }
tmp_inode = ext4_new_inode(handle, tmp_inode = ext4_new_inode(handle,
inode->i_sb->s_root->d_inode, inode->i_sb->s_root->d_inode,
@ -489,8 +489,7 @@ int ext4_ext_migrate(struct inode *inode)
if (IS_ERR(tmp_inode)) { if (IS_ERR(tmp_inode)) {
retval = -ENOMEM; retval = -ENOMEM;
ext4_journal_stop(handle); ext4_journal_stop(handle);
tmp_inode = NULL; return retval;
goto err_out;
} }
i_size_write(tmp_inode, i_size_read(inode)); i_size_write(tmp_inode, i_size_read(inode));
/* /*
@ -618,8 +617,7 @@ err_out:
ext4_journal_stop(handle); ext4_journal_stop(handle);
if (tmp_inode) iput(tmp_inode);
iput(tmp_inode);
return retval; return retval;
} }