Do away with the "pod_target_out_unlock" label. In particular by folding if()-s, the logic can be expressed with less code (and no goto-s) this way.
Limit scope of "p2m", constifying it at the same time. Signed-off-by: Jan Beulich <[email protected]> --- v2: Re-base over new earlier patch. --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4789,23 +4789,17 @@ long arch_memory_op(unsigned long cmd, X if ( !is_hvm_domain(d) ) rc = -EINVAL; else if ( cmd == XENMEM_set_pod_target ) - rc = xsm_set_pod_target(XSM_PRIV, d); - else - rc = xsm_get_pod_target(XSM_PRIV, d); - - if ( rc != 0 ) - goto pod_target_out_unlock; - - if ( cmd == XENMEM_set_pod_target ) { - if ( target.target_pages > d->max_pages ) - { + rc = xsm_set_pod_target(XSM_PRIV, d); + if ( rc ) + ASSERT(rc < 0); + else if ( target.target_pages > d->max_pages ) rc = -EINVAL; - goto pod_target_out_unlock; - } - - rc = p2m_pod_set_mem_target(d, target.target_pages); + else + rc = p2m_pod_set_mem_target(d, target.target_pages); } + else + rc = xsm_get_pod_target(XSM_PRIV, d); if ( rc == -ERESTART ) { @@ -4817,13 +4811,9 @@ long arch_memory_op(unsigned long cmd, X p2m_pod_get_mem_target(d, &target); if ( __copy_to_guest(arg, &target, 1) ) - { - rc= -EFAULT; - goto pod_target_out_unlock; - } + rc = -EFAULT; } - pod_target_out_unlock: rcu_unlock_domain(d); return rc; }
