diff options
author | Theodore Ts'o <tytso@mit.edu> | 2009-03-27 19:43:21 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-03-27 19:43:21 -0400 |
commit | e7c9e3e99adf6c49c5d593a51375916acc039d1e (patch) | |
tree | a0aef22aed6ff8362a9816d8780db4584bc06ffa /fs/ext4 | |
parent | a7b19448ddbdc34b2b8fedc048ba154ca798667b (diff) |
ext4: fix locking typo in mballoc which could cause soft lockup hangs
Smatch (http://repo.or.cz/w/smatch.git/) complains about the locking in
ext4_mb_add_n_trim() from fs/ext4/mballoc.c
4438 list_for_each_entry_rcu(tmp_pa, &lg->lg_prealloc_list[order],
4439 pa_inode_list) {
4440 spin_lock(&tmp_pa->pa_lock);
4441 if (tmp_pa->pa_deleted) {
4442 spin_unlock(&pa->pa_lock);
4443 continue;
4444 }
Brown paper bag time...
Reported-by: Dan Carpenter <error27@gmail.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: stable@kernel.org
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/mballoc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 5f3e3a3a38d6..f871677a7984 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c | |||
@@ -4392,7 +4392,7 @@ static void ext4_mb_add_n_trim(struct ext4_allocation_context *ac) | |||
4392 | pa_inode_list) { | 4392 | pa_inode_list) { |
4393 | spin_lock(&tmp_pa->pa_lock); | 4393 | spin_lock(&tmp_pa->pa_lock); |
4394 | if (tmp_pa->pa_deleted) { | 4394 | if (tmp_pa->pa_deleted) { |
4395 | spin_unlock(&pa->pa_lock); | 4395 | spin_unlock(&tmp_pa->pa_lock); |
4396 | continue; | 4396 | continue; |
4397 | } | 4397 | } |
4398 | if (!added && pa->pa_free < tmp_pa->pa_free) { | 4398 | if (!added && pa->pa_free < tmp_pa->pa_free) { |