Skip to content

Commit

Permalink
UBI: block: Add missing cache flushes
Browse files Browse the repository at this point in the history
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 commit 2d4dc89
("block: add helpers to run flush_dcache_page() against a bio and a
request's pages").

Fixes: 9d54c8a ("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>
  • Loading branch information
Kevin Cernekee authored and Richard Weinberger committed May 6, 2015
1 parent 5ebe6af commit 98fb1ff
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/mtd/ubi/block.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,8 @@ static void ubiblock_do_work(struct work_struct *work)
blk_rq_map_sg(req->q, req, pdu->usgl.sg);

ret = ubiblock_read(pdu);
rq_flush_dcache_pages(req);

blk_mq_end_request(req, ret);
}

Expand Down

0 comments on commit 98fb1ff

Please sign in to comment.