diff options
author | Markus Trippelsdorf <markus@trippelsdorf.de> | 2010-11-18 03:46:06 +0100 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2010-11-18 03:46:06 +0100 |
commit | 08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a (patch) | |
tree | 5a288945b73bc0ea79ca26e556f8061b51a85c1d /fs/ext4/mballoc.c | |
parent | Linux 2.6.37-rc2 (diff) | |
download | linux-08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a.tar.xz linux-08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a.zip |
ext4: fix setting random pages PageUptodate
ext4_end_bio calls put_page and kmem_cache_free before calling
SetPageUpdate(). This can result in setting the PageUptodate bit on
random pages and causes the following BUG:
BUG: Bad page state in process rm pfn:52e54
page:ffffea0001222260 count:0 mapcount:0 mapping: (null) index:0x0
arch kernel: page flags: 0x4000000000000008(uptodate)
Fix the problem by moving put_io_page() after the SetPageUpdate() call.
Thanks to Hugh Dickins for analyzing this problem.
Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions