[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: Fix RCU locking in XENMEM_add_to_physmap.
# HG changeset patch # User Keir Fraser <keir@xxxxxxx> # Date 1321740831 0 # Node ID 335e8273a3f34a5e2972643a028f83684609f1c1 # Parent fe3e9d0c123cc3184b6e29531e326927a0e4938d x86: Fix RCU locking in XENMEM_add_to_physmap. Signed-off-by: Keir Fraser <keir@xxxxxxx> --- diff -r fe3e9d0c123c -r 335e8273a3f3 xen/arch/x86/mm.c --- a/xen/arch/x86/mm.c Fri Nov 18 13:43:26 2011 +0000 +++ b/xen/arch/x86/mm.c Sat Nov 19 22:13:51 2011 +0000 @@ -4677,8 +4677,9 @@ return 0; } -static int xenmem_add_to_physmap_once(struct domain *d, - const struct xen_add_to_physmap *xatp) +static int xenmem_add_to_physmap_once( + struct domain *d, + const struct xen_add_to_physmap *xatp) { struct page_info *page = NULL; unsigned long gfn = 0; /* gcc ... */ @@ -4728,7 +4729,6 @@ if ( p2m_is_shared(p2mt) ) { put_gfn(d, gfn); - rcu_unlock_domain(d); return -ENOMEM; } if ( !get_page_from_pagenr(idx, d) ) @@ -4748,7 +4748,6 @@ if ( xatp->space == XENMAPSPACE_gmfn || xatp->space == XENMAPSPACE_gmfn_range ) put_gfn(d, gfn); - rcu_unlock_domain(d); return -EINVAL; } @@ -4786,8 +4785,6 @@ put_gfn(d, gfn); domain_unlock(d); - rcu_unlock_domain(d); - return rc; } @@ -4864,11 +4861,8 @@ if ( xatp.space == XENMAPSPACE_gmfn_range ) { - if ( rc ) - { - if ( copy_to_guest(arg, &xatp, 1) ) - return -EFAULT; - } + if ( rc && copy_to_guest(arg, &xatp, 1) ) + rc = -EFAULT; if ( rc == -EAGAIN ) rc = hypercall_create_continuation( _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |