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/device_tree.h>
|
||||||
#include <xen/libfdt/libfdt.h>
|
#include <xen/libfdt/libfdt.h>
|
||||||
|
#include <xen/unaligned.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/smp.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;
|
*addr_cells = 2;
|
||||||
}
|
}
|
||||||
else
|
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);
|
prop = fdt_get_property(fdt, node, "#size-cells", &len);
|
||||||
if ( !prop )
|
if ( !prop )
|
||||||
@@ -96,7 +97,7 @@ static int __init setup_chosen_node(void *fdt, int *addr_cells, int *size_cells)
|
|||||||
*size_cells = 2;
|
*size_cells = 2;
|
||||||
}
|
}
|
||||||
else
|
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
|
* 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;
|
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);
|
prop = fdt_get_property(fdt_efi, domain_node, "#size-cells", &len);
|
||||||
if ( !prop )
|
if ( !prop )
|
||||||
@@ -833,7 +834,7 @@ static int __init handle_dom0less_domain_node(const EFI_LOADED_IMAGE *loaded_ima
|
|||||||
return ERROR_MISSING_DT_PROPERTY;
|
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 */
|
/* Check for nodes compatible with multiboot,module inside this node */
|
||||||
for ( module_node = fdt_first_subnode(fdt_efi, domain_node);
|
for ( module_node = fdt_first_subnode(fdt_efi, domain_node);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include <xen/lib.h>
|
#include <xen/lib.h>
|
||||||
#include <xen/libfdt/libfdt-xen.h>
|
#include <xen/libfdt/libfdt-xen.h>
|
||||||
#include <xen/sort.h>
|
#include <xen/sort.h>
|
||||||
|
#include <xen/unaligned.h>
|
||||||
#include <xen/static-shmem.h>
|
#include <xen/static-shmem.h>
|
||||||
#include <xsm/xsm.h>
|
#include <xsm/xsm.h>
|
||||||
#include <asm/setup.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) )
|
if ( !prop || prop->len < sizeof(u32) )
|
||||||
return dflt;
|
return dflt;
|
||||||
|
|
||||||
return fdt32_to_cpu(*(uint32_t*)prop->data);
|
return fdt32_to_cpu(get_unaligned_t(uint32_t, prop->data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||