diff --git a/fs/buffer.c b/fs/buffer.c
index 10e7389786d3330284cfab15cad5148d643588e1..2a213e8bb97c7a355990deea457a26a0b86426dd 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2050,7 +2050,8 @@ static int __block_commit_write(struct inode *inode, struct page *page,
 			set_buffer_uptodate(bh);
 			mark_buffer_dirty(bh);
 		}
-		clear_buffer_new(bh);
+		if (buffer_new(bh))
+			clear_buffer_new(bh);
 
 		block_start = block_end;
 		bh = bh->b_this_page;