[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 3/4] xen/x86: use SYMBOL when required
Use SYMBOL in cases of comparisons and subtractions of: _start, _end, __init_begin, __init_end, __2M_text_end, __2M_rodata_start, __2M_rodata_end, __2M_init_start,__2M_init_end, __2M_rwdata_start, __2M_rwdata_end, _stext, _etext, _srodata, _erodata, __end_vpci_array, __start_vpci_array, _sinittext, _einittext, _stextentry, _etextentry, __start_bug_frames, __stop_bug_frames_0, __stop_bug_frames_1, __stop_bug_frames_2,__stop_bug_frames_3, __note_gnu_build_id_start, __note_gnu_build_id_end, __start___ex_table, __stop___ex_table, __start___pre_ex_table, __stop___pre_ex_table, __lock_profile_start, __lock_profile_end, __param_start, __param_end, __setup_start, __setup_end, __initcall_start, __initcall_end, __presmp_initcall_end, __trampoline_rel_start, __trampoline_rel_stop, __trampoline_seg_start, __trampoline_seg_stop __alt_instructions, __alt_instructions_end, __ctors_start, __ctors_end, __end_schedulers_array, __start_schedulers_array, __bss_start, __bss_end, __per_cpu_start, __per_cpu_data_end, _splatform, _eplatform, _sdevice, _edevice, _asdevice, _aedevice, __proc_info_start, __proc_info_end, _sdtb as by the C standard [1]. M3CM: Rule-18.2: Subtraction between pointers shall only be applied to pointers that address elements of the same array [1] https://wiki.sei.cmu.edu/confluence/display/c/ARR36-C.+Do+not+subtract+or+compare+two+pointers+that+do+not+refer+to+the+same+array QAVerify: 2761 Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx> CC: JBeulich@xxxxxxxx CC: andrew.cooper3@xxxxxxxxxx --- Changes in v5: - remove two spurious changes - split into three patches - remove SYMBOL() from derived variables --- xen/arch/x86/alternative.c | 2 +- xen/arch/x86/efi/efi-boot.h | 4 ++-- xen/arch/x86/percpu.c | 8 ++++---- xen/arch/x86/setup.c | 8 +++++--- xen/arch/x86/smpboot.c | 3 ++- xen/drivers/vpci/vpci.c | 2 +- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c index b8c819a..280ee28 100644 --- a/xen/arch/x86/alternative.c +++ b/xen/arch/x86/alternative.c @@ -194,7 +194,7 @@ void init_or_livepatch apply_alternatives(struct alt_instr *start, * So be careful if you want to change the scan order to any other * order. */ - for ( a = base = start; a < end; a++ ) + for ( a = base = start; (unsigned long)a < SYMBOL(end); a++ ) { uint8_t *orig = ALT_ORIG_PTR(a); uint8_t *repl = ALT_REPL_PTR(a); diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h index 5789d2c..837f5ba 100644 --- a/xen/arch/x86/efi/efi-boot.h +++ b/xen/arch/x86/efi/efi-boot.h @@ -112,11 +112,11 @@ static void __init relocate_trampoline(unsigned long phys) /* Apply relocations to trampoline. */ for ( trampoline_ptr = __trampoline_rel_start; - trampoline_ptr < __trampoline_rel_stop; + (unsigned long)trampoline_ptr < SYMBOL(__trampoline_rel_stop); ++trampoline_ptr ) *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys; for ( trampoline_ptr = __trampoline_seg_start; - trampoline_ptr < __trampoline_seg_stop; + (unsigned long)trampoline_ptr < SYMBOL(__trampoline_seg_stop); ++trampoline_ptr ) *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4; } diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index 8be4ebd..5e87e91 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -13,7 +13,7 @@ unsigned long __per_cpu_offset[NR_CPUS]; * context of PV guests. */ #define INVALID_PERCPU_AREA (0x8000000000000000L - (long)__per_cpu_start) -#define PERCPU_ORDER get_order_from_bytes(__per_cpu_data_end - __per_cpu_start) +#define PERCPU_ORDER get_order_from_bytes(SYMBOL(__per_cpu_data_end) - SYMBOL(__per_cpu_start)) void __init percpu_init_areas(void) { @@ -33,8 +33,8 @@ static int init_percpu_area(unsigned int cpu) if ( (p = alloc_xenheap_pages(PERCPU_ORDER, 0)) == NULL ) return -ENOMEM; - memset(p, 0, __per_cpu_data_end - __per_cpu_start); - __per_cpu_offset[cpu] = p - __per_cpu_start; + memset(p, 0, SYMBOL(__per_cpu_data_end) - SYMBOL(__per_cpu_start)); + __per_cpu_offset[cpu] = (unsigned long)p - SYMBOL(__per_cpu_start); return 0; } @@ -49,7 +49,7 @@ static void _free_percpu_area(struct rcu_head *head) { struct free_info *info = container_of(head, struct free_info, rcu); unsigned int cpu = info->cpu; - char *p = __per_cpu_start + __per_cpu_offset[cpu]; + char *p = (char *)(SYMBOL(__per_cpu_start) + __per_cpu_offset[cpu]); free_xenheap_pages(p, PERCPU_ORDER); __per_cpu_offset[cpu] = INVALID_PERCPU_AREA; diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 06eb483..a49b16c 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -972,7 +972,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) * respective reserve_e820_ram() invocation below. */ mod[mbi->mods_count].mod_start = virt_to_mfn(_stext); - mod[mbi->mods_count].mod_end = __2M_rwdata_end - _stext; + mod[mbi->mods_count].mod_end = SYMBOL(__2M_rwdata_end) - SYMBOL(_stext); } modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end); @@ -1067,7 +1067,8 @@ void __init noreturn __start_xen(unsigned long mbi_p) * data until after we have switched to the relocated pagetables! */ barrier(); - move_memory(e + XEN_IMG_OFFSET, XEN_IMG_OFFSET, _end - _start, 1); + move_memory(e + XEN_IMG_OFFSET, XEN_IMG_OFFSET, + SYMBOL(_end) - SYMBOL(_start), 1); /* Walk initial pagetables, relocating page directory entries. */ pl4e = __va(__pa(idle_pg_table)); @@ -1382,7 +1383,8 @@ void __init noreturn __start_xen(unsigned long mbi_p) } #endif - xen_virt_end = ((unsigned long)_end + (1UL << L2_PAGETABLE_SHIFT) - 1) & + xen_virt_end = (SYMBOL(_end) + + (1UL << L2_PAGETABLE_SHIFT) - 1) & ~((1UL << L2_PAGETABLE_SHIFT) - 1); destroy_xen_mappings(xen_virt_end, XEN_VIRT_START + BOOTSTRAP_MAP_BASE); diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 7d1226d..07e4e1d 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -811,7 +811,8 @@ static int setup_cpu_root_pgt(unsigned int cpu) const char *ptr; for ( rc = 0, ptr = _stextentry; - !rc && ptr < _etextentry; ptr += PAGE_SIZE ) + !rc && (unsigned long)ptr < SYMBOL(_etextentry); + ptr += PAGE_SIZE ) rc = clone_mapping(ptr, rpt); if ( rc ) diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c index 82607bd..bc0cca6 100644 --- a/xen/drivers/vpci/vpci.c +++ b/xen/drivers/vpci/vpci.c @@ -33,7 +33,7 @@ struct vpci_register { #ifdef __XEN__ extern vpci_register_init_t *const __start_vpci_array[]; extern vpci_register_init_t *const __end_vpci_array[]; -#define NUM_VPCI_INIT (__end_vpci_array - __start_vpci_array) +#define NUM_VPCI_INIT (SYMBOL(__end_vpci_array) - SYMBOL(__start_vpci_array)) void vpci_remove_device(struct pci_dev *pdev) { -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |