[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 1/2] domain: fix misaligned unmap address in {,un}map_guest_area()


  • To: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • From: Henry Wang <Henry.Wang@xxxxxxx>
  • Date: Fri, 6 Oct 2023 14:02:41 +0000
  • Accept-language: zh-CN, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=T+sg5o01tWqh+EKHLQM5Cc/Te0Kem7cdrOS1Bjlt9q8=; b=lsingF3FOQZBn3SXbgHCdY3akPWN1K4Qmwig7OIuydMA3XJJtMKQ7/zAGlAsUzlieCeph9QiMuNyiqdCKKHbFCLO6by+vwHpznbpZKK4tAx6cWlXM95JklTYAXZgAEWWejh+2GBzKn2TAjZ8sasu4vX5yKm7EgHt5BPnIql1nF6aCdDG3Qw93YMemu3kd4k/f6jsoFhLoNUAqJwy+7QGhBLG6VwF4roVIDmuh1Ns8eqNCdXNGBumY8KevR+pE3HynYfrivMDBS3L93wEsmgf/pSiI1U7yUyysz6WPGGgAgZ3CAnbnjOMRmkArZjoG1eE2pfeFPrTVE2NCKqUg+lUsw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kuu55Whe3VdOYxMbzKCejwxGudJuYIldOrw07l5hY8yuEUySOkBIG4kVjlgJ1Dz7BA5YOOga3DbZJd+fNx5EhJ2vf6Xhm0r9jZLj3eWR/20YwfGLXYS1c4+CmzSp9fOdFHFMtZq5VTNm3XkPvmPyiANEO6vEOoN7sDi3lAUAaG1r4bbMYW9CrBi+IJV5L5R7A73i7F1eHWTQICEyVy4TvhK6NxUvK2o4a6z03z+fVCisM02UL7TjA+TklPe5M54DBu+zqaYRKwQ6K+IEM7aSjD7hYXN5F5vOP4IGVqS/6SsvULRvJUOe4zePVTG39DLdVMkOcv1pOxvpmYHxwkEtpA==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Fri, 06 Oct 2023 14:03:00 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHZ+FVSiuHBkWxcn0ecPd7Xf/rLHLA8ytIA
  • Thread-topic: [PATCH v2 1/2] domain: fix misaligned unmap address in {,un}map_guest_area()

Hi Roger,

> On Oct 6, 2023, at 21:00, Roger Pau Monne <roger.pau@xxxxxxxxxx> wrote:
> 
> unmap_domain_page_global() expects the provided address to be page aligned, or
> else some of the called functions will trigger assertions, like
> modify_xen_mappings() on x86 or destroy_xen_mappings() on Arm.
> 
> The following assert has been reported by osstest arm 32bit tests:
> 
> (XEN) Assertion 'IS_ALIGNED(s, PAGE_SIZE)' failed at arch/arm/mm.c:1243
> (XEN) ----[ Xen-4.18-rc  arm32  debug=y  Not tainted ]----
> (XEN) CPU:    0
> (XEN) PC:     00271a38 destroy_xen_mappings+0x50/0x5c
> [...]
> (XEN) Xen call trace:
> (XEN)    [<00271a38>] destroy_xen_mappings+0x50/0x5c (PC)
> (XEN)    [<00235aa8>] vunmap+0x30/0x1a0 (LR)
> (XEN)    [<0026ad88>] unmap_domain_page_global+0x10/0x20
> (XEN)    [<00208e38>] unmap_guest_area+0x90/0xec
> (XEN)    [<00208f98>] domain_kill+0x104/0x180
> (XEN)    [<00239e3c>] do_domctl+0x8ac/0x14fc
> (XEN)    [<0027ae34>] do_trap_guest_sync+0x570/0x66c
> (XEN)    [<002019f0>] arch/arm/arm32/entry.o#return_from_trap+0/0x4
> 
> Fixes: eadc288cbb0d ('domain: map/unmap GADDR based shared guest areas')
> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>

Release-acked-by: Henry Wang <Henry.Wang@xxxxxxx>

Kind regards,
Henry

> ---
> Changes since v1:
> - Also page-align the address in map_guest_area().
> ---
> xen/common/domain.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index b8281d7cff9d..1468638ade8b 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -1601,7 +1601,7 @@ int map_guest_area(struct vcpu *v, paddr_t gaddr, 
> unsigned int size,
>  unmap:
>     if ( pg )
>     {
> -        unmap_domain_page_global(map);
> +        unmap_domain_page_global((void *)((unsigned long)map & PAGE_MASK));
>         put_page_and_type(pg);
>     }
> 
> @@ -1634,7 +1634,7 @@ void unmap_guest_area(struct vcpu *v, struct guest_area 
> *area)
> 
>     if ( pg )
>     {
> -        unmap_domain_page_global(map);
> +        unmap_domain_page_global((void *)((unsigned long)map & PAGE_MASK));
>         put_page_and_type(pg);
>     }
> }
> -- 
> 2.42.0
> 


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.