Commit 31f48fc8 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull isofs and reiserfs fixes from Jan Kara:
 "A reiserfs and an isofs fix.  They arrived after I sent you my first
  pull request and I don't want to delay them unnecessarily till rc2"

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  isofs: Fix infinite looping over CE entries
  reiserfs: destroy allocated commit workqueue
parents 0b233b7c f54e18f1
...@@ -30,6 +30,7 @@ struct rock_state { ...@@ -30,6 +30,7 @@ struct rock_state {
int cont_size; int cont_size;
int cont_extent; int cont_extent;
int cont_offset; int cont_offset;
int cont_loops;
struct inode *inode; struct inode *inode;
}; };
...@@ -73,6 +74,9 @@ static void init_rock_state(struct rock_state *rs, struct inode *inode) ...@@ -73,6 +74,9 @@ static void init_rock_state(struct rock_state *rs, struct inode *inode)
rs->inode = inode; rs->inode = inode;
} }
/* Maximum number of Rock Ridge continuation entries */
#define RR_MAX_CE_ENTRIES 32
/* /*
* Returns 0 if the caller should continue scanning, 1 if the scan must end * Returns 0 if the caller should continue scanning, 1 if the scan must end
* and -ve on error. * and -ve on error.
...@@ -105,6 +109,8 @@ static int rock_continue(struct rock_state *rs) ...@@ -105,6 +109,8 @@ static int rock_continue(struct rock_state *rs)
goto out; goto out;
} }
ret = -EIO; ret = -EIO;
if (++rs->cont_loops >= RR_MAX_CE_ENTRIES)
goto out;
bh = sb_bread(rs->inode->i_sb, rs->cont_extent); bh = sb_bread(rs->inode->i_sb, rs->cont_extent);
if (bh) { if (bh) {
memcpy(rs->buffer, bh->b_data + rs->cont_offset, memcpy(rs->buffer, bh->b_data + rs->cont_offset,
......
...@@ -2172,6 +2172,9 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) ...@@ -2172,6 +2172,9 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
reiserfs_write_unlock(s); reiserfs_write_unlock(s);
} }
if (sbi->commit_wq)
destroy_workqueue(sbi->commit_wq);
cancel_delayed_work_sync(&REISERFS_SB(s)->old_work); cancel_delayed_work_sync(&REISERFS_SB(s)->old_work);
reiserfs_free_bitmap_cache(s); reiserfs_free_bitmap_cache(s);
......
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