|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/3] gnttab: Drop the frame parameter from acquire_grant_for_copy()
It is redundant with the *page parameter. Rename the grant_frame parameter to
indicate that it is local, and highlight the correctness of the change.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Tim Deegan <tim@xxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
---
xen/common/grant_table.c | 42 ++++++++++++++++++++++--------------------
1 file changed, 22 insertions(+), 20 deletions(-)
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 36895aa..188c477 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -2142,15 +2142,17 @@ static void fixup_status_for_copy_pin(const struct
active_grant_entry *act,
gnttab_clear_flag(_GTF_reading, status);
}
-/* Grab a frame number from a grant entry and update the flags and pin
- count as appropriate. If rc == GNTST_okay, note that this *does*
- take one ref count on the target page, stored in *page.
- If there is any error, *page = NULL, no ref taken. */
+/*
+ * Grab a frame number from a grant entry and update the flags and pin
+ * count as appropriate. If rc == GNTST_okay, note that this *does*
+ * take one ref count on the target page, stored in *page.
+ * If there is any error, *page = NULL, no ref taken.
+ */
static int
acquire_grant_for_copy(
struct domain *rd, grant_ref_t gref, domid_t ldom, bool readonly,
- unsigned long *frame, struct page_info **page,
- uint16_t *page_off, uint16_t *length, bool allow_transitive)
+ struct page_info **page, uint16_t *page_off, uint16_t *length,
+ bool allow_transitive)
{
struct grant_table *rgt = rd->grant_table;
grant_entry_v2_t *sha2;
@@ -2161,7 +2163,7 @@ acquire_grant_for_copy(
domid_t trans_domid;
grant_ref_t trans_gref;
struct domain *td;
- unsigned long grant_frame;
+ unsigned long frame;
uint16_t trans_page_off;
uint16_t trans_length;
bool is_sub_page;
@@ -2238,10 +2240,9 @@ acquire_grant_for_copy(
active_entry_release(act);
grant_read_unlock(rgt);
- rc = acquire_grant_for_copy(td, trans_gref, rd->domain_id,
- readonly, &grant_frame, page,
- &trans_page_off, &trans_length,
- false);
+ rc = acquire_grant_for_copy(
+ td, trans_gref, rd->domain_id, readonly, page, &trans_page_off,
+ &trans_length, false);
grant_read_lock(rgt);
act = active_entry_acquire(rgt, gref);
@@ -2255,6 +2256,8 @@ acquire_grant_for_copy(
return rc;
}
+ frame = page_to_mfn(*page);
+
/*
* We dropped the lock, so we have to check that the grant didn't
* change, and that nobody else tried to pin/unpin it. If anything
@@ -2262,7 +2265,7 @@ acquire_grant_for_copy(
*/
if ( rgt->gt_version != 2 ||
act->pin != old_pin ||
- (old_pin && (act->domid != ldom || act->frame != grant_frame ||
+ (old_pin && (act->domid != ldom || act->frame != frame ||
act->start != trans_page_off ||
act->length != trans_length ||
act->trans_domain != td ||
@@ -2286,7 +2289,7 @@ acquire_grant_for_copy(
act->length = trans_length;
act->trans_domain = td;
act->trans_gref = trans_gref;
- act->frame = grant_frame;
+ act->frame = frame;
act_set_gfn(act, INVALID_GFN);
/*
* The actual remote remote grant may or may not be a sub-page,
@@ -2310,7 +2313,7 @@ acquire_grant_for_copy(
{
unsigned long gfn = shared_entry_v1(rgt, gref).frame;
- rc = get_paged_frame(gfn, &grant_frame, page, readonly, rd);
+ rc = get_paged_frame(gfn, &frame, page, readonly, rd);
if ( rc != GNTST_okay )
goto unlock_out_clear;
act_set_gfn(act, _gfn(gfn));
@@ -2320,7 +2323,7 @@ acquire_grant_for_copy(
}
else if ( !(sha2->hdr.flags & GTF_sub_page) )
{
- rc = get_paged_frame(sha2->full_page.frame, &grant_frame, page,
+ rc = get_paged_frame(sha2->full_page.frame, &frame, page,
readonly, rd);
if ( rc != GNTST_okay )
goto unlock_out_clear;
@@ -2331,7 +2334,7 @@ acquire_grant_for_copy(
}
else
{
- rc = get_paged_frame(sha2->sub_page.frame, &grant_frame, page,
+ rc = get_paged_frame(sha2->sub_page.frame, &frame, page,
readonly, rd);
if ( rc != GNTST_okay )
goto unlock_out_clear;
@@ -2349,7 +2352,7 @@ acquire_grant_for_copy(
act->length = trans_length;
act->trans_domain = td;
act->trans_gref = trans_gref;
- act->frame = grant_frame;
+ act->frame = frame;
}
}
else
@@ -2368,7 +2371,6 @@ acquire_grant_for_copy(
*page_off = act->start;
*length = act->length;
- *frame = act->frame;
active_entry_release(act);
grant_read_unlock(rgt);
@@ -2503,11 +2505,11 @@ static int gnttab_copy_claim_buf(const struct
gnttab_copy *op,
{
rc = acquire_grant_for_copy(buf->domain, ptr->u.ref,
current->domain->domain_id,
- buf->read_only,
- &buf->frame, &buf->page,
+ buf->read_only, &buf->page,
&buf->ptr.offset, &buf->len, true);
if ( rc != GNTST_okay )
goto out;
+ buf->frame = page_to_mfn(buf->page);
buf->ptr.u.ref = ptr->u.ref;
buf->have_grant = 1;
}
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |