minios: Fix bug when blkfront reading into zero-mapped buffer
PATCH 1/1 minios: Fix bug when blkfront reading into zero-mapped buffer
minios: Fix bug when blkfront reading into zero-mapped buffer by just poking the page.
No need to use virtual_to_mfn() for the ring since that is a real page.
Signed-off-by Samuel Thibault <[email protected]>
extras/mini-os/blkfront.c +6 -1
@@ -102,7 +102,7 @@ struct blkfront_dev *init_blkfront(charSHARED_RING_INIT (s);FRONT_RING_INIT (&dev->ring, s,PAGE_SIZE ); - dev->ring_ref =gnttab_grant_access (0 ,virtual_to_mfn (s),0 ); + dev->ring_ref =gnttab_grant_access (0 ,virt_to_mfn (s),0 );evtchn_alloc_unbound_t op; op.dom =DOMID_SELF ;
@@ -288,6 +288,11 @@ void blkfront_aio(struct blkfront_aiocbfor (j =0 ; j < n; j++) {uintptr_t data = start + j *PAGE_SIZE ; +if (!write) { +/* Trigger CoW if needed */ + *(char *)data =0 ; +barrier (); + } aiocbp->gref[j] = req->seg[j].gref =gnttab_grant_access (0 ,virtual_to_mfn (data), write); req->seg[j].first_sect =0 ;