Jelajahi Sumber

brd: fix cacheflushing

brd is missing a flush_dcache_page. On 2nd thoughts, perhaps it is the
pagecache's responsibility to flush user virtual aliases (the driver of
course should flush kernel virtual mappings)... but anyway, there
already exists cache flushing for one direction of transfer, so we
should add the other.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Nick Piggin 16 tahun lalu
induk
melakukan
c2572f2b4f
1 mengubah file dengan 3 tambahan dan 1 penghapusan
  1. 3 1
      drivers/block/brd.c

+ 3 - 1
drivers/block/brd.c

@@ -275,8 +275,10 @@ static int brd_do_bvec(struct brd_device *brd, struct page *page,
 	if (rw == READ) {
 	if (rw == READ) {
 		copy_from_brd(mem + off, brd, sector, len);
 		copy_from_brd(mem + off, brd, sector, len);
 		flush_dcache_page(page);
 		flush_dcache_page(page);
-	} else
+	} else {
+		flush_dcache_page(page);
 		copy_to_brd(brd, mem + off, sector, len);
 		copy_to_brd(brd, mem + off, sector, len);
+	}
 	kunmap_atomic(mem, KM_USER0);
 	kunmap_atomic(mem, KM_USER0);
 
 
 out:
 out: