Message ID | 5139DB90.5090302@gmail.com |
---|---|
State | Not Applicable, archived |
Headers | show |
diff --git a/mm/bounce.c b/mm/bounce.c index 4e9ae72..f352c03 100644 --- a/mm/bounce.c +++ b/mm/bounce.c @@ -214,7 +214,8 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig, if (rw == WRITE) { char *vto, *vfrom; - flush_dcache_page(from->bv_page); + if (unlikely(!PageSlab(from->bv_page))) + flush_dcache_page(from->bv_page); vto = page_address(to->bv_page) + to->bv_offset; vfrom = kmap(from->bv_page) + from->bv_offset; memcpy(vto, vfrom, to->bv_len);
The bounce accept slab pages from jbd2, and flush dcache on them. When enabling VM_DEBUG, it will tigger VM_BUG_ON in page_mapping(). So, check PageSlab to avoid it in __blk_queue_bounce(). Bug URL: http://lkml.org/lkml/2013/3/7/56 Signed-off-by: shuge <shuge@allwinnertech.com> --- mm/bounce.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)