ext4: BUG_ON fix: check if page has buffers before calling page_buffers()
We need to make check if a page does not have buffes by checking page_has_buffers(page) before calling page_buffers(page) in ext4_writepage(). Otherwise page_buffers() could throw a BUG_ON. Thanks also to Markus Trippelsdorf and Avinash Kurup who also reported the problem. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Reported-by: Sedat Dilek <sedat.dilek@googlemail.com> Tested-by: Sedat Dilek <sedat.dilek@googlemail.com>
This commit is contained in:
parent
81280572ca
commit
b1142e8fec
|
@ -2718,7 +2718,7 @@ static int ext4_writepage(struct page *page,
|
||||||
* try to create them using __block_write_begin. If this
|
* try to create them using __block_write_begin. If this
|
||||||
* fails, redirty the page and move on.
|
* fails, redirty the page and move on.
|
||||||
*/
|
*/
|
||||||
if (!page_buffers(page)) {
|
if (!page_has_buffers(page)) {
|
||||||
if (__block_write_begin(page, 0, len,
|
if (__block_write_begin(page, 0, len,
|
||||||
noalloc_get_block_write)) {
|
noalloc_get_block_write)) {
|
||||||
redirty_page:
|
redirty_page:
|
||||||
|
@ -2732,12 +2732,10 @@ static int ext4_writepage(struct page *page,
|
||||||
if (walk_page_buffers(NULL, page_bufs, 0, len, NULL,
|
if (walk_page_buffers(NULL, page_bufs, 0, len, NULL,
|
||||||
ext4_bh_delay_or_unwritten)) {
|
ext4_bh_delay_or_unwritten)) {
|
||||||
/*
|
/*
|
||||||
* We don't want to do block allocation So redirty the
|
* We don't want to do block allocation, so redirty
|
||||||
* page and return We may reach here when we do a
|
* the page and return. We may reach here when we do
|
||||||
* journal commit via
|
* a journal commit via journal_submit_inode_data_buffers.
|
||||||
* journal_submit_inode_data_buffers. If we don't
|
* We can also reach here via shrink_page_list
|
||||||
* have mapping block we just ignore them. We can also
|
|
||||||
* reach here via shrink_page_list
|
|
||||||
*/
|
*/
|
||||||
goto redirty_page;
|
goto redirty_page;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue