[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] common/gnttab: simplify gnttab_copy_lock_domain()
commit b66e8d119cb8d8558e1ac8c61e3e2c503038cc80 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Jun 20 10:40:56 2017 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Tue Aug 15 15:08:58 2017 +0100 common/gnttab: simplify gnttab_copy_lock_domain() Remove the opencoded rcu_lock_domain_by_any_id(). Drop the PIN_FAIL()s and return GNTST_* values directly. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/common/grant_table.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 49a18e8..56082d8 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -2361,28 +2361,21 @@ struct gnttab_copy_buf { bool_t have_type; }; -static int gnttab_copy_lock_domain(domid_t domid, unsigned int gref_flag, +static int gnttab_copy_lock_domain(domid_t domid, bool is_gref, struct gnttab_copy_buf *buf) { - int rc; + /* Only DOMID_SELF may reference via frame. */ + if ( domid != DOMID_SELF && !is_gref ) + return GNTST_permission_denied; - if ( domid != DOMID_SELF && !gref_flag ) - PIN_FAIL(out, GNTST_permission_denied, - "only allow copy-by-mfn for DOMID_SELF.\n"); + buf->domain = rcu_lock_domain_by_any_id(domid); - if ( domid == DOMID_SELF ) - buf->domain = rcu_lock_current_domain(); - else - { - buf->domain = rcu_lock_domain_by_id(domid); - if ( buf->domain == NULL ) - PIN_FAIL(out, GNTST_bad_domain, "couldn't find %d\n", domid); - } + if ( !buf->domain ) + return GNTST_bad_domain; buf->ptr.domid = domid; - rc = GNTST_okay; - out: - return rc; + + return GNTST_okay; } static void gnttab_copy_unlock_domains(struct gnttab_copy_buf *src, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |