mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm: address violations of Rule 11.3
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@bugseng.com>
Signed-off-by: Victor Lira <victorm.lira@amd.com>
Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
This commit is contained in:
1 parent
97717311a3
commit
62b4701646
2 files changed
+7
-5
No files matched your search
@@ -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);
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <xen/lib.h>
|
||||
#include <xen/libfdt/libfdt-xen.h>
|
||||
#include <xen/sort.h>
|
||||
#include <xen/unaligned.h>
|
||||
#include <xen/static-shmem.h>
|
||||
#include <xsm/xsm.h>
|
||||
#include <asm/setup.h>
|
||||
@@ -211,7 +212,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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||