xen/arm: setup: nr_banks should be unsigned int
authorJulien Grall <jgrall@amazon.com>
Tue, 24 May 2022 23:38:15 +0000 (16:38 -0700)
committerStefano Stabellini <stefano.stabellini@xilinx.com>
Tue, 24 May 2022 23:40:19 +0000 (16:40 -0700)
It is not possible to have a negative number of banks. So switch to
unsigned int.

The type change is also propagated to any users of nr_banks that were
using "int" (there are not that many).

Note that fdt_num_mem_rsv() can actually returns a negative value in
case of an error. So the return should be checked before assigning the
result to an unsigned variable.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Wei Chen <Wei.Chen@arm.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
xen/arch/arm/domain_build.c
xen/arch/arm/efi/efi-dom0.c
xen/arch/arm/include/asm/setup.h
xen/arch/arm/setup.c

index e7510dec90159b6d4528b4e9f2ec59bbff70eb62..7ddd16c26da5ed36b56fd53a253921e59230bd5d 100644 (file)
@@ -115,7 +115,8 @@ static bool __init insert_11_bank(struct domain *d,
                                   struct page_info *pg,
                                   unsigned int order)
 {
-    int res, i;
+    unsigned int i;
+    int res;
     mfn_t smfn;
     paddr_t start, size;
 
@@ -268,7 +269,7 @@ static void __init allocate_memory_11(struct domain *d,
     const unsigned int min_order = get_order_from_bytes(MB(4));
     struct page_info *pg;
     unsigned int order = get_allocation_size(kinfo->unassigned_mem);
-    int i;
+    unsigned int i;
 
     bool lowmem = true;
     unsigned int lowmem_bitsize = min(32U, arch_get_dma_bitsize());
@@ -1026,8 +1027,8 @@ static int __init make_memory_node(const struct domain *d,
                                    int addrcells, int sizecells,
                                    struct meminfo *mem)
 {
-    int res, i;
-    int reg_size = addrcells + sizecells;
+    unsigned int i;
+    int res, reg_size = addrcells + sizecells;
     int nr_cells = 0;
     /* Placeholder for memory@ + a 64-bit number + \0 */
     char buf[24];
index 494420eaa23e475bb1c4b0a563239531b20b1aa7..aae0f979112ae8cd81d0dfd9785f14fa814aa411 100644 (file)
 /* Constant to indicate "Xen" in unicode u16 format */
 static const CHAR16 xen_efi_fw_vendor[] = {0x0058, 0x0065, 0x006E, 0x0000};
 
-size_t __init estimate_efi_size(int mem_nr_banks)
+size_t __init estimate_efi_size(unsigned int mem_nr_banks)
 {
     size_t size;
     size_t est_size = sizeof(EFI_SYSTEM_TABLE);
     size_t ect_size = sizeof(EFI_CONFIGURATION_TABLE);
     size_t emd_size = sizeof(EFI_MEMORY_DESCRIPTOR);
     size_t fw_vendor_size = sizeof(xen_efi_fw_vendor);
-    int acpi_mem_nr_banks = 0;
+    unsigned int acpi_mem_nr_banks = 0;
 
     if ( !acpi_disabled )
         acpi_mem_nr_banks = bootinfo.acpi.nr_banks;
index 7a1e1d67989cf218b44cefc5ca0c5c8288c1e0ec..2bb01ecfa88fc6df730cbbf15dd4a330dd6d7645 100644 (file)
@@ -30,7 +30,7 @@ struct membank {
 };
 
 struct meminfo {
-    int nr_banks;
+    unsigned int nr_banks;
     struct membank bank[NR_MEM_BANKS];
 };
 
@@ -93,7 +93,7 @@ extern domid_t max_init_domid;
 
 void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len);
 
-size_t estimate_efi_size(int mem_nr_banks);
+size_t estimate_efi_size(unsigned int mem_nr_banks);
 
 void acpi_create_efi_system_table(struct domain *d,
                                   struct membank tbl_add[]);
@@ -109,7 +109,7 @@ void create_dom0(void);
 
 void discard_initial_modules(void);
 void fw_unreserved_regions(paddr_t s, paddr_t e,
-                           void (*cb)(paddr_t, paddr_t), int first);
+                           void (*cb)(paddr_t, paddr_t), unsigned int first);
 
 size_t boot_fdt_info(const void *fdt, paddr_t paddr);
 const char *boot_fdt_cmdline(const void *fdt);
index d5d0792ed48a9923b3a1d6ef0d6440b2e84f9993..ea1f5ee3d35a4aa553bb6b518f6f8d935b691614 100644 (file)
@@ -201,9 +201,17 @@ static void __init processor_id(void)
 
 static void __init dt_unreserved_regions(paddr_t s, paddr_t e,
                                          void (*cb)(paddr_t, paddr_t),
-                                         int first)
+                                         unsigned int first)
 {
-    int i, nr = fdt_num_mem_rsv(device_tree_flattened);
+    unsigned int i, nr;
+    int rc;
+
+    rc = fdt_num_mem_rsv(device_tree_flattened);
+    if ( rc < 0 )
+        panic("Unable to retrieve the number of reserved regions (rc=%d)\n",
+              rc);
+
+    nr = rc;
 
     for ( i = first; i < nr ; i++ )
     {
@@ -249,7 +257,8 @@ static void __init dt_unreserved_regions(paddr_t s, paddr_t e,
 }
 
 void __init fw_unreserved_regions(paddr_t s, paddr_t e,
-                                  void (*cb)(paddr_t, paddr_t), int first)
+                                  void (*cb)(paddr_t, paddr_t),
+                                  unsigned int first)
 {
     if ( acpi_disabled )
         dt_unreserved_regions(s, e, cb, first);
@@ -643,7 +652,7 @@ static void __init setup_mm(void)
     paddr_t s, e;
     unsigned long ram_pages;
     unsigned long heap_pages, xenheap_pages, domheap_pages;
-    int i;
+    unsigned int i;
     const uint32_t ctr = READ_CP32(CTR);
 
     if ( !bootinfo.mem.nr_banks )