mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
rbd: flush dcache after zeroing page data
Neither zero_bio_chain() nor zero_pages() contains a call to flush
caches after zeroing a portion of a page. This can cause problems
on architectures that have caches that allow virtual address
aliasing.
This resolves:
http://tracker.ceph.com/issues/4777
Signed-off-by: Alex Elder <[email protected]>
Reviewed-by: Josh Durgin <[email protected]>
This commit is contained in:
parent
96e4dac66f
commit
e215605417
1 changed files with 2 additions and 0 deletions
|
|
@ -1126,6 +1126,7 @@ static void zero_bio_chain(struct bio *chain, int start_ofs)
|
|||
buf = bvec_kmap_irq(bv, &flags);
|
||||
memset(buf + remainder, 0,
|
||||
bv->bv_len - remainder);
|
||||
flush_dcache_page(bv->bv_page);
|
||||
bvec_kunmap_irq(buf, &flags);
|
||||
}
|
||||
pos += bv->bv_len;
|
||||
|
|
@ -1158,6 +1159,7 @@ static void zero_pages(struct page **pages, u64 offset, u64 end)
|
|||
local_irq_save(flags);
|
||||
kaddr = kmap_atomic(*page);
|
||||
memset(kaddr + page_offset, 0, length);
|
||||
flush_dcache_page(*page);
|
||||
kunmap_atomic(kaddr);
|
||||
local_irq_restore(flags);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue