machine: Make possible_cpu_arch_ids() return const pointer
make sure that external callers won't try to modify possible_cpus and owner of possible_cpus can access it directly when it modifies it. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <1484759609-264075-5-git-send-email-imammedo@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
		
							parent
							
								
									074281d62e
								
							
						
					
					
						commit
						80e5db303d
					
				| @ -190,7 +190,7 @@ void cpu_hotplug_hw_init(MemoryRegion *as, Object *owner, | ||||
| { | ||||
|     MachineState *machine = MACHINE(qdev_get_machine()); | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(machine); | ||||
|     CPUArchIdList *id_list; | ||||
|     const CPUArchIdList *id_list; | ||||
|     int i; | ||||
| 
 | ||||
|     assert(mc->possible_cpu_arch_ids); | ||||
| @ -201,7 +201,6 @@ void cpu_hotplug_hw_init(MemoryRegion *as, Object *owner, | ||||
|         state->devs[i].cpu =  id_list->cpus[i].cpu; | ||||
|         state->devs[i].arch_id = id_list->cpus[i].arch_id; | ||||
|     } | ||||
|     g_free(id_list); | ||||
|     memory_region_init_io(&state->ctrl_reg, owner, &cpu_hotplug_ops, state, | ||||
|                           "acpi-mem-hotplug", ACPI_CPU_HOTPLUG_REG_LEN); | ||||
|     memory_region_add_subregion(as, base_addr, &state->ctrl_reg); | ||||
| @ -325,7 +324,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, | ||||
|     Aml *one = aml_int(1); | ||||
|     Aml *sb_scope = aml_scope("_SB"); | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(machine); | ||||
|     CPUArchIdList *arch_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     const CPUArchIdList *arch_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     char *cphp_res_path = g_strdup_printf("%s." CPUHP_RES_DEVICE, res_root); | ||||
|     Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF, NULL); | ||||
|     AcpiDeviceIfClass *adevc = ACPI_DEVICE_IF_GET_CLASS(obj); | ||||
| @ -574,5 +573,4 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, | ||||
|     aml_append(table, method); | ||||
| 
 | ||||
|     g_free(cphp_res_path); | ||||
|     g_free(arch_ids); | ||||
| } | ||||
|  | ||||
| @ -128,7 +128,7 @@ void build_legacy_cpu_hotplug_aml(Aml *ctx, MachineState *machine, | ||||
|     Aml *zero = aml_int(0); | ||||
|     Aml *one = aml_int(1); | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(machine); | ||||
|     CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     const CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     PCMachineState *pcms = PC_MACHINE(machine); | ||||
| 
 | ||||
|     /*
 | ||||
| @ -329,8 +329,6 @@ void build_legacy_cpu_hotplug_aml(Aml *ctx, MachineState *machine, | ||||
|         apic_idx = apic_id + 1; | ||||
|     } | ||||
|     aml_append(sb_scope, aml_name_decl(CPU_ON_BITMAP, pkg)); | ||||
|     g_free(apic_ids); | ||||
| 
 | ||||
|     aml_append(ctx, sb_scope); | ||||
| 
 | ||||
|     method = aml_method("\\_GPE._E02", 0, AML_NOTSERIALIZED); | ||||
|  | ||||
| @ -332,7 +332,7 @@ build_fadt(GArray *table_data, BIOSLinker *linker, AcpiPmInfo *pm, | ||||
| } | ||||
| 
 | ||||
| void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, | ||||
|                        CPUArchIdList *apic_ids, GArray *entry) | ||||
|                        const CPUArchIdList *apic_ids, GArray *entry) | ||||
| { | ||||
|     uint32_t apic_id = apic_ids->cpus[uid].arch_id; | ||||
| 
 | ||||
| @ -373,7 +373,7 @@ static void | ||||
| build_madt(GArray *table_data, BIOSLinker *linker, PCMachineState *pcms) | ||||
| { | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(pcms); | ||||
|     CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(MACHINE(pcms)); | ||||
|     const CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(MACHINE(pcms)); | ||||
|     int madt_start = table_data->len; | ||||
|     AcpiDeviceIfClass *adevc = ACPI_DEVICE_IF_GET_CLASS(pcms->acpi_dev); | ||||
|     AcpiDeviceIf *adev = ACPI_DEVICE_IF(pcms->acpi_dev); | ||||
| @ -394,7 +394,6 @@ build_madt(GArray *table_data, BIOSLinker *linker, PCMachineState *pcms) | ||||
|             x2apic_mode = true; | ||||
|         } | ||||
|     } | ||||
|     g_free(apic_ids); | ||||
| 
 | ||||
|     io_apic = acpi_data_push(table_data, sizeof *io_apic); | ||||
|     io_apic->type = ACPI_APIC_IO; | ||||
| @ -2294,7 +2293,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, MachineState *machine) | ||||
|     int srat_start, numa_start, slots; | ||||
|     uint64_t mem_len, mem_base, next_base; | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(machine); | ||||
|     CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     const CPUArchIdList *apic_ids = mc->possible_cpu_arch_ids(machine); | ||||
|     PCMachineState *pcms = PC_MACHINE(machine); | ||||
|     ram_addr_t hotplugabble_address_space_size = | ||||
|         object_property_get_int(OBJECT(pcms), PC_MACHINE_MEMHP_REGION_SIZE, | ||||
| @ -2393,7 +2392,6 @@ build_srat(GArray *table_data, BIOSLinker *linker, MachineState *machine) | ||||
|                  (void *)(table_data->data + srat_start), | ||||
|                  "SRAT", | ||||
|                  table_data->len - srat_start, 1, NULL, NULL); | ||||
|     g_free(apic_ids); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
|  | ||||
							
								
								
									
										10
									
								
								hw/i386/pc.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								hw/i386/pc.c
									
									
									
									
									
								
							| @ -2240,15 +2240,11 @@ static unsigned pc_cpu_index_to_socket_id(unsigned cpu_index) | ||||
|     return topo.pkg_id; | ||||
| } | ||||
| 
 | ||||
| static CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *machine) | ||||
| static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *machine) | ||||
| { | ||||
|     PCMachineState *pcms = PC_MACHINE(machine); | ||||
|     int len = sizeof(CPUArchIdList) + | ||||
|               sizeof(CPUArchId) * (pcms->possible_cpus->len); | ||||
|     CPUArchIdList *list = g_malloc(len); | ||||
| 
 | ||||
|     memcpy(list, pcms->possible_cpus, len); | ||||
|     return list; | ||||
|     assert(pcms->possible_cpus); | ||||
|     return pcms->possible_cpus; | ||||
| } | ||||
| 
 | ||||
| static HotpluggableCPUList *pc_query_hotpluggable_cpus(MachineState *machine) | ||||
|  | ||||
| @ -57,6 +57,6 @@ typedef struct AcpiDeviceIfClass { | ||||
|     void (*ospm_status)(AcpiDeviceIf *adev, ACPIOSTInfoList ***list); | ||||
|     void (*send_event)(AcpiDeviceIf *adev, AcpiEventStatusBits ev); | ||||
|     void (*madt_cpu)(AcpiDeviceIf *adev, int uid, | ||||
|                      CPUArchIdList *apic_ids, GArray *entry); | ||||
|                      const CPUArchIdList *apic_ids, GArray *entry); | ||||
| } AcpiDeviceIfClass; | ||||
| #endif | ||||
|  | ||||
| @ -135,7 +135,7 @@ struct MachineClass { | ||||
|     HotplugHandler *(*get_hotplug_handler)(MachineState *machine, | ||||
|                                            DeviceState *dev); | ||||
|     unsigned (*cpu_index_to_socket_id)(unsigned cpu_index); | ||||
|     CPUArchIdList *(*possible_cpu_arch_ids)(MachineState *machine); | ||||
|     const CPUArchIdList *(*possible_cpu_arch_ids)(MachineState *machine); | ||||
|     HotpluggableCPUList *(*query_hotpluggable_cpus)(MachineState *machine); | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -361,7 +361,7 @@ uint16_t pvpanic_port(void); | ||||
| 
 | ||||
| /* acpi-build.c */ | ||||
| void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, | ||||
|                        CPUArchIdList *apic_ids, GArray *entry); | ||||
|                        const CPUArchIdList *apic_ids, GArray *entry); | ||||
| 
 | ||||
| /* e820 types */ | ||||
| #define E820_RAM        1 | ||||
|  | ||||
| @ -2,6 +2,6 @@ | ||||
| #include "hw/i386/pc.h" | ||||
| 
 | ||||
| void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid, | ||||
|                        CPUArchIdList *apic_ids, GArray *entry) | ||||
|                        const CPUArchIdList *apic_ids, GArray *entry) | ||||
| { | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Igor Mammedov
						Igor Mammedov