On 20/11/14 10:11, Jan Beulich wrote:
> MMU_MACHPHYS_UPDATE, not manipulating page tables, shouldn't ignore
> a bad page table domain being specified.
>
> Also pt_owner can't be NULL when reaching the "out" label, so the
> respective check can be dropped.

Yes it can.

Failing

    if ( (pg_owner = get_pg_owner((uint16_t)foreigndom)) == NULL )
    {
        rc = -ESRCH;
        goto out;
    }

around line 3462 will cause pt_owner to be NULL at the out label.

~Andrew

>
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
> Acked-by: Tim Deegan <t...@xen.org>
>
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -3618,6 +3618,11 @@ long do_mmu_update(
>          break;
>  
>          case MMU_MACHPHYS_UPDATE:
> +            if ( unlikely(d != pt_owner) )
> +            {
> +                rc = -EPERM;
> +                break;
> +            }
>  
>              mfn = req.ptr >> PAGE_SHIFT;
>              gpfn = req.val;
> @@ -3694,7 +3699,7 @@ long do_mmu_update(
>      perfc_add(num_page_updates, i);
>  
>   out:
> -    if ( pt_owner && (pt_owner != d) )
> +    if ( pt_owner != d )
>          rcu_unlock_domain(pt_owner);
>  
>      /* Add incremental work we have done to the @done output parameter. */
>
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to