# HG changeset patch
# User ssmith@xxxxxxxxxxxxxxxxxxxxxxxxxx
# Node ID 662dcf03872df750e092e25e7e3beaae15e991b7
# Parent 1e225598ce827a8d810ad57e82547ad6ed9c0258
[XEN] Fix domid check in grant tables when re-using an already pinned grant
table entry.
Based on cset 11419 in xen-unstable, originally from Herbert Xu.
Signed-off-by: Steven Smith <sos22@xxxxxxxxx>
---
xen/common/grant_table.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff -r 1e225598ce82 -r 662dcf03872d xen/common/grant_table.c
--- a/xen/common/grant_table.c Thu Jun 29 10:51:49 2006 +0100
+++ b/xen/common/grant_table.c Thu Sep 07 10:08:25 2006 +0100
@@ -163,6 +163,14 @@ __gnttab_map_grant_ref(
spin_lock(&rd->grant_table->lock);
+ /* If already pinned, check the active domid and avoid refcnt overflow. */
+ if ( act->pin &&
+ ((act->domid != ld->domain_id) ||
+ (act->pin & 0x80808080U) != 0) )
+ PIN_FAIL(unlock_out, GNTST_general_error,
+ "Bad domain (%d != %d), or risk of counter overflow %08x\n",
+ act->domid, ld->domain_id, act->pin);
+
if ( !act->pin ||
(!(op->flags & GNTMAP_readonly) &&
!(act->pin & (GNTPIN_hstw_mask|GNTPIN_devw_mask))) )
@@ -221,9 +229,6 @@ __gnttab_map_grant_ref(
act->frame = gmfn_to_mfn(rd, sha->frame);
}
}
- else if ( (act->pin & 0x80808080U) != 0 )
- PIN_FAIL(unlock_out, ENOSPC,
- "Risk of counter overflow %08x\n", act->pin);
if ( op->flags & GNTMAP_device_map )
act->pin += (op->flags & GNTMAP_readonly) ?
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|