diff options
Diffstat (limited to 'arch/ia64')
| -rw-r--r-- | arch/ia64/kernel/acpi-ext.c | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/acpi.c | 12 | ||||
| -rw-r--r-- | arch/ia64/kernel/mca.c | 10 | ||||
| -rw-r--r-- | arch/ia64/kernel/smpboot.c | 2 | ||||
| -rw-r--r-- | arch/ia64/mm/discontig.c | 16 | 
5 files changed, 26 insertions, 16 deletions
| diff --git a/arch/ia64/kernel/acpi-ext.c b/arch/ia64/kernel/acpi-ext.c index 2a1ef742e223..b7515bc808a8 100644 --- a/arch/ia64/kernel/acpi-ext.c +++ b/arch/ia64/kernel/acpi-ext.c @@ -50,7 +50,7 @@ static acpi_status hp_ccsr_locate(acpi_handle obj, u64 *base, u64 *length)  	memcpy(length, vendor->byte_data + 8, sizeof(*length));    exit: -	acpi_os_free(buffer.pointer); +	kfree(buffer.pointer);  	return status;  } diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index ccdef199d915..99761b81db44 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c @@ -856,7 +856,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)  	obj = buffer.pointer;  	if (obj->type != ACPI_TYPE_BUFFER ||  	    obj->buffer.length < sizeof(*lsapic)) { -		acpi_os_free(buffer.pointer); +		kfree(buffer.pointer);  		return -EINVAL;  	} @@ -864,13 +864,13 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)  	if ((lsapic->header.type != ACPI_MADT_LSAPIC) ||  	    (!lsapic->flags.enabled)) { -		acpi_os_free(buffer.pointer); +		kfree(buffer.pointer);  		return -EINVAL;  	}  	physid = ((lsapic->id << 8) | (lsapic->eid)); -	acpi_os_free(buffer.pointer); +	kfree(buffer.pointer);  	buffer.length = ACPI_ALLOCATE_BUFFER;  	buffer.pointer = NULL; @@ -934,20 +934,20 @@ acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret)  	obj = buffer.pointer;  	if (obj->type != ACPI_TYPE_BUFFER ||  	    obj->buffer.length < sizeof(*iosapic)) { -		acpi_os_free(buffer.pointer); +		kfree(buffer.pointer);  		return AE_OK;  	}  	iosapic = (struct acpi_table_iosapic *)obj->buffer.pointer;  	if (iosapic->header.type != ACPI_MADT_IOSAPIC) { -		acpi_os_free(buffer.pointer); +		kfree(buffer.pointer);  		return AE_OK;  	}  	gsi_base = iosapic->global_irq_base; -	acpi_os_free(buffer.pointer); +	kfree(buffer.pointer);  	/*  	 * OK, it's an IOSAPIC MADT entry, look for a _PXM value to tell diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index eb8e8dc5ac8e..2fbe4536fe18 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c @@ -678,7 +678,7 @@ copy_reg(const u64 *fr, u64 fnat, u64 *tr, u64 *tnat)   */  static void -ia64_mca_modify_comm(const task_t *previous_current) +ia64_mca_modify_comm(const struct task_struct *previous_current)  {  	char *p, comm[sizeof(current->comm)];  	if (previous_current->pid) @@ -709,7 +709,7 @@ ia64_mca_modify_comm(const task_t *previous_current)   * that we can do backtrace on the MCA/INIT handler code itself.   */ -static task_t * +static struct task_struct *  ia64_mca_modify_original_stack(struct pt_regs *regs,  		const struct switch_stack *sw,  		struct ia64_sal_os_state *sos, @@ -719,7 +719,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,  	ia64_va va;  	extern char ia64_leave_kernel[];	/* Need asm address, not function descriptor */  	const pal_min_state_area_t *ms = sos->pal_min_state; -	task_t *previous_current; +	struct task_struct *previous_current;  	struct pt_regs *old_regs;  	struct switch_stack *old_sw;  	unsigned size = sizeof(struct pt_regs) + @@ -1023,7 +1023,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,  	pal_processor_state_info_t *psp = (pal_processor_state_info_t *)  		&sos->proc_state_param;  	int recover, cpu = smp_processor_id(); -	task_t *previous_current; +	struct task_struct *previous_current;  	struct ia64_mca_notify_die nd =  		{ .sos = sos, .monarch_cpu = &monarch_cpu }; @@ -1352,7 +1352,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,  {  	static atomic_t slaves;  	static atomic_t monarchs; -	task_t *previous_current; +	struct task_struct *previous_current;  	int cpu = smp_processor_id();  	struct ia64_mca_notify_die nd =  		{ .sos = sos, .monarch_cpu = &monarch_cpu }; diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index e1960979be29..6203ed4ec8cf 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c @@ -124,7 +124,7 @@ extern void __devinit calibrate_delay (void);  extern void start_ap (void);  extern unsigned long ia64_iobase; -task_t *task_for_booting_cpu; +struct task_struct *task_for_booting_cpu;  /*   * State for each CPU diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 525b082eb661..99bd9e30db96 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c @@ -313,9 +313,19 @@ static void __meminit scatter_node_data(void)  	pg_data_t **dst;  	int node; -	for_each_online_node(node) { -		dst = LOCAL_DATA_ADDR(pgdat_list[node])->pg_data_ptrs; -		memcpy(dst, pgdat_list, sizeof(pgdat_list)); +	/* +	 * for_each_online_node() can't be used at here. +	 * node_online_map is not set for hot-added nodes at this time, +	 * because we are halfway through initialization of the new node's +	 * structures.  If for_each_online_node() is used, a new node's +	 * pg_data_ptrs will be not initialized. Insted of using it, +	 * pgdat_list[] is checked. +	 */ +	for_each_node(node) { +		if (pgdat_list[node]) { +			dst = LOCAL_DATA_ADDR(pgdat_list[node])->pg_data_ptrs; +			memcpy(dst, pgdat_list, sizeof(pgdat_list)); +		}  	}  } | 
