[PATCH] reiserfs: journal_init fix
This fixes segmentation fault when specifying bad journal device via a mount option. Don't pass a zero pointer to bdevname() if filp_open() returns error. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
439bd37087
commit
74f9f974a6
@ -2306,13 +2306,16 @@ static int journal_init_dev( struct super_block *super,
|
|||||||
if( !IS_ERR( journal -> j_dev_file ) ) {
|
if( !IS_ERR( journal -> j_dev_file ) ) {
|
||||||
struct inode *jdev_inode = journal->j_dev_file->f_mapping->host;
|
struct inode *jdev_inode = journal->j_dev_file->f_mapping->host;
|
||||||
if( !S_ISBLK( jdev_inode -> i_mode ) ) {
|
if( !S_ISBLK( jdev_inode -> i_mode ) ) {
|
||||||
reiserfs_warning (super, "journal_init_dev: '%s' is "
|
reiserfs_warning(super, "journal_init_dev: '%s' is "
|
||||||
"not a block device", jdev_name );
|
"not a block device", jdev_name );
|
||||||
result = -ENOTBLK;
|
result = -ENOTBLK;
|
||||||
|
release_journal_dev( super, journal );
|
||||||
} else {
|
} else {
|
||||||
/* ok */
|
/* ok */
|
||||||
journal->j_dev_bd = I_BDEV(jdev_inode);
|
journal->j_dev_bd = I_BDEV(jdev_inode);
|
||||||
set_blocksize(journal->j_dev_bd, super->s_blocksize);
|
set_blocksize(journal->j_dev_bd, super->s_blocksize);
|
||||||
|
reiserfs_info(super, "journal_init_dev: journal device: %s\n",
|
||||||
|
bdevname(journal->j_dev_bd, b));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
result = PTR_ERR( journal -> j_dev_file );
|
result = PTR_ERR( journal -> j_dev_file );
|
||||||
@ -2321,11 +2324,6 @@ static int journal_init_dev( struct super_block *super,
|
|||||||
"journal_init_dev: Cannot open '%s': %i",
|
"journal_init_dev: Cannot open '%s': %i",
|
||||||
jdev_name, result );
|
jdev_name, result );
|
||||||
}
|
}
|
||||||
if( result != 0 ) {
|
|
||||||
release_journal_dev( super, journal );
|
|
||||||
}
|
|
||||||
reiserfs_info(super, "journal_init_dev: journal device: %s\n",
|
|
||||||
bdevname(journal->j_dev_bd, b));
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user