diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 19:59:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 19:59:10 -0400 |
commit | 8e3ade251bc7c0a4f0777df4dd34343a03efadba (patch) | |
tree | 6c0b78731e3d6609057951d07660efbd90992ad0 /arch | |
parent | e317234975cb7463b8ca21a93bb6862d9dcf113f (diff) | |
parent | e075f59152890ffd7e3d704afc997dd686c8a781 (diff) |
Merge branch 'akpm' (Andrew's patch-bomb)
Merge second batch of patches from Andrew Morton:
- various misc things
- core kernel changes to prctl, exit, exec, init, etc.
- kernel/watchdog.c updates
- get_maintainer
- MAINTAINERS
- the backlight driver queue
- core bitops code cleanups
- the led driver queue
- some core prio_tree work
- checkpatch udpates
- largeish crc32 update
- a new poll() feature for the v4l guys
- the rtc driver queue
- fatfs
- ptrace
- signals
- kmod/usermodehelper updates
- coredump
- procfs updates
* emailed from Andrew Morton <akpm@linux-foundation.org>: (141 commits)
seq_file: add seq_set_overflow(), seq_overflow()
proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().
procfs: speed up /proc/pid/stat, statm
procfs: add num_to_str() to speed up /proc/stat
proc: speed up /proc/stat handling
fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static
coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP
coredump: remove VM_ALWAYSDUMP flag
kmod: make __request_module() killable
kmod: introduce call_modprobe() helper
usermodehelper: ____call_usermodehelper() doesn't need do_exit()
usermodehelper: kill umh_wait, renumber UMH_* constants
usermodehelper: implement UMH_KILLABLE
usermodehelper: introduce umh_complete(sub_info)
usermodehelper: use UMH_WAIT_PROC consistently
signal: zap_pid_ns_processes: s/SEND_SIG_NOINFO/SEND_SIG_FORCED/
signal: oom_kill_task: use SEND_SIG_FORCED instead of force_sig()
signal: cosmetic, s/from_ancestor_ns/force/ in prepare_signal() paths
signal: give SEND_SIG_FORCED more power to beat SIGNAL_UNKILLABLE
Hexagon: use set_current_blocked() and block_sigmask()
...
Diffstat (limited to 'arch')
31 files changed, 50 insertions, 109 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index 5b448a74d0f7..a6f14f622d13 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -120,6 +120,9 @@ config HAVE_KRETPROBES | |||
120 | 120 | ||
121 | config HAVE_OPTPROBES | 121 | config HAVE_OPTPROBES |
122 | bool | 122 | bool |
123 | |||
124 | config HAVE_NMI_WATCHDOG | ||
125 | bool | ||
123 | # | 126 | # |
124 | # An arch should select this if it provides all these things: | 127 | # An arch should select this if it provides all these things: |
125 | # | 128 | # |
diff --git a/arch/alpha/include/asm/mman.h b/arch/alpha/include/asm/mman.h index 72db984f8781..cbeb3616a28e 100644 --- a/arch/alpha/include/asm/mman.h +++ b/arch/alpha/include/asm/mman.h | |||
@@ -56,6 +56,10 @@ | |||
56 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ | 56 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
57 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ | 57 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
58 | 58 | ||
59 | #define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, | ||
60 | overrides the coredump filter bits */ | ||
61 | #define MADV_DODUMP 17 /* Clear the MADV_NODUMP flag */ | ||
62 | |||
59 | /* compatibility flags */ | 63 | /* compatibility flags */ |
60 | #define MAP_FILE 0 | 64 | #define MAP_FILE 0 |
61 | 65 | ||
diff --git a/arch/arm/include/asm/pgtable-nommu.h b/arch/arm/include/asm/pgtable-nommu.h index ffc0e85775b4..7ec60d6075bf 100644 --- a/arch/arm/include/asm/pgtable-nommu.h +++ b/arch/arm/include/asm/pgtable-nommu.h | |||
@@ -79,7 +79,6 @@ extern unsigned int kobjsize(const void *objp); | |||
79 | * No page table caches to initialise. | 79 | * No page table caches to initialise. |
80 | */ | 80 | */ |
81 | #define pgtable_cache_init() do { } while (0) | 81 | #define pgtable_cache_init() do { } while (0) |
82 | #define io_remap_page_range remap_page_range | ||
83 | #define io_remap_pfn_range remap_pfn_range | 82 | #define io_remap_pfn_range remap_pfn_range |
84 | 83 | ||
85 | 84 | ||
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index c2ae3cd331fe..219e4efee1a6 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -533,8 +533,7 @@ int vectors_user_mapping(void) | |||
533 | struct mm_struct *mm = current->mm; | 533 | struct mm_struct *mm = current->mm; |
534 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, | 534 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, |
535 | VM_READ | VM_EXEC | | 535 | VM_READ | VM_EXEC | |
536 | VM_MAYREAD | VM_MAYEXEC | | 536 | VM_MAYREAD | VM_MAYEXEC | VM_RESERVED, |
537 | VM_ALWAYSDUMP | VM_RESERVED, | ||
538 | NULL); | 537 | NULL); |
539 | } | 538 | } |
540 | 539 | ||
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index abe5a9e85148..c1269a1085e1 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -36,6 +36,7 @@ config BLACKFIN | |||
36 | select GENERIC_ATOMIC64 | 36 | select GENERIC_ATOMIC64 |
37 | select GENERIC_IRQ_PROBE | 37 | select GENERIC_IRQ_PROBE |
38 | select IRQ_PER_CPU if SMP | 38 | select IRQ_PER_CPU if SMP |
39 | select HAVE_NMI_WATCHDOG if NMI_WATCHDOG | ||
39 | 40 | ||
40 | config GENERIC_CSUM | 41 | config GENERIC_CSUM |
41 | def_bool y | 42 | def_bool y |
diff --git a/arch/blackfin/include/asm/irq.h b/arch/blackfin/include/asm/irq.h index 12f4060a31b0..89de539ed010 100644 --- a/arch/blackfin/include/asm/irq.h +++ b/arch/blackfin/include/asm/irq.h | |||
@@ -38,8 +38,4 @@ | |||
38 | 38 | ||
39 | #include <asm-generic/irq.h> | 39 | #include <asm-generic/irq.h> |
40 | 40 | ||
41 | #ifdef CONFIG_NMI_WATCHDOG | ||
42 | # define ARCH_HAS_NMI_WATCHDOG | ||
43 | #endif | ||
44 | |||
45 | #endif /* _BFIN_IRQ_H_ */ | 41 | #endif /* _BFIN_IRQ_H_ */ |
diff --git a/arch/c6x/include/asm/pgtable.h b/arch/c6x/include/asm/pgtable.h index 68c8af4f1f97..38a4312eb2cb 100644 --- a/arch/c6x/include/asm/pgtable.h +++ b/arch/c6x/include/asm/pgtable.h | |||
@@ -73,9 +73,6 @@ extern unsigned long empty_zero_page; | |||
73 | #define pgtable_cache_init() do { } while (0) | 73 | #define pgtable_cache_init() do { } while (0) |
74 | #define io_remap_pfn_range remap_pfn_range | 74 | #define io_remap_pfn_range remap_pfn_range |
75 | 75 | ||
76 | #define io_remap_page_range(vma, vaddr, paddr, size, prot) \ | ||
77 | remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) | ||
78 | |||
79 | #include <asm-generic/pgtable.h> | 76 | #include <asm-generic/pgtable.h> |
80 | 77 | ||
81 | #endif /* _ASM_C6X_PGTABLE_H */ | 78 | #endif /* _ASM_C6X_PGTABLE_H */ |
diff --git a/arch/hexagon/kernel/signal.c b/arch/hexagon/kernel/signal.c index b45be3181193..ecbab3457606 100644 --- a/arch/hexagon/kernel/signal.c +++ b/arch/hexagon/kernel/signal.c | |||
@@ -192,12 +192,7 @@ static int handle_signal(int sig, siginfo_t *info, struct k_sigaction *ka, | |||
192 | if (rc) | 192 | if (rc) |
193 | return rc; | 193 | return rc; |
194 | 194 | ||
195 | spin_lock_irq(¤t->sighand->siglock); | 195 | block_sigmask(ka, sig); |
196 | sigorsets(¤t->blocked, ¤t->blocked, &ka->sa.sa_mask); | ||
197 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
198 | sigaddset(¤t->blocked, sig); | ||
199 | recalc_sigpending(); | ||
200 | spin_unlock_irq(¤t->sighand->siglock); | ||
201 | 196 | ||
202 | return 0; | 197 | return 0; |
203 | } | 198 | } |
@@ -305,10 +300,7 @@ asmlinkage int sys_rt_sigreturn(void) | |||
305 | goto badframe; | 300 | goto badframe; |
306 | 301 | ||
307 | sigdelsetmask(&blocked, ~_BLOCKABLE); | 302 | sigdelsetmask(&blocked, ~_BLOCKABLE); |
308 | spin_lock_irq(¤t->sighand->siglock); | 303 | set_current_blocked(&blocked); |
309 | current->blocked = blocked; | ||
310 | recalc_sigpending(); | ||
311 | spin_unlock_irq(¤t->sighand->siglock); | ||
312 | 304 | ||
313 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) | 305 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) |
314 | goto badframe; | 306 | goto badframe; |
diff --git a/arch/hexagon/kernel/vdso.c b/arch/hexagon/kernel/vdso.c index 16277c33308a..f212a453b527 100644 --- a/arch/hexagon/kernel/vdso.c +++ b/arch/hexagon/kernel/vdso.c | |||
@@ -78,8 +78,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
78 | /* MAYWRITE to allow gdb to COW and set breakpoints. */ | 78 | /* MAYWRITE to allow gdb to COW and set breakpoints. */ |
79 | ret = install_special_mapping(mm, vdso_base, PAGE_SIZE, | 79 | ret = install_special_mapping(mm, vdso_base, PAGE_SIZE, |
80 | VM_READ|VM_EXEC| | 80 | VM_READ|VM_EXEC| |
81 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 81 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
82 | VM_ALWAYSDUMP, | ||
83 | &vdso_page); | 82 | &vdso_page); |
84 | 83 | ||
85 | if (ret) | 84 | if (ret) |
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h index b2af42311a12..44dc67aa0277 100644 --- a/arch/microblaze/include/asm/pgtable.h +++ b/arch/microblaze/include/asm/pgtable.h | |||
@@ -543,8 +543,6 @@ extern unsigned long iopa(unsigned long addr); | |||
543 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ | 543 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ |
544 | #define kern_addr_valid(addr) (1) | 544 | #define kern_addr_valid(addr) (1) |
545 | 545 | ||
546 | #define io_remap_page_range remap_page_range | ||
547 | |||
548 | /* | 546 | /* |
549 | * No page table caches to initialise | 547 | * No page table caches to initialise |
550 | */ | 548 | */ |
diff --git a/arch/mips/include/asm/mman.h b/arch/mips/include/asm/mman.h index 785b4ea4ec3f..46d3da0d4b92 100644 --- a/arch/mips/include/asm/mman.h +++ b/arch/mips/include/asm/mman.h | |||
@@ -80,6 +80,10 @@ | |||
80 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ | 80 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
81 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ | 81 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
82 | 82 | ||
83 | #define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, | ||
84 | overrides the coredump filter bits */ | ||
85 | #define MADV_DODUMP 17 /* Clear the MADV_NODUMP flag */ | ||
86 | |||
83 | /* compatibility flags */ | 87 | /* compatibility flags */ |
84 | #define MAP_FILE 0 | 88 | #define MAP_FILE 0 |
85 | 89 | ||
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c index e5cdfd603f8f..0f1af58b036a 100644 --- a/arch/mips/kernel/vdso.c +++ b/arch/mips/kernel/vdso.c | |||
@@ -88,8 +88,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
88 | 88 | ||
89 | ret = install_special_mapping(mm, addr, PAGE_SIZE, | 89 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
90 | VM_READ|VM_EXEC| | 90 | VM_READ|VM_EXEC| |
91 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 91 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
92 | VM_ALWAYSDUMP, | ||
93 | &vdso_page); | 92 | &vdso_page); |
94 | 93 | ||
95 | if (ret) | 94 | if (ret) |
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig index 8f1c40d5817e..3aa3de017159 100644 --- a/arch/mn10300/Kconfig +++ b/arch/mn10300/Kconfig | |||
@@ -5,6 +5,7 @@ config MN10300 | |||
5 | select GENERIC_IRQ_SHOW | 5 | select GENERIC_IRQ_SHOW |
6 | select HAVE_ARCH_TRACEHOOK | 6 | select HAVE_ARCH_TRACEHOOK |
7 | select HAVE_ARCH_KGDB | 7 | select HAVE_ARCH_KGDB |
8 | select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER | ||
8 | 9 | ||
9 | config AM33_2 | 10 | config AM33_2 |
10 | def_bool n | 11 | def_bool n |
diff --git a/arch/mn10300/include/asm/reset-regs.h b/arch/mn10300/include/asm/reset-regs.h index 10c7502a113f..8ca2a42d365b 100644 --- a/arch/mn10300/include/asm/reset-regs.h +++ b/arch/mn10300/include/asm/reset-regs.h | |||
@@ -17,10 +17,6 @@ | |||
17 | 17 | ||
18 | #ifdef __KERNEL__ | 18 | #ifdef __KERNEL__ |
19 | 19 | ||
20 | #ifdef CONFIG_MN10300_WD_TIMER | ||
21 | #define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */ | ||
22 | #endif | ||
23 | |||
24 | /* | 20 | /* |
25 | * watchdog timer registers | 21 | * watchdog timer registers |
26 | */ | 22 | */ |
diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/asm/pgtable.h index 043505d7f684..14c900cfd30a 100644 --- a/arch/openrisc/include/asm/pgtable.h +++ b/arch/openrisc/include/asm/pgtable.h | |||
@@ -455,7 +455,6 @@ static inline void update_mmu_cache(struct vm_area_struct *vma, | |||
455 | * No page table caches to initialise | 455 | * No page table caches to initialise |
456 | */ | 456 | */ |
457 | #define pgtable_cache_init() do { } while (0) | 457 | #define pgtable_cache_init() do { } while (0) |
458 | #define io_remap_page_range remap_page_range | ||
459 | 458 | ||
460 | typedef pte_t *pte_addr_t; | 459 | typedef pte_t *pte_addr_t; |
461 | 460 | ||
diff --git a/arch/parisc/include/asm/mman.h b/arch/parisc/include/asm/mman.h index f5b7bf5fba68..12219ebce869 100644 --- a/arch/parisc/include/asm/mman.h +++ b/arch/parisc/include/asm/mman.h | |||
@@ -62,6 +62,10 @@ | |||
62 | #define MADV_HUGEPAGE 67 /* Worth backing with hugepages */ | 62 | #define MADV_HUGEPAGE 67 /* Worth backing with hugepages */ |
63 | #define MADV_NOHUGEPAGE 68 /* Not worth backing with hugepages */ | 63 | #define MADV_NOHUGEPAGE 68 /* Not worth backing with hugepages */ |
64 | 64 | ||
65 | #define MADV_DONTDUMP 69 /* Explicity exclude from the core dump, | ||
66 | overrides the coredump filter bits */ | ||
67 | #define MADV_DODUMP 70 /* Clear the MADV_NODUMP flag */ | ||
68 | |||
65 | /* compatibility flags */ | 69 | /* compatibility flags */ |
66 | #define MAP_FILE 0 | 70 | #define MAP_FILE 0 |
67 | #define MAP_VARIABLE 0 | 71 | #define MAP_VARIABLE 0 |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 7d14bb697d40..d36ee1055f88 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -263,17 +263,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
263 | * the "data" page of the vDSO or you'll stop getting kernel updates | 263 | * the "data" page of the vDSO or you'll stop getting kernel updates |
264 | * and your nice userland gettimeofday will be totally dead. | 264 | * and your nice userland gettimeofday will be totally dead. |
265 | * It's fine to use that for setting breakpoints in the vDSO code | 265 | * It's fine to use that for setting breakpoints in the vDSO code |
266 | * pages though | 266 | * pages though. |
267 | * | ||
268 | * Make sure the vDSO gets into every core dump. | ||
269 | * Dumping its contents makes post-mortem fully interpretable later | ||
270 | * without matching up the same kernel and hardware config to see | ||
271 | * what PC values meant. | ||
272 | */ | 267 | */ |
273 | rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, | 268 | rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, |
274 | VM_READ|VM_EXEC| | 269 | VM_READ|VM_EXEC| |
275 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 270 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
276 | VM_ALWAYSDUMP, | ||
277 | vdso_pagelist); | 271 | vdso_pagelist); |
278 | if (rc) { | 272 | if (rc) { |
279 | current->mm->context.vdso_base = 0; | 273 | current->mm->context.vdso_base = 0; |
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c index e704a9965f90..9c80138206b0 100644 --- a/arch/s390/kernel/vdso.c +++ b/arch/s390/kernel/vdso.c | |||
@@ -241,17 +241,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
241 | * on the "data" page of the vDSO or you'll stop getting kernel | 241 | * on the "data" page of the vDSO or you'll stop getting kernel |
242 | * updates and your nice userland gettimeofday will be totally dead. | 242 | * updates and your nice userland gettimeofday will be totally dead. |
243 | * It's fine to use that for setting breakpoints in the vDSO code | 243 | * It's fine to use that for setting breakpoints in the vDSO code |
244 | * pages though | 244 | * pages though. |
245 | * | ||
246 | * Make sure the vDSO gets into every core dump. | ||
247 | * Dumping its contents makes post-mortem fully interpretable later | ||
248 | * without matching up the same kernel and hardware config to see | ||
249 | * what PC values meant. | ||
250 | */ | 245 | */ |
251 | rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, | 246 | rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT, |
252 | VM_READ|VM_EXEC| | 247 | VM_READ|VM_EXEC| |
253 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 248 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
254 | VM_ALWAYSDUMP, | ||
255 | vdso_pagelist); | 249 | vdso_pagelist); |
256 | if (rc) | 250 | if (rc) |
257 | current->mm->context.vdso_base = 0; | 251 | current->mm->context.vdso_base = 0; |
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c index 1d6d51a1ce79..5ca579720a09 100644 --- a/arch/sh/kernel/vsyscall/vsyscall.c +++ b/arch/sh/kernel/vsyscall/vsyscall.c | |||
@@ -73,8 +73,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
73 | 73 | ||
74 | ret = install_special_mapping(mm, addr, PAGE_SIZE, | 74 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
75 | VM_READ | VM_EXEC | | 75 | VM_READ | VM_EXEC | |
76 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC | | 76 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC, |
77 | VM_ALWAYSDUMP, | ||
78 | syscall_pages); | 77 | syscall_pages); |
79 | if (unlikely(ret)) | 78 | if (unlikely(ret)) |
80 | goto up_fail; | 79 | goto up_fail; |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index ca5580e4d813..1666de84d477 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -29,6 +29,7 @@ config SPARC | |||
29 | select GENERIC_IRQ_SHOW | 29 | select GENERIC_IRQ_SHOW |
30 | select USE_GENERIC_SMP_HELPERS if SMP | 30 | select USE_GENERIC_SMP_HELPERS if SMP |
31 | select GENERIC_PCI_IOMAP | 31 | select GENERIC_PCI_IOMAP |
32 | select HAVE_NMI_WATCHDOG if SPARC64 | ||
32 | 33 | ||
33 | config SPARC32 | 34 | config SPARC32 |
34 | def_bool !64BIT | 35 | def_bool !64BIT |
diff --git a/arch/sparc/include/asm/irq_64.h b/arch/sparc/include/asm/irq_64.h index 16dcae6d56e7..abf6afe82ca8 100644 --- a/arch/sparc/include/asm/irq_64.h +++ b/arch/sparc/include/asm/irq_64.h | |||
@@ -95,7 +95,6 @@ void arch_trigger_all_cpu_backtrace(void); | |||
95 | extern void *hardirq_stack[NR_CPUS]; | 95 | extern void *hardirq_stack[NR_CPUS]; |
96 | extern void *softirq_stack[NR_CPUS]; | 96 | extern void *softirq_stack[NR_CPUS]; |
97 | #define __ARCH_HAS_DO_SOFTIRQ | 97 | #define __ARCH_HAS_DO_SOFTIRQ |
98 | #define ARCH_HAS_NMI_WATCHDOG | ||
99 | 98 | ||
100 | #define NO_IRQ 0xffffffff | 99 | #define NO_IRQ 0xffffffff |
101 | 100 | ||
diff --git a/arch/tile/mm/elf.c b/arch/tile/mm/elf.c index 55e58e93bfc5..1a00fb64fc88 100644 --- a/arch/tile/mm/elf.c +++ b/arch/tile/mm/elf.c | |||
@@ -117,17 +117,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, | |||
117 | 117 | ||
118 | /* | 118 | /* |
119 | * MAYWRITE to allow gdb to COW and set breakpoints | 119 | * MAYWRITE to allow gdb to COW and set breakpoints |
120 | * | ||
121 | * Make sure the vDSO gets into every core dump. Dumping its | ||
122 | * contents makes post-mortem fully interpretable later | ||
123 | * without matching up the same kernel and hardware config to | ||
124 | * see what PC values meant. | ||
125 | */ | 120 | */ |
126 | vdso_base = VDSO_BASE; | 121 | vdso_base = VDSO_BASE; |
127 | retval = install_special_mapping(mm, vdso_base, PAGE_SIZE, | 122 | retval = install_special_mapping(mm, vdso_base, PAGE_SIZE, |
128 | VM_READ|VM_EXEC| | 123 | VM_READ|VM_EXEC| |
129 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 124 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
130 | VM_ALWAYSDUMP, | ||
131 | vdso_pages); | 125 | vdso_pages); |
132 | 126 | ||
133 | #ifndef __tilegx__ | 127 | #ifndef __tilegx__ |
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c index e8b889d3bce7..fb12f4c5e649 100644 --- a/arch/um/kernel/signal.c +++ b/arch/um/kernel/signal.c | |||
@@ -65,21 +65,10 @@ static int handle_signal(struct pt_regs *regs, unsigned long signr, | |||
65 | #endif | 65 | #endif |
66 | err = setup_signal_stack_si(sp, signr, ka, regs, info, oldset); | 66 | err = setup_signal_stack_si(sp, signr, ka, regs, info, oldset); |
67 | 67 | ||
68 | if (err) { | 68 | if (err) |
69 | spin_lock_irq(¤t->sighand->siglock); | ||
70 | current->blocked = *oldset; | ||
71 | recalc_sigpending(); | ||
72 | spin_unlock_irq(¤t->sighand->siglock); | ||
73 | force_sigsegv(signr, current); | 69 | force_sigsegv(signr, current); |
74 | } else { | 70 | else |
75 | spin_lock_irq(¤t->sighand->siglock); | 71 | block_sigmask(ka, signr); |
76 | sigorsets(¤t->blocked, ¤t->blocked, | ||
77 | &ka->sa.sa_mask); | ||
78 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
79 | sigaddset(¤t->blocked, signr); | ||
80 | recalc_sigpending(); | ||
81 | spin_unlock_irq(¤t->sighand->siglock); | ||
82 | } | ||
83 | 72 | ||
84 | return err; | 73 | return err; |
85 | } | 74 | } |
@@ -162,12 +151,11 @@ int do_signal(void) | |||
162 | */ | 151 | */ |
163 | long sys_sigsuspend(int history0, int history1, old_sigset_t mask) | 152 | long sys_sigsuspend(int history0, int history1, old_sigset_t mask) |
164 | { | 153 | { |
154 | sigset_t blocked; | ||
155 | |||
165 | mask &= _BLOCKABLE; | 156 | mask &= _BLOCKABLE; |
166 | spin_lock_irq(¤t->sighand->siglock); | 157 | siginitset(&blocked, mask); |
167 | current->saved_sigmask = current->blocked; | 158 | set_current_blocked(&blocked); |
168 | siginitset(¤t->blocked, mask); | ||
169 | recalc_sigpending(); | ||
170 | spin_unlock_irq(¤t->sighand->siglock); | ||
171 | 159 | ||
172 | current->state = TASK_INTERRUPTIBLE; | 160 | current->state = TASK_INTERRUPTIBLE; |
173 | schedule(); | 161 | schedule(); |
diff --git a/arch/unicore32/kernel/process.c b/arch/unicore32/kernel/process.c index 52edc2b62873..432b4291f37b 100644 --- a/arch/unicore32/kernel/process.c +++ b/arch/unicore32/kernel/process.c | |||
@@ -381,7 +381,7 @@ int vectors_user_mapping(void) | |||
381 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, | 381 | return install_special_mapping(mm, 0xffff0000, PAGE_SIZE, |
382 | VM_READ | VM_EXEC | | 382 | VM_READ | VM_EXEC | |
383 | VM_MAYREAD | VM_MAYEXEC | | 383 | VM_MAYREAD | VM_MAYEXEC | |
384 | VM_ALWAYSDUMP | VM_RESERVED, | 384 | VM_RESERVED, |
385 | NULL); | 385 | NULL); |
386 | } | 386 | } |
387 | 387 | ||
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 0a18d16cb58d..fa2900c0e398 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c | |||
@@ -643,14 +643,14 @@ static bool __perf_sched_find_counter(struct perf_sched *sched) | |||
643 | /* Prefer fixed purpose counters */ | 643 | /* Prefer fixed purpose counters */ |
644 | if (x86_pmu.num_counters_fixed) { | 644 | if (x86_pmu.num_counters_fixed) { |
645 | idx = X86_PMC_IDX_FIXED; | 645 | idx = X86_PMC_IDX_FIXED; |
646 | for_each_set_bit_cont(idx, c->idxmsk, X86_PMC_IDX_MAX) { | 646 | for_each_set_bit_from(idx, c->idxmsk, X86_PMC_IDX_MAX) { |
647 | if (!__test_and_set_bit(idx, sched->state.used)) | 647 | if (!__test_and_set_bit(idx, sched->state.used)) |
648 | goto done; | 648 | goto done; |
649 | } | 649 | } |
650 | } | 650 | } |
651 | /* Grab the first unused counter starting with idx */ | 651 | /* Grab the first unused counter starting with idx */ |
652 | idx = sched->state.counter; | 652 | idx = sched->state.counter; |
653 | for_each_set_bit_cont(idx, c->idxmsk, X86_PMC_IDX_FIXED) { | 653 | for_each_set_bit_from(idx, c->idxmsk, X86_PMC_IDX_FIXED) { |
654 | if (!__test_and_set_bit(idx, sched->state.used)) | 654 | if (!__test_and_set_bit(idx, sched->state.used)) |
655 | goto done; | 655 | goto done; |
656 | } | 656 | } |
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index 313fb5cddbce..43e2b1cff0a7 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
@@ -306,10 +306,10 @@ void __init native_init_IRQ(void) | |||
306 | * us. (some of these will be overridden and become | 306 | * us. (some of these will be overridden and become |
307 | * 'special' SMP interrupts) | 307 | * 'special' SMP interrupts) |
308 | */ | 308 | */ |
309 | for (i = FIRST_EXTERNAL_VECTOR; i < NR_VECTORS; i++) { | 309 | i = FIRST_EXTERNAL_VECTOR; |
310 | for_each_clear_bit_from(i, used_vectors, NR_VECTORS) { | ||
310 | /* IA32_SYSCALL_VECTOR could be used in trap_init already. */ | 311 | /* IA32_SYSCALL_VECTOR could be used in trap_init already. */ |
311 | if (!test_bit(i, used_vectors)) | 312 | set_intr_gate(i, interrupt[i - FIRST_EXTERNAL_VECTOR]); |
312 | set_intr_gate(i, interrupt[i-FIRST_EXTERNAL_VECTOR]); | ||
313 | } | 313 | } |
314 | 314 | ||
315 | if (!acpi_ioapic && !of_ioapic) | 315 | if (!acpi_ioapic && !of_ioapic) |
diff --git a/arch/x86/um/mem_32.c b/arch/x86/um/mem_32.c index 639900a6fde9..f40281e5d6a2 100644 --- a/arch/x86/um/mem_32.c +++ b/arch/x86/um/mem_32.c | |||
@@ -23,14 +23,6 @@ static int __init gate_vma_init(void) | |||
23 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; | 23 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; |
24 | gate_vma.vm_page_prot = __P101; | 24 | gate_vma.vm_page_prot = __P101; |
25 | 25 | ||
26 | /* | ||
27 | * Make sure the vDSO gets into every core dump. | ||
28 | * Dumping its contents makes post-mortem fully interpretable later | ||
29 | * without matching up the same kernel and hardware config to see | ||
30 | * what PC values meant. | ||
31 | */ | ||
32 | gate_vma.vm_flags |= VM_ALWAYSDUMP; | ||
33 | |||
34 | return 0; | 26 | return 0; |
35 | } | 27 | } |
36 | __initcall(gate_vma_init); | 28 | __initcall(gate_vma_init); |
diff --git a/arch/x86/um/vdso/vma.c b/arch/x86/um/vdso/vma.c index 91f4ec9a0a56..af91901babb8 100644 --- a/arch/x86/um/vdso/vma.c +++ b/arch/x86/um/vdso/vma.c | |||
@@ -64,8 +64,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
64 | 64 | ||
65 | err = install_special_mapping(mm, um_vdso_addr, PAGE_SIZE, | 65 | err = install_special_mapping(mm, um_vdso_addr, PAGE_SIZE, |
66 | VM_READ|VM_EXEC| | 66 | VM_READ|VM_EXEC| |
67 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 67 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
68 | VM_ALWAYSDUMP, | ||
69 | vdsop); | 68 | vdsop); |
70 | 69 | ||
71 | up_write(&mm->mmap_sem); | 70 | up_write(&mm->mmap_sem); |
diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c index 468d591dde31..a944020fa859 100644 --- a/arch/x86/vdso/vdso32-setup.c +++ b/arch/x86/vdso/vdso32-setup.c | |||
@@ -250,13 +250,7 @@ static int __init gate_vma_init(void) | |||
250 | gate_vma.vm_end = FIXADDR_USER_END; | 250 | gate_vma.vm_end = FIXADDR_USER_END; |
251 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; | 251 | gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC; |
252 | gate_vma.vm_page_prot = __P101; | 252 | gate_vma.vm_page_prot = __P101; |
253 | /* | 253 | |
254 | * Make sure the vDSO gets into every core dump. | ||
255 | * Dumping its contents makes post-mortem fully interpretable later | ||
256 | * without matching up the same kernel and hardware config to see | ||
257 | * what PC values meant. | ||
258 | */ | ||
259 | gate_vma.vm_flags |= VM_ALWAYSDUMP; | ||
260 | return 0; | 254 | return 0; |
261 | } | 255 | } |
262 | 256 | ||
@@ -343,17 +337,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
343 | if (compat_uses_vma || !compat) { | 337 | if (compat_uses_vma || !compat) { |
344 | /* | 338 | /* |
345 | * MAYWRITE to allow gdb to COW and set breakpoints | 339 | * MAYWRITE to allow gdb to COW and set breakpoints |
346 | * | ||
347 | * Make sure the vDSO gets into every core dump. | ||
348 | * Dumping its contents makes post-mortem fully | ||
349 | * interpretable later without matching up the same | ||
350 | * kernel and hardware config to see what PC values | ||
351 | * meant. | ||
352 | */ | 340 | */ |
353 | ret = install_special_mapping(mm, addr, PAGE_SIZE, | 341 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
354 | VM_READ|VM_EXEC| | 342 | VM_READ|VM_EXEC| |
355 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 343 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
356 | VM_ALWAYSDUMP, | ||
357 | vdso32_pages); | 344 | vdso32_pages); |
358 | 345 | ||
359 | if (ret) | 346 | if (ret) |
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c index 153407c35b75..17e18279649f 100644 --- a/arch/x86/vdso/vma.c +++ b/arch/x86/vdso/vma.c | |||
@@ -124,8 +124,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
124 | 124 | ||
125 | ret = install_special_mapping(mm, addr, vdso_size, | 125 | ret = install_special_mapping(mm, addr, vdso_size, |
126 | VM_READ|VM_EXEC| | 126 | VM_READ|VM_EXEC| |
127 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC| | 127 | VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC, |
128 | VM_ALWAYSDUMP, | ||
129 | vdso_pages); | 128 | vdso_pages); |
130 | if (ret) { | 129 | if (ret) { |
131 | current->mm->context.vdso = NULL; | 130 | current->mm->context.vdso = NULL; |
diff --git a/arch/xtensa/include/asm/mman.h b/arch/xtensa/include/asm/mman.h index 30789010733d..25bc6c1309c3 100644 --- a/arch/xtensa/include/asm/mman.h +++ b/arch/xtensa/include/asm/mman.h | |||
@@ -86,6 +86,10 @@ | |||
86 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ | 86 | #define MADV_HUGEPAGE 14 /* Worth backing with hugepages */ |
87 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ | 87 | #define MADV_NOHUGEPAGE 15 /* Not worth backing with hugepages */ |
88 | 88 | ||
89 | #define MADV_DONTDUMP 16 /* Explicity exclude from the core dump, | ||
90 | overrides the coredump filter bits */ | ||
91 | #define MADV_DODUMP 17 /* Clear the MADV_NODUMP flag */ | ||
92 | |||
89 | /* compatibility flags */ | 93 | /* compatibility flags */ |
90 | #define MAP_FILE 0 | 94 | #define MAP_FILE 0 |
91 | 95 | ||