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

Re: [PATCH] xen/arm: mpu: Fix ioremap_attr region size and return value


  • To: Michal Orzel <michal.orzel@xxxxxxx>
  • From: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • Date: Thu, 2 Apr 2026 08:17:46 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
  • 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=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=; b=wPoFiywIlCZN3lM3KbrncB4DtiHdcnteYpryTIpEZHQ9UH9SuuwmhPuRL/07wgRYniCf37sU+uQK3dzBsc5RwdcPqfzDxCGNmKDWcABxPhuv8saZgWr0pWk11b+bZs8FJ/cv9jFNjwNFVG/gPxPtbyQm7+B9SXYBf3pkhvKd31NAOtDrPt8LM7uhlR9aCvfoF1tkKaTFmCv06kQzEsDJr8KpAyLZHphnZUrNu6XQEOH74xeHCqCbAT28nFrkYBuC9Japnh0mY0ZZ37BREF1NPDDYZHE9q9ZAJLQ2ldtTUVUeSg4YaZzA2r25tbLtqHqrI07Si+4QElpkhgYvVyX7Mw==
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=e2XYJZR51dIbykVyt2stnsLHXYp1DL1SGjAbkVzeZsY=; b=KRirKXq6vzD+seJI+rz07AobJZ81zcUa9/Zu5MEtcneg4dv++JYIx/qDf+WA98MVDmUxzUc2PvyMxCxvyFzO3YYvHAkdNXCDmcKg30ql5eV0Pt9lGst+E2Dr0J3iXgdDc0LzahejJh+que7MTK5q7Ej+J4ZpTb+/Y6mwqGt8FV00cfGi1hoX0nEzkqEddH+A11nyHZhen+snoziSi9h9XSbk5E50Kbf+dw0MJ18PAEiHr6MhnVX4fn1of0i4AUNXyAiP9EQIWmDHEWtD9H8bMe+aH2mFr//dOf0RmdLhj5oL7iEjBuQfpBWKmN1yN+Mzs8DG1PbUc6mdvV2qYas8rw==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=DxHAbccolIbSmecPqJLVZkr4YaEA/186gbcI3+tj58R4Ka6Z61ucA88s4jJB+AhgbxGSihvzeEuXIEXS2IawhwG/PyQwgLlfKysuZvjWqQRDSCAgphrJea+5IlVaDjhL10066Ovw+7eSkTvBy8lWHbNxuyBvZjkOdzbLlz28onlravkqadrBih7CGdyeXU0jTe5TpuiQYgZ5XvJ+MZe3nvNQ9WQjTLHfJfEWLs+ejGfPGiZG0DzFYO8w8FZfpf3YfTWM3P7pCptJXU1gbBu4xQXV3EAdN7hbyn2zFXSrMPlrIDcIrbc6NRIuq3/b5dejVv3MPQ+ztQbO9sOSTB9kOg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l09mxAgwZR6pHKyc2qhmJuPyoN3FRjpMSUtxVbYMbD1M2CWbxYs7yY4Z88Ci6bEzaQN3ratCOY6hlJbWxpYj97bf6guTycvy/YK9PJlsJr1JFi00LXeNHW3SLb5VOzfKNlww+j/WKKGc8kgWf4IzJ4tS6xQhw7pEb7HDvSVmcHCIAAFevViWspJkjhbupzvX7pPW82vibTsLJPt/tDhdmy2BAepUT1F8Rudeh9e7hLrDUK22Pnbk7kxCmrSTDiI6k11s+4H1m1ByWX/y0Pmk3tumfaxdyoUm+XhXKvsedjEcRwmpBMMDYZsRqJjSy+GbJqZw/feNkZyTkoObQ/P0UQ==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"; dkim=pass header.s=selector1 header.d=arm.com header.i="@arm.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 02 Apr 2026 08:19:07 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Thread-index: AQHcwnZX7LJ68/q3sE+uKvflFE4pcLXLbU4A
  • Thread-topic: [PATCH] xen/arm: mpu: Fix ioremap_attr region size and return value

Hi Michal,

> On 2 Apr 2026, at 08:56, Michal Orzel <michal.orzel@xxxxxxx> wrote:
> 
> ioremap_attr() computes end_pg as round_pgup(start_pg + len), but
> start_pg has already had the sub-page offset stripped by round_pgdown().
> When start is not page-aligned, the sub-page offset is lost and the
> resulting MPU protection region can be one page too small, leaving the
> tail of the requested range covered by something else.
> 
> Additionally, the function returns maddr_to_virt(start_pg) — the
> page-aligned base dropping the sub-page offset that callers (e.g. ioremap
> of an unaligned MMIO base) depend on to reach the correct register block.
> 
> Fix end_pg to use the original start so the sub-page tail is included
> in the rounding, and return the original start address to preserve the
> offset, matching the behaviour of other ioremap implementations.
> 
> Fixes: efeec4c70798 ("arm/mpu: Implement ioremap_attr for MPU")
> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
> ---
> xen/arch/arm/mpu/mm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/arm/mpu/mm.c b/xen/arch/arm/mpu/mm.c
> index 6b3b0b06e95d..aff88bd3a9c1 100644
> --- a/xen/arch/arm/mpu/mm.c
> +++ b/xen/arch/arm/mpu/mm.c
> @@ -596,13 +596,13 @@ void free_init_memory(void)
> void __iomem *ioremap_attr(paddr_t start, size_t len, unsigned int flags)
> {
>     paddr_t start_pg = round_pgdown(start);
> -    paddr_t end_pg = round_pgup(start_pg + len);
> +    paddr_t end_pg = round_pgup(start + len);
> 
>     if ( xen_mpumap_update(start_pg, end_pg, flags) )
>         return NULL;
> 
>     /* Mapped or already mapped */
> -    return maddr_to_virt(start_pg);
> +    return maddr_to_virt(start);
> }
> 
> /*
> -- 
> 2.43.0
> 
> 

good catch!

Reviewed-by: Luca Fancellu <luca.fancellu@xxxxxxx>

Cheers,
Luca


 


Rackspace

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