diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 14:07:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 14:07:31 -0400 |
commit | 58ae9c0d54ae3916614fa1f3756dadb954f16e6c (patch) | |
tree | ce777b21cbc273ee13752831a48aa1767720d856 | |
parent | 4a553e1450827acb1b4bcaa5a0ae079209d16038 (diff) | |
parent | 924e101a7ab6f884047f4344e5f1154a4bcd63a6 (diff) |
Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 debug update from Ingo Molnar:
"Various small enhancements"
* 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/debug: Dump family, model, stepping of the boot CPU
x86/iommu: Use NULL instead of plain 0 for __IOMMU_INIT
x86/iommu: Drop duplicate const in __IOMMU_INIT
x86/fpu/xsave: Keep __user annotation in casts
x86/pci/probe_roms: Add missing __iomem annotation to pci_map_biosrom()
x86/signals: ia32_signal.c: add __user casts to fix sparse warnings
x86/vdso: Add __user annotation to VDSO32_SYMBOL
x86: Fix __user annotations in asm/sys_ia32.h
-rw-r--r-- | arch/x86/ia32/ia32_signal.c | 11 | ||||
-rw-r--r-- | arch/x86/ia32/sys_ia32.c | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/iommu_table.h | 6 | ||||
-rw-r--r-- | arch/x86/include/asm/sys_ia32.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/vdso.h | 3 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 8 | ||||
-rw-r--r-- | arch/x86/kernel/probe_roms.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/xsave.c | 6 |
8 files changed, 22 insertions, 18 deletions
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c index 673ac9b63d6b..452d4dd0a95a 100644 --- a/arch/x86/ia32/ia32_signal.c +++ b/arch/x86/ia32/ia32_signal.c | |||
@@ -162,7 +162,8 @@ asmlinkage long sys32_sigaltstack(const stack_ia32_t __user *uss_ptr, | |||
162 | } | 162 | } |
163 | seg = get_fs(); | 163 | seg = get_fs(); |
164 | set_fs(KERNEL_DS); | 164 | set_fs(KERNEL_DS); |
165 | ret = do_sigaltstack(uss_ptr ? &uss : NULL, &uoss, regs->sp); | 165 | ret = do_sigaltstack((stack_t __force __user *) (uss_ptr ? &uss : NULL), |
166 | (stack_t __force __user *) &uoss, regs->sp); | ||
166 | set_fs(seg); | 167 | set_fs(seg); |
167 | if (ret >= 0 && uoss_ptr) { | 168 | if (ret >= 0 && uoss_ptr) { |
168 | if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t))) | 169 | if (!access_ok(VERIFY_WRITE, uoss_ptr, sizeof(stack_ia32_t))) |
@@ -361,7 +362,7 @@ static int ia32_setup_sigcontext(struct sigcontext_ia32 __user *sc, | |||
361 | */ | 362 | */ |
362 | static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | 363 | static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, |
363 | size_t frame_size, | 364 | size_t frame_size, |
364 | void **fpstate) | 365 | void __user **fpstate) |
365 | { | 366 | { |
366 | unsigned long sp; | 367 | unsigned long sp; |
367 | 368 | ||
@@ -382,7 +383,7 @@ static void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, | |||
382 | 383 | ||
383 | if (used_math()) { | 384 | if (used_math()) { |
384 | sp = sp - sig_xstate_ia32_size; | 385 | sp = sp - sig_xstate_ia32_size; |
385 | *fpstate = (struct _fpstate_ia32 *) sp; | 386 | *fpstate = (struct _fpstate_ia32 __user *) sp; |
386 | if (save_i387_xstate_ia32(*fpstate) < 0) | 387 | if (save_i387_xstate_ia32(*fpstate) < 0) |
387 | return (void __user *) -1L; | 388 | return (void __user *) -1L; |
388 | } | 389 | } |
@@ -448,7 +449,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka, | |||
448 | * These are actually not used anymore, but left because some | 449 | * These are actually not used anymore, but left because some |
449 | * gdb versions depend on them as a marker. | 450 | * gdb versions depend on them as a marker. |
450 | */ | 451 | */ |
451 | put_user_ex(*((u64 *)&code), (u64 *)frame->retcode); | 452 | put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode); |
452 | } put_user_catch(err); | 453 | } put_user_catch(err); |
453 | 454 | ||
454 | if (err) | 455 | if (err) |
@@ -529,7 +530,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
529 | * Not actually used anymore, but left because some gdb | 530 | * Not actually used anymore, but left because some gdb |
530 | * versions need it. | 531 | * versions need it. |
531 | */ | 532 | */ |
532 | put_user_ex(*((u64 *)&code), (u64 *)frame->retcode); | 533 | put_user_ex(*((u64 *)&code), (u64 __user *)frame->retcode); |
533 | } put_user_catch(err); | 534 | } put_user_catch(err); |
534 | 535 | ||
535 | if (err) | 536 | if (err) |
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 4540bece0946..c5b938d92eab 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c | |||
@@ -287,7 +287,7 @@ asmlinkage long sys32_sigaction(int sig, struct old_sigaction32 __user *act, | |||
287 | return ret; | 287 | return ret; |
288 | } | 288 | } |
289 | 289 | ||
290 | asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int *stat_addr, | 290 | asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int __user *stat_addr, |
291 | int options) | 291 | int options) |
292 | { | 292 | { |
293 | return compat_sys_wait4(pid, stat_addr, options, NULL); | 293 | return compat_sys_wait4(pid, stat_addr, options, NULL); |
diff --git a/arch/x86/include/asm/iommu_table.h b/arch/x86/include/asm/iommu_table.h index f229b13a5f30..f42a04735a0a 100644 --- a/arch/x86/include/asm/iommu_table.h +++ b/arch/x86/include/asm/iommu_table.h | |||
@@ -48,7 +48,7 @@ struct iommu_table_entry { | |||
48 | 48 | ||
49 | 49 | ||
50 | #define __IOMMU_INIT(_detect, _depend, _early_init, _late_init, _finish)\ | 50 | #define __IOMMU_INIT(_detect, _depend, _early_init, _late_init, _finish)\ |
51 | static const struct iommu_table_entry const \ | 51 | static const struct iommu_table_entry \ |
52 | __iommu_entry_##_detect __used \ | 52 | __iommu_entry_##_detect __used \ |
53 | __attribute__ ((unused, __section__(".iommu_table"), \ | 53 | __attribute__ ((unused, __section__(".iommu_table"), \ |
54 | aligned((sizeof(void *))))) \ | 54 | aligned((sizeof(void *))))) \ |
@@ -63,10 +63,10 @@ struct iommu_table_entry { | |||
63 | * to stop detecting the other IOMMUs after yours has been detected. | 63 | * to stop detecting the other IOMMUs after yours has been detected. |
64 | */ | 64 | */ |
65 | #define IOMMU_INIT_POST(_detect) \ | 65 | #define IOMMU_INIT_POST(_detect) \ |
66 | __IOMMU_INIT(_detect, pci_swiotlb_detect_4gb, 0, 0, 0) | 66 | __IOMMU_INIT(_detect, pci_swiotlb_detect_4gb, NULL, NULL, 0) |
67 | 67 | ||
68 | #define IOMMU_INIT_POST_FINISH(detect) \ | 68 | #define IOMMU_INIT_POST_FINISH(detect) \ |
69 | __IOMMU_INIT(_detect, pci_swiotlb_detect_4gb, 0, 0, 1) | 69 | __IOMMU_INIT(_detect, pci_swiotlb_detect_4gb, NULL, NULL, 1) |
70 | 70 | ||
71 | /* | 71 | /* |
72 | * A more sophisticated version of IOMMU_INIT. This variant requires: | 72 | * A more sophisticated version of IOMMU_INIT. This variant requires: |
diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h index 3fda9db48819..4ca1c611b552 100644 --- a/arch/x86/include/asm/sys_ia32.h +++ b/arch/x86/include/asm/sys_ia32.h | |||
@@ -40,7 +40,7 @@ asmlinkage long sys32_sigaction(int, struct old_sigaction32 __user *, | |||
40 | struct old_sigaction32 __user *); | 40 | struct old_sigaction32 __user *); |
41 | asmlinkage long sys32_alarm(unsigned int); | 41 | asmlinkage long sys32_alarm(unsigned int); |
42 | 42 | ||
43 | asmlinkage long sys32_waitpid(compat_pid_t, unsigned int *, int); | 43 | asmlinkage long sys32_waitpid(compat_pid_t, unsigned int __user *, int); |
44 | asmlinkage long sys32_sysfs(int, u32, u32); | 44 | asmlinkage long sys32_sysfs(int, u32, u32); |
45 | 45 | ||
46 | asmlinkage long sys32_sched_rr_get_interval(compat_pid_t, | 46 | asmlinkage long sys32_sched_rr_get_interval(compat_pid_t, |
diff --git a/arch/x86/include/asm/vdso.h b/arch/x86/include/asm/vdso.h index bb0522850b74..fddb53d63915 100644 --- a/arch/x86/include/asm/vdso.h +++ b/arch/x86/include/asm/vdso.h | |||
@@ -11,7 +11,8 @@ extern const char VDSO32_PRELINK[]; | |||
11 | #define VDSO32_SYMBOL(base, name) \ | 11 | #define VDSO32_SYMBOL(base, name) \ |
12 | ({ \ | 12 | ({ \ |
13 | extern const char VDSO32_##name[]; \ | 13 | extern const char VDSO32_##name[]; \ |
14 | (void *)(VDSO32_##name - VDSO32_PRELINK + (unsigned long)(base)); \ | 14 | (void __user *)(VDSO32_##name - VDSO32_PRELINK + \ |
15 | (unsigned long)(base)); \ | ||
15 | }) | 16 | }) |
16 | #endif | 17 | #endif |
17 | 18 | ||
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 9961e2e23709..134505e07b09 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1023,14 +1023,16 @@ void __cpuinit print_cpu_info(struct cpuinfo_x86 *c) | |||
1023 | printk(KERN_CONT "%s ", vendor); | 1023 | printk(KERN_CONT "%s ", vendor); |
1024 | 1024 | ||
1025 | if (c->x86_model_id[0]) | 1025 | if (c->x86_model_id[0]) |
1026 | printk(KERN_CONT "%s", c->x86_model_id); | 1026 | printk(KERN_CONT "%s", strim(c->x86_model_id)); |
1027 | else | 1027 | else |
1028 | printk(KERN_CONT "%d86", c->x86); | 1028 | printk(KERN_CONT "%d86", c->x86); |
1029 | 1029 | ||
1030 | printk(KERN_CONT " (fam: %02x, model: %02x", c->x86, c->x86_model); | ||
1031 | |||
1030 | if (c->x86_mask || c->cpuid_level >= 0) | 1032 | if (c->x86_mask || c->cpuid_level >= 0) |
1031 | printk(KERN_CONT " stepping %02x\n", c->x86_mask); | 1033 | printk(KERN_CONT ", stepping: %02x)\n", c->x86_mask); |
1032 | else | 1034 | else |
1033 | printk(KERN_CONT "\n"); | 1035 | printk(KERN_CONT ")\n"); |
1034 | 1036 | ||
1035 | print_cpu_msr(c); | 1037 | print_cpu_msr(c); |
1036 | } | 1038 | } |
diff --git a/arch/x86/kernel/probe_roms.c b/arch/x86/kernel/probe_roms.c index 0bc72e2069e3..d5f15c3f7b25 100644 --- a/arch/x86/kernel/probe_roms.c +++ b/arch/x86/kernel/probe_roms.c | |||
@@ -150,7 +150,7 @@ static struct resource *find_oprom(struct pci_dev *pdev) | |||
150 | return oprom; | 150 | return oprom; |
151 | } | 151 | } |
152 | 152 | ||
153 | void *pci_map_biosrom(struct pci_dev *pdev) | 153 | void __iomem *pci_map_biosrom(struct pci_dev *pdev) |
154 | { | 154 | { |
155 | struct resource *oprom = find_oprom(pdev); | 155 | struct resource *oprom = find_oprom(pdev); |
156 | 156 | ||
diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c index 3d3e20709119..9e1a8a7ba6e6 100644 --- a/arch/x86/kernel/xsave.c +++ b/arch/x86/kernel/xsave.c | |||
@@ -132,9 +132,9 @@ int check_for_xstate(struct i387_fxsave_struct __user *buf, | |||
132 | fx_sw_user->xstate_size > fx_sw_user->extended_size) | 132 | fx_sw_user->xstate_size > fx_sw_user->extended_size) |
133 | return -EINVAL; | 133 | return -EINVAL; |
134 | 134 | ||
135 | err = __get_user(magic2, (__u32 *) (((void *)fpstate) + | 135 | err = __get_user(magic2, (__u32 __user *) (fpstate + |
136 | fx_sw_user->extended_size - | 136 | fx_sw_user->extended_size - |
137 | FP_XSTATE_MAGIC2_SIZE)); | 137 | FP_XSTATE_MAGIC2_SIZE)); |
138 | if (err) | 138 | if (err) |
139 | return err; | 139 | return err; |
140 | /* | 140 | /* |