From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xen.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
Wei Liu <wei.liu2@citrix.com>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Tim Deegan <tim@xen.org>, Jan Beulich <JBeulich@suse.com>
Subject: [PATCH 1/3] gnttab: Drop the frame parameter from acquire_grant_for_copy()
Date: Thu, 24 Aug 2017 18:55:53 +0100 [thread overview]
Message-ID: <1503597355-21334-2-git-send-email-andrew.cooper3@citrix.com> (raw)
In-Reply-To: <1503597355-21334-1-git-send-email-andrew.cooper3@citrix.com>
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@citrix.com>
---
CC: George Dunlap <George.Dunlap@eu.citrix.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Tim Deegan <tim@xen.org>
CC: Wei Liu <wei.liu2@citrix.com>
---
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@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-08-24 17:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-24 17:55 [PATCH 0/3] gnttab: Further XSA-226 cleanup Andrew Cooper
2017-08-24 17:55 ` Andrew Cooper [this message]
2017-08-25 8:55 ` [PATCH 1/3] gnttab: Drop the frame parameter from acquire_grant_for_copy() Wei Liu
2017-08-25 10:13 ` Jan Beulich
2017-08-25 10:50 ` Andrew Cooper
2017-08-25 11:54 ` Jan Beulich
2017-08-24 17:55 ` [PATCH 2/3] gnttab: Drop the frame parameter from get_paged_frame() Andrew Cooper
2017-08-25 9:02 ` Wei Liu
2017-08-25 9:38 ` Andrew Cooper
2017-08-25 9:39 ` Wei Liu
2017-08-24 17:55 ` [PATCH 3/3] gnttab: Drop the frame field from struct gnttab_copy_buf Andrew Cooper
2017-08-25 9:10 ` Wei Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1503597355-21334-2-git-send-email-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=JBeulich@suse.com \
--cc=sstabellini@kernel.org \
--cc=tim@xen.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).