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

[PATCH 1/2] xen/arm: address violations of Rule 11.3


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: <victorm.lira@xxxxxxx>
  • Date: Mon, 23 Jun 2025 17:20:14 -0700
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • 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=bSJwW2j+84BVU86M+ey7G1OUCwpFZObGFbhbZ90payg=; b=xlxNEGllzfXi+o22IWVSEOk3dMHmKyKAXH+cBJVKXDOFlGCcQS34aYf48dxFJwsSSIgjDTqZfGcsRG/w73vRazerP+d28gzkMUMM+TKGnDaB5T5UY6MqDwaudZxdb6pBLaX5DBliHMt332quXRhUj40GxC4RGW19gBYVUqwElu/Lm3dLV7eyQZSWezzKBFgKwypy9fCOjgHSqDFZmt8QsYNjlneM+M98oQGiGBXqSlwBMyueCAXJV4vKH8AEcdzxFZRdNGKomeWzxQBa3FAZfGmkfKwoOLDUcFaIkID3CSZiV4GsOqVDeOixoXsXq6ZF0VMVNB2SU7V3QSyDrOWduA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zm57fYIqWU7EIN/Le5C2pjhQ1y9RCGdtyTeG/lH3xu92zIgiUMDyLeCmTlVCVU1tDobpOMU6Qy+UZWW3Fu3+/mLm8AxT7sdaCeXmFe28YsTJHnx4T3E5BVercDQfSzNM0fBYuLnu3tn9sR0bE7pFiJm1h7L+69vbaBys8tQYNK81mvg18o6tC94DGO7Pbr9mp1x+WJUns5QVS5P7FxmvpJTroYnQjVOZBXQRVTJP2ZQpCFbdoiPTnQg6y1quoy56jT+9ttJ+cPx8lXDnGFng8zn6I6yQySAH5EN9YJI1yeg4em2KXDTQTlx1FhZLa6dslk11yEt2DWp0tARMce5feQ==
  • Cc: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>, Victor Lira <victorm.lira@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, "Anthony PERARD" <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, "Stefano Stabellini" <sstabellini@xxxxxxxxxx>, Federico Serafini <federico.serafini@xxxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>
  • Delivery-date: Tue, 24 Jun 2025 00:20:45 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

From: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>

Use {get,put}_unaligned_t to ensure that reads and writes are
safe to perform even on potentially misaligned pointers.

Signed-off-by: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
Signed-off-by: Victor Lira <victorm.lira@xxxxxxx>
---
Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx>
Cc: Michal Orzel <michal.orzel@xxxxxxx>
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Julien Grall <julien@xxxxxxx>
Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
Cc: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
Cc: Federico Serafini <federico.serafini@xxxxxxxxxxx>
Cc: Bertrand Marquis <bertrand.marquis@xxxxxxx>
---
 xen/arch/arm/efi/efi-boot.h      | 9 +++++----
 xen/common/device-tree/bootfdt.c | 3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index ee80560e13..12dbb6961f 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -9,6 +9,7 @@

 #include <xen/device_tree.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/unaligned.h>
 #include <asm/setup.h>
 #include <asm/smp.h>

@@ -85,7 +86,7 @@ static int __init setup_chosen_node(void *fdt, int 
*addr_cells, int *size_cells)
         *addr_cells = 2;
     }
     else
-        *addr_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
+        *addr_cells = fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));

     prop = fdt_get_property(fdt, node, "#size-cells", &len);
     if ( !prop )
@@ -96,7 +97,7 @@ static int __init setup_chosen_node(void *fdt, int 
*addr_cells, int *size_cells)
         *size_cells = 2;
     }
     else
-        *size_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
+        *size_cells = fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));

     /*
      * Make sure ranges is empty if it exists, otherwise create empty ranges
@@ -824,7 +825,7 @@ static int __init handle_dom0less_domain_node(const 
EFI_LOADED_IMAGE *loaded_ima
         return ERROR_MISSING_DT_PROPERTY;
     }

-    addr_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
+    addr_cells = fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));

     prop = fdt_get_property(fdt_efi, domain_node, "#size-cells", &len);
     if ( !prop )
@@ -833,7 +834,7 @@ static int __init handle_dom0less_domain_node(const 
EFI_LOADED_IMAGE *loaded_ima
         return ERROR_MISSING_DT_PROPERTY;
     }

-    size_cells = fdt32_to_cpu(*((uint32_t *)prop->data));
+    size_cells = fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));

     /* Check for nodes compatible with multiboot,module inside this node */
     for ( module_node = fdt_first_subnode(fdt_efi, domain_node);
diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
index 529c91e603..9f255027ea 100644
--- a/xen/common/device-tree/bootfdt.c
+++ b/xen/common/device-tree/bootfdt.c
@@ -13,6 +13,7 @@
 #include <xen/lib.h>
 #include <xen/libfdt/libfdt-xen.h>
 #include <xen/sort.h>
+#include <xen/unaligned.h>
 #include <xsm/xsm.h>
 #include <asm/setup.h>
 #ifdef CONFIG_STATIC_SHM
@@ -213,7 +214,7 @@ u32 __init device_tree_get_u32(const void *fdt, int node,
     if ( !prop || prop->len < sizeof(u32) )
         return dflt;

-    return fdt32_to_cpu(*(uint32_t*)prop->data);
+    return fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));
 }

 /**
--
2.25.1



 


Rackspace

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