Merge branch 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing

* 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
  reiserfs: Fix locking BUG during mount failure
This commit is contained in:
Linus Torvalds 2010-04-02 19:48:54 -07:00
Родитель 5193d7a7f5 b7b7fa4310
Коммит 0afa80ab6f
1 изменённых файлов: 4 добавлений и 6 удалений

Просмотреть файл

@ -1618,10 +1618,8 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
save_mount_options(s, data); save_mount_options(s, data);
sbi = kzalloc(sizeof(struct reiserfs_sb_info), GFP_KERNEL); sbi = kzalloc(sizeof(struct reiserfs_sb_info), GFP_KERNEL);
if (!sbi) { if (!sbi)
errval = -ENOMEM; return -ENOMEM;
goto error_alloc;
}
s->s_fs_info = sbi; s->s_fs_info = sbi;
/* Set default values for options: non-aggressive tails, RO on errors */ /* Set default values for options: non-aggressive tails, RO on errors */
REISERFS_SB(s)->s_mount_opt |= (1 << REISERFS_SMALLTAIL); REISERFS_SB(s)->s_mount_opt |= (1 << REISERFS_SMALLTAIL);
@ -1878,12 +1876,12 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
return (0); return (0);
error: error:
reiserfs_write_unlock(s);
error_alloc:
if (jinit_done) { /* kill the commit thread, free journal ram */ if (jinit_done) { /* kill the commit thread, free journal ram */
journal_release_error(NULL, s); journal_release_error(NULL, s);
} }
reiserfs_write_unlock(s);
reiserfs_free_bitmap_cache(s); reiserfs_free_bitmap_cache(s);
if (SB_BUFFER_WITH_SB(s)) if (SB_BUFFER_WITH_SB(s))
brelse(SB_BUFFER_WITH_SB(s)); brelse(SB_BUFFER_WITH_SB(s));