UBI: block: Add missing cache flushes
Block drivers are responsible for calling flush_dcache_page() on each BIO request. This operation keeps the I$ coherent with the D$ on architectures that don't have hardware coherency support. Without this flush, random crashes are seen when executing user programs from an ext4 filesystem backed by a ubiblock device. This patch is based on the change implemented in commit2d4dc890b5
("block: add helpers to run flush_dcache_page() against a bio and a request's pages"). Fixes:9d54c8a33e
("UBI: R/O block driver on top of UBI volumes") Signed-off-by: Kevin Cernekee <cernekee@chromium.org> Signed-off-by: Ezequiel Garcia <ezequiel.garcia@imgtec.com> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
5ebe6afaf0
commit
98fb1ffd81
|
@ -310,6 +310,8 @@ static void ubiblock_do_work(struct work_struct *work)
|
||||||
blk_rq_map_sg(req->q, req, pdu->usgl.sg);
|
blk_rq_map_sg(req->q, req, pdu->usgl.sg);
|
||||||
|
|
||||||
ret = ubiblock_read(pdu);
|
ret = ubiblock_read(pdu);
|
||||||
|
rq_flush_dcache_pages(req);
|
||||||
|
|
||||||
blk_mq_end_request(req, ret);
|
blk_mq_end_request(req, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue