@@ -4788,23 +4788,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 )
{
@@ -4816,13 +4810,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;
}
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 <jbeulich@suse.com> --- v2: Re-base over new earlier patch.