diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 16:56:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 16:56:35 -0400 |
commit | a57d985e378ca69f430b85852e4187db3698a89e (patch) | |
tree | 01fbc23313959d20fcd4e7385ef5a056b47c1828 | |
parent | cdeb9b014331af4282be522824e36f3aa33f0671 (diff) | |
parent | 39c9a4ab2b91bff26801c86e423ef07fb705b3c0 (diff) |
Merge tag 'please-pull-ia64-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux
Pull ia64 update from Tony Luck:
"Usual mish-mash of ia64 fixes for next merge window"
* tag 'please-pull-ia64-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
[IA64] xen: Fix return value check in xencomm_vtop()
[IA64] Must enable interrupts in do_notify_resume_user before calling tracehook_notify_resume()
[IA64] kexec: Move the dereference below the NULL test
[IA64] Fix a node distance bug
-rw-r--r-- | arch/ia64/include/asm/numa.h | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/machine_kexec.c | 3 | ||||
-rw-r--r-- | arch/ia64/kernel/process.c | 4 | ||||
-rw-r--r-- | arch/ia64/xen/xencomm.c | 3 |
4 files changed, 7 insertions, 5 deletions
diff --git a/arch/ia64/include/asm/numa.h b/arch/ia64/include/asm/numa.h index 6a8a27cfae3e..2e27ef175652 100644 --- a/arch/ia64/include/asm/numa.h +++ b/arch/ia64/include/asm/numa.h | |||
@@ -59,7 +59,7 @@ extern struct node_cpuid_s node_cpuid[NR_CPUS]; | |||
59 | */ | 59 | */ |
60 | 60 | ||
61 | extern u8 numa_slit[MAX_NUMNODES * MAX_NUMNODES]; | 61 | extern u8 numa_slit[MAX_NUMNODES * MAX_NUMNODES]; |
62 | #define node_distance(from,to) (numa_slit[(from) * num_online_nodes() + (to)]) | 62 | #define node_distance(from,to) (numa_slit[(from) * MAX_NUMNODES + (to)]) |
63 | 63 | ||
64 | extern int paddr_to_nid(unsigned long paddr); | 64 | extern int paddr_to_nid(unsigned long paddr); |
65 | 65 | ||
diff --git a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c index 070e8effa175..5151a649c96b 100644 --- a/arch/ia64/kernel/machine_kexec.c +++ b/arch/ia64/kernel/machine_kexec.c | |||
@@ -85,12 +85,13 @@ static void ia64_machine_kexec(struct unw_frame_info *info, void *arg) | |||
85 | struct kimage *image = arg; | 85 | struct kimage *image = arg; |
86 | relocate_new_kernel_t rnk; | 86 | relocate_new_kernel_t rnk; |
87 | void *pal_addr = efi_get_pal_addr(); | 87 | void *pal_addr = efi_get_pal_addr(); |
88 | unsigned long code_addr = (unsigned long)page_address(image->control_code_page); | 88 | unsigned long code_addr; |
89 | int ii; | 89 | int ii; |
90 | u64 fp, gp; | 90 | u64 fp, gp; |
91 | ia64_fptr_t *init_handler = (ia64_fptr_t *)ia64_os_init_on_kdump; | 91 | ia64_fptr_t *init_handler = (ia64_fptr_t *)ia64_os_init_on_kdump; |
92 | 92 | ||
93 | BUG_ON(!image); | 93 | BUG_ON(!image); |
94 | code_addr = (unsigned long)page_address(image->control_code_page); | ||
94 | if (image->type == KEXEC_TYPE_CRASH) { | 95 | if (image->type == KEXEC_TYPE_CRASH) { |
95 | crash_save_this_cpu(); | 96 | crash_save_this_cpu(); |
96 | current->thread.ksp = (__u64)info->sw - 16; | 97 | current->thread.ksp = (__u64)info->sw - 16; |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index 3e316ec0b835..ee31fe9b310e 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -197,8 +197,8 @@ do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall) | |||
197 | ia64_do_signal(scr, in_syscall); | 197 | ia64_do_signal(scr, in_syscall); |
198 | } | 198 | } |
199 | 199 | ||
200 | if (test_thread_flag(TIF_NOTIFY_RESUME)) { | 200 | if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) { |
201 | clear_thread_flag(TIF_NOTIFY_RESUME); | 201 | local_irq_enable(); /* force interrupt enable */ |
202 | tracehook_notify_resume(&scr->pt); | 202 | tracehook_notify_resume(&scr->pt); |
203 | } | 203 | } |
204 | 204 | ||
diff --git a/arch/ia64/xen/xencomm.c b/arch/ia64/xen/xencomm.c index 1f5d7ac82e97..73d903ca2d64 100644 --- a/arch/ia64/xen/xencomm.c +++ b/arch/ia64/xen/xencomm.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
20 | #include <linux/err.h> | ||
20 | 21 | ||
21 | static unsigned long kernel_virtual_offset; | 22 | static unsigned long kernel_virtual_offset; |
22 | static int is_xencomm_initialized; | 23 | static int is_xencomm_initialized; |
@@ -98,7 +99,7 @@ xencomm_vtop(unsigned long vaddr) | |||
98 | 99 | ||
99 | /* We assume the page is modified. */ | 100 | /* We assume the page is modified. */ |
100 | page = follow_page(vma, vaddr, FOLL_WRITE | FOLL_TOUCH); | 101 | page = follow_page(vma, vaddr, FOLL_WRITE | FOLL_TOUCH); |
101 | if (!page) | 102 | if (IS_ERR_OR_NULL(page)) |
102 | return ~0UL; | 103 | return ~0UL; |
103 | 104 | ||
104 | return (page_to_pfn(page) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK); | 105 | return (page_to_pfn(page) << PAGE_SHIFT) | (vaddr & ~PAGE_MASK); |