aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2011-07-28 11:25:46 -0400
committerArnd Bergmann <arnd@arndb.de>2011-07-28 11:25:46 -0400
commit6124a4e430b64d1577438c8648c59e996d02e73e (patch)
tree49cfafad785d1c9e403a5b0d755298b9af2c260f /kernel
parent8e267f3da5f117d2f1316cf6ddf740f93f1c73aa (diff)
parent580975d7f48d7d047e22bb0f42adf7557801d8d4 (diff)
Merge branch 'imx/dt' into next/dt
Diffstat (limited to 'kernel')
-rw-r--r--kernel/Makefile5
-rw-r--r--kernel/audit.c2
-rw-r--r--kernel/auditsc.c2
-rw-r--r--kernel/cgroup.c10
-rw-r--r--kernel/configs.c4
-rw-r--r--kernel/cpuset.c10
-rw-r--r--kernel/debug/debug_core.c2
-rw-r--r--kernel/exit.c3
-rw-r--r--kernel/fork.c88
-rw-r--r--kernel/futex.c4
-rw-r--r--kernel/gcov/Kconfig2
-rw-r--r--kernel/irq/devres.c2
-rw-r--r--kernel/kexec.c2
-rw-r--r--kernel/notifier.c31
-rw-r--r--kernel/panic.c2
-rw-r--r--kernel/pid.c1
-rw-r--r--kernel/power/Kconfig4
-rw-r--r--kernel/rcupdate.c2
-rw-r--r--kernel/rcutorture.c4
-rw-r--r--kernel/rcutree_trace.c2
-rw-r--r--kernel/rwsem.c2
-rw-r--r--kernel/sched.c1
-rw-r--r--kernel/stop_machine.c2
-rw-r--r--kernel/sys.c32
-rw-r--r--kernel/taskstats.c2
-rw-r--r--kernel/trace/trace.h2
-rw-r--r--kernel/trace/trace_mmiotrace.c2
27 files changed, 120 insertions, 105 deletions
diff --git a/kernel/Makefile b/kernel/Makefile
index 2d64cfcc8b42..d06467fc8f7c 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -125,11 +125,10 @@ targets += config_data.gz
125$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE 125$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
126 $(call if_changed,gzip) 126 $(call if_changed,gzip)
127 127
128quiet_cmd_ikconfiggz = IKCFG $@ 128 filechk_ikconfiggz = (echo "static const char kernel_config_data[] __used = MAGIC_START"; cat $< | scripts/bin2c; echo "MAGIC_END;")
129 cmd_ikconfiggz = (echo "static const char kernel_config_data[] __used = MAGIC_START"; cat $< | scripts/bin2c; echo "MAGIC_END;") > $@
130targets += config_data.h 129targets += config_data.h
131$(obj)/config_data.h: $(obj)/config_data.gz FORCE 130$(obj)/config_data.h: $(obj)/config_data.gz FORCE
132 $(call if_changed,ikconfiggz) 131 $(call filechk,ikconfiggz)
133 132
134$(obj)/time.o: $(obj)/timeconst.h 133$(obj)/time.o: $(obj)/timeconst.h
135 134
diff --git a/kernel/audit.c b/kernel/audit.c
index 52501b5d4902..0a1355ca3d79 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -43,7 +43,7 @@
43 43
44#include <linux/init.h> 44#include <linux/init.h>
45#include <asm/types.h> 45#include <asm/types.h>
46#include <asm/atomic.h> 46#include <linux/atomic.h>
47#include <linux/mm.h> 47#include <linux/mm.h>
48#include <linux/module.h> 48#include <linux/module.h>
49#include <linux/slab.h> 49#include <linux/slab.h>
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 00d79df03e76..ce4b054acee5 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -44,7 +44,7 @@
44 44
45#include <linux/init.h> 45#include <linux/init.h>
46#include <asm/types.h> 46#include <asm/types.h>
47#include <asm/atomic.h> 47#include <linux/atomic.h>
48#include <linux/fs.h> 48#include <linux/fs.h>
49#include <linux/namei.h> 49#include <linux/namei.h>
50#include <linux/mm.h> 50#include <linux/mm.h>
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index e1c72c0f512b..984458035d4a 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -59,7 +59,7 @@
59#include <linux/poll.h> 59#include <linux/poll.h>
60#include <linux/flex_array.h> /* used in cgroup_attach_proc */ 60#include <linux/flex_array.h> /* used in cgroup_attach_proc */
61 61
62#include <asm/atomic.h> 62#include <linux/atomic.h>
63 63
64static DEFINE_MUTEX(cgroup_mutex); 64static DEFINE_MUTEX(cgroup_mutex);
65 65
@@ -1697,7 +1697,6 @@ int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen)
1697{ 1697{
1698 char *start; 1698 char *start;
1699 struct dentry *dentry = rcu_dereference_check(cgrp->dentry, 1699 struct dentry *dentry = rcu_dereference_check(cgrp->dentry,
1700 rcu_read_lock_held() ||
1701 cgroup_lock_is_held()); 1700 cgroup_lock_is_held());
1702 1701
1703 if (!dentry || cgrp == dummytop) { 1702 if (!dentry || cgrp == dummytop) {
@@ -1723,7 +1722,6 @@ int cgroup_path(const struct cgroup *cgrp, char *buf, int buflen)
1723 break; 1722 break;
1724 1723
1725 dentry = rcu_dereference_check(cgrp->dentry, 1724 dentry = rcu_dereference_check(cgrp->dentry,
1726 rcu_read_lock_held() ||
1727 cgroup_lock_is_held()); 1725 cgroup_lock_is_held());
1728 if (!cgrp->parent) 1726 if (!cgrp->parent)
1729 continue; 1727 continue;
@@ -4814,8 +4812,7 @@ unsigned short css_id(struct cgroup_subsys_state *css)
4814 * on this or this is under rcu_read_lock(). Once css->id is allocated, 4812 * on this or this is under rcu_read_lock(). Once css->id is allocated,
4815 * it's unchanged until freed. 4813 * it's unchanged until freed.
4816 */ 4814 */
4817 cssid = rcu_dereference_check(css->id, 4815 cssid = rcu_dereference_check(css->id, atomic_read(&css->refcnt));
4818 rcu_read_lock_held() || atomic_read(&css->refcnt));
4819 4816
4820 if (cssid) 4817 if (cssid)
4821 return cssid->id; 4818 return cssid->id;
@@ -4827,8 +4824,7 @@ unsigned short css_depth(struct cgroup_subsys_state *css)
4827{ 4824{
4828 struct css_id *cssid; 4825 struct css_id *cssid;
4829 4826
4830 cssid = rcu_dereference_check(css->id, 4827 cssid = rcu_dereference_check(css->id, atomic_read(&css->refcnt));
4831 rcu_read_lock_held() || atomic_read(&css->refcnt));
4832 4828
4833 if (cssid) 4829 if (cssid)
4834 return cssid->depth; 4830 return cssid->depth;
diff --git a/kernel/configs.c b/kernel/configs.c
index b4066b44a99d..42e8fa075eed 100644
--- a/kernel/configs.c
+++ b/kernel/configs.c
@@ -92,8 +92,8 @@ static void __exit ikconfig_cleanup(void)
92module_init(ikconfig_init); 92module_init(ikconfig_init);
93module_exit(ikconfig_cleanup); 93module_exit(ikconfig_cleanup);
94 94
95#endif /* CONFIG_IKCONFIG_PROC */
96
95MODULE_LICENSE("GPL"); 97MODULE_LICENSE("GPL");
96MODULE_AUTHOR("Randy Dunlap"); 98MODULE_AUTHOR("Randy Dunlap");
97MODULE_DESCRIPTION("Echo the kernel .config file used to build the kernel"); 99MODULE_DESCRIPTION("Echo the kernel .config file used to build the kernel");
98
99#endif /* CONFIG_IKCONFIG_PROC */
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 9c9b7545c810..10131fdaff70 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -55,7 +55,7 @@
55#include <linux/sort.h> 55#include <linux/sort.h>
56 56
57#include <asm/uaccess.h> 57#include <asm/uaccess.h>
58#include <asm/atomic.h> 58#include <linux/atomic.h>
59#include <linux/mutex.h> 59#include <linux/mutex.h>
60#include <linux/workqueue.h> 60#include <linux/workqueue.h>
61#include <linux/cgroup.h> 61#include <linux/cgroup.h>
@@ -2460,11 +2460,19 @@ static int cpuset_spread_node(int *rotor)
2460 2460
2461int cpuset_mem_spread_node(void) 2461int cpuset_mem_spread_node(void)
2462{ 2462{
2463 if (current->cpuset_mem_spread_rotor == NUMA_NO_NODE)
2464 current->cpuset_mem_spread_rotor =
2465 node_random(&current->mems_allowed);
2466
2463 return cpuset_spread_node(&current->cpuset_mem_spread_rotor); 2467 return cpuset_spread_node(&current->cpuset_mem_spread_rotor);
2464} 2468}
2465 2469
2466int cpuset_slab_spread_node(void) 2470int cpuset_slab_spread_node(void)
2467{ 2471{
2472 if (current->cpuset_slab_spread_rotor == NUMA_NO_NODE)
2473 current->cpuset_slab_spread_rotor =
2474 node_random(&current->mems_allowed);
2475
2468 return cpuset_spread_node(&current->cpuset_slab_spread_rotor); 2476 return cpuset_spread_node(&current->cpuset_slab_spread_rotor);
2469} 2477}
2470 2478
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c
index bad6786dee88..0d7c08784efb 100644
--- a/kernel/debug/debug_core.c
+++ b/kernel/debug/debug_core.c
@@ -51,7 +51,7 @@
51 51
52#include <asm/cacheflush.h> 52#include <asm/cacheflush.h>
53#include <asm/byteorder.h> 53#include <asm/byteorder.h>
54#include <asm/atomic.h> 54#include <linux/atomic.h>
55#include <asm/system.h> 55#include <asm/system.h>
56 56
57#include "debug_core.h" 57#include "debug_core.h"
diff --git a/kernel/exit.c b/kernel/exit.c
index 73bb192a3d32..2913b3509d42 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -85,7 +85,6 @@ static void __exit_signal(struct task_struct *tsk)
85 struct tty_struct *uninitialized_var(tty); 85 struct tty_struct *uninitialized_var(tty);
86 86
87 sighand = rcu_dereference_check(tsk->sighand, 87 sighand = rcu_dereference_check(tsk->sighand,
88 rcu_read_lock_held() ||
89 lockdep_tasklist_lock_is_held()); 88 lockdep_tasklist_lock_is_held());
90 spin_lock(&sighand->siglock); 89 spin_lock(&sighand->siglock);
91 90
@@ -898,7 +897,6 @@ NORET_TYPE void do_exit(long code)
898 897
899 profile_task_exit(tsk); 898 profile_task_exit(tsk);
900 899
901 WARN_ON(atomic_read(&tsk->fs_excl));
902 WARN_ON(blk_needs_flush_plug(tsk)); 900 WARN_ON(blk_needs_flush_plug(tsk));
903 901
904 if (unlikely(in_interrupt())) 902 if (unlikely(in_interrupt()))
@@ -982,6 +980,7 @@ NORET_TYPE void do_exit(long code)
982 trace_sched_process_exit(tsk); 980 trace_sched_process_exit(tsk);
983 981
984 exit_sem(tsk); 982 exit_sem(tsk);
983 exit_shm(tsk);
985 exit_files(tsk); 984 exit_files(tsk);
986 exit_fs(tsk); 985 exit_fs(tsk);
987 check_stack_usage(); 986 check_stack_usage();
diff --git a/kernel/fork.c b/kernel/fork.c
index aeae5b11b62e..e7ceaca89609 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -80,7 +80,7 @@
80 * Protected counters by write_lock_irq(&tasklist_lock) 80 * Protected counters by write_lock_irq(&tasklist_lock)
81 */ 81 */
82unsigned long total_forks; /* Handle normal Linux uptimes. */ 82unsigned long total_forks; /* Handle normal Linux uptimes. */
83int nr_threads; /* The idle threads do not count.. */ 83int nr_threads; /* The idle threads do not count.. */
84 84
85int max_threads; /* tunable limit on nr_threads */ 85int max_threads; /* tunable limit on nr_threads */
86 86
@@ -232,7 +232,7 @@ void __init fork_init(unsigned long mempages)
232 /* 232 /*
233 * we need to allow at least 20 threads to boot a system 233 * we need to allow at least 20 threads to boot a system
234 */ 234 */
235 if(max_threads < 20) 235 if (max_threads < 20)
236 max_threads = 20; 236 max_threads = 20;
237 237
238 init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2; 238 init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
@@ -268,7 +268,7 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
268 return NULL; 268 return NULL;
269 } 269 }
270 270
271 err = arch_dup_task_struct(tsk, orig); 271 err = arch_dup_task_struct(tsk, orig);
272 if (err) 272 if (err)
273 goto out; 273 goto out;
274 274
@@ -288,9 +288,11 @@ static struct task_struct *dup_task_struct(struct task_struct *orig)
288 tsk->stack_canary = get_random_int(); 288 tsk->stack_canary = get_random_int();
289#endif 289#endif
290 290
291 /* One for us, one for whoever does the "release_task()" (usually parent) */ 291 /*
292 atomic_set(&tsk->usage,2); 292 * One for us, one for whoever does the "release_task()" (usually
293 atomic_set(&tsk->fs_excl, 0); 293 * parent)
294 */
295 atomic_set(&tsk->usage, 2);
294#ifdef CONFIG_BLK_DEV_IO_TRACE 296#ifdef CONFIG_BLK_DEV_IO_TRACE
295 tsk->btrace_seq = 0; 297 tsk->btrace_seq = 0;
296#endif 298#endif
@@ -438,7 +440,7 @@ fail_nomem:
438 goto out; 440 goto out;
439} 441}
440 442
441static inline int mm_alloc_pgd(struct mm_struct * mm) 443static inline int mm_alloc_pgd(struct mm_struct *mm)
442{ 444{
443 mm->pgd = pgd_alloc(mm); 445 mm->pgd = pgd_alloc(mm);
444 if (unlikely(!mm->pgd)) 446 if (unlikely(!mm->pgd))
@@ -446,7 +448,7 @@ static inline int mm_alloc_pgd(struct mm_struct * mm)
446 return 0; 448 return 0;
447} 449}
448 450
449static inline void mm_free_pgd(struct mm_struct * mm) 451static inline void mm_free_pgd(struct mm_struct *mm)
450{ 452{
451 pgd_free(mm, mm->pgd); 453 pgd_free(mm, mm->pgd);
452} 454}
@@ -483,7 +485,7 @@ static void mm_init_aio(struct mm_struct *mm)
483#endif 485#endif
484} 486}
485 487
486static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p) 488static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p)
487{ 489{
488 atomic_set(&mm->mm_users, 1); 490 atomic_set(&mm->mm_users, 1);
489 atomic_set(&mm->mm_count, 1); 491 atomic_set(&mm->mm_count, 1);
@@ -514,9 +516,9 @@ static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p)
514/* 516/*
515 * Allocate and initialize an mm_struct. 517 * Allocate and initialize an mm_struct.
516 */ 518 */
517struct mm_struct * mm_alloc(void) 519struct mm_struct *mm_alloc(void)
518{ 520{
519 struct mm_struct * mm; 521 struct mm_struct *mm;
520 522
521 mm = allocate_mm(); 523 mm = allocate_mm();
522 if (!mm) 524 if (!mm)
@@ -584,7 +586,7 @@ void added_exe_file_vma(struct mm_struct *mm)
584void removed_exe_file_vma(struct mm_struct *mm) 586void removed_exe_file_vma(struct mm_struct *mm)
585{ 587{
586 mm->num_exe_file_vmas--; 588 mm->num_exe_file_vmas--;
587 if ((mm->num_exe_file_vmas == 0) && mm->exe_file){ 589 if ((mm->num_exe_file_vmas == 0) && mm->exe_file) {
588 fput(mm->exe_file); 590 fput(mm->exe_file);
589 mm->exe_file = NULL; 591 mm->exe_file = NULL;
590 } 592 }
@@ -776,9 +778,9 @@ fail_nocontext:
776 return NULL; 778 return NULL;
777} 779}
778 780
779static int copy_mm(unsigned long clone_flags, struct task_struct * tsk) 781static int copy_mm(unsigned long clone_flags, struct task_struct *tsk)
780{ 782{
781 struct mm_struct * mm, *oldmm; 783 struct mm_struct *mm, *oldmm;
782 int retval; 784 int retval;
783 785
784 tsk->min_flt = tsk->maj_flt = 0; 786 tsk->min_flt = tsk->maj_flt = 0;
@@ -845,7 +847,7 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
845 return 0; 847 return 0;
846} 848}
847 849
848static int copy_files(unsigned long clone_flags, struct task_struct * tsk) 850static int copy_files(unsigned long clone_flags, struct task_struct *tsk)
849{ 851{
850 struct files_struct *oldf, *newf; 852 struct files_struct *oldf, *newf;
851 int error = 0; 853 int error = 0;
@@ -1167,13 +1169,17 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1167 cgroup_fork(p); 1169 cgroup_fork(p);
1168#ifdef CONFIG_NUMA 1170#ifdef CONFIG_NUMA
1169 p->mempolicy = mpol_dup(p->mempolicy); 1171 p->mempolicy = mpol_dup(p->mempolicy);
1170 if (IS_ERR(p->mempolicy)) { 1172 if (IS_ERR(p->mempolicy)) {
1171 retval = PTR_ERR(p->mempolicy); 1173 retval = PTR_ERR(p->mempolicy);
1172 p->mempolicy = NULL; 1174 p->mempolicy = NULL;
1173 goto bad_fork_cleanup_cgroup; 1175 goto bad_fork_cleanup_cgroup;
1174 } 1176 }
1175 mpol_fix_fork_child_flag(p); 1177 mpol_fix_fork_child_flag(p);
1176#endif 1178#endif
1179#ifdef CONFIG_CPUSETS
1180 p->cpuset_mem_spread_rotor = NUMA_NO_NODE;
1181 p->cpuset_slab_spread_rotor = NUMA_NO_NODE;
1182#endif
1177#ifdef CONFIG_TRACE_IRQFLAGS 1183#ifdef CONFIG_TRACE_IRQFLAGS
1178 p->irq_events = 0; 1184 p->irq_events = 0;
1179#ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW 1185#ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW
@@ -1213,25 +1219,33 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1213 retval = perf_event_init_task(p); 1219 retval = perf_event_init_task(p);
1214 if (retval) 1220 if (retval)
1215 goto bad_fork_cleanup_policy; 1221 goto bad_fork_cleanup_policy;
1216 1222 retval = audit_alloc(p);
1217 if ((retval = audit_alloc(p))) 1223 if (retval)
1218 goto bad_fork_cleanup_policy; 1224 goto bad_fork_cleanup_policy;
1219 /* copy all the process information */ 1225 /* copy all the process information */
1220 if ((retval = copy_semundo(clone_flags, p))) 1226 retval = copy_semundo(clone_flags, p);
1227 if (retval)
1221 goto bad_fork_cleanup_audit; 1228 goto bad_fork_cleanup_audit;
1222 if ((retval = copy_files(clone_flags, p))) 1229 retval = copy_files(clone_flags, p);
1230 if (retval)
1223 goto bad_fork_cleanup_semundo; 1231 goto bad_fork_cleanup_semundo;
1224 if ((retval = copy_fs(clone_flags, p))) 1232 retval = copy_fs(clone_flags, p);
1233 if (retval)
1225 goto bad_fork_cleanup_files; 1234 goto bad_fork_cleanup_files;
1226 if ((retval = copy_sighand(clone_flags, p))) 1235 retval = copy_sighand(clone_flags, p);
1236 if (retval)
1227 goto bad_fork_cleanup_fs; 1237 goto bad_fork_cleanup_fs;
1228 if ((retval = copy_signal(clone_flags, p))) 1238 retval = copy_signal(clone_flags, p);
1239 if (retval)
1229 goto bad_fork_cleanup_sighand; 1240 goto bad_fork_cleanup_sighand;
1230 if ((retval = copy_mm(clone_flags, p))) 1241 retval = copy_mm(clone_flags, p);
1242 if (retval)
1231 goto bad_fork_cleanup_signal; 1243 goto bad_fork_cleanup_signal;
1232 if ((retval = copy_namespaces(clone_flags, p))) 1244 retval = copy_namespaces(clone_flags, p);
1245 if (retval)
1233 goto bad_fork_cleanup_mm; 1246 goto bad_fork_cleanup_mm;
1234 if ((retval = copy_io(clone_flags, p))) 1247 retval = copy_io(clone_flags, p);
1248 if (retval)
1235 goto bad_fork_cleanup_namespaces; 1249 goto bad_fork_cleanup_namespaces;
1236 retval = copy_thread(clone_flags, stack_start, stack_size, p, regs); 1250 retval = copy_thread(clone_flags, stack_start, stack_size, p, regs);
1237 if (retval) 1251 if (retval)
@@ -1253,7 +1267,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1253 /* 1267 /*
1254 * Clear TID on mm_release()? 1268 * Clear TID on mm_release()?
1255 */ 1269 */
1256 p->clear_child_tid = (clone_flags & CLONE_CHILD_CLEARTID) ? child_tidptr: NULL; 1270 p->clear_child_tid = (clone_flags & CLONE_CHILD_CLEARTID) ? child_tidptr : NULL;
1257#ifdef CONFIG_BLOCK 1271#ifdef CONFIG_BLOCK
1258 p->plug = NULL; 1272 p->plug = NULL;
1259#endif 1273#endif
@@ -1321,7 +1335,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
1321 * it's process group. 1335 * it's process group.
1322 * A fatal signal pending means that current will exit, so the new 1336 * A fatal signal pending means that current will exit, so the new
1323 * thread can't slip out of an OOM kill (or normal SIGKILL). 1337 * thread can't slip out of an OOM kill (or normal SIGKILL).
1324 */ 1338 */
1325 recalc_sigpending(); 1339 recalc_sigpending();
1326 if (signal_pending(current)) { 1340 if (signal_pending(current)) {
1327 spin_unlock(&current->sighand->siglock); 1341 spin_unlock(&current->sighand->siglock);
@@ -1682,12 +1696,14 @@ SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
1682 */ 1696 */
1683 if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM)) 1697 if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM))
1684 do_sysvsem = 1; 1698 do_sysvsem = 1;
1685 if ((err = unshare_fs(unshare_flags, &new_fs))) 1699 err = unshare_fs(unshare_flags, &new_fs);
1700 if (err)
1686 goto bad_unshare_out; 1701 goto bad_unshare_out;
1687 if ((err = unshare_fd(unshare_flags, &new_fd))) 1702 err = unshare_fd(unshare_flags, &new_fd);
1703 if (err)
1688 goto bad_unshare_cleanup_fs; 1704 goto bad_unshare_cleanup_fs;
1689 if ((err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, 1705 err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy, new_fs);
1690 new_fs))) 1706 if (err)
1691 goto bad_unshare_cleanup_fd; 1707 goto bad_unshare_cleanup_fd;
1692 1708
1693 if (new_fs || new_fd || do_sysvsem || new_nsproxy) { 1709 if (new_fs || new_fd || do_sysvsem || new_nsproxy) {
diff --git a/kernel/futex.c b/kernel/futex.c
index 3fbc76cbb9aa..0a308970c24a 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -355,8 +355,8 @@ static int fault_in_user_writeable(u32 __user *uaddr)
355 int ret; 355 int ret;
356 356
357 down_read(&mm->mmap_sem); 357 down_read(&mm->mmap_sem);
358 ret = get_user_pages(current, mm, (unsigned long)uaddr, 358 ret = fixup_user_fault(current, mm, (unsigned long)uaddr,
359 1, 1, 0, NULL, NULL); 359 FAULT_FLAG_WRITE);
360 up_read(&mm->mmap_sem); 360 up_read(&mm->mmap_sem);
361 361
362 return ret < 0 ? ret : 0; 362 return ret < 0 ? ret : 0;
diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
index 5bf924d80b5c..a92028196cc1 100644
--- a/kernel/gcov/Kconfig
+++ b/kernel/gcov/Kconfig
@@ -3,7 +3,7 @@ menu "GCOV-based kernel profiling"
3config GCOV_KERNEL 3config GCOV_KERNEL
4 bool "Enable gcov-based kernel profiling" 4 bool "Enable gcov-based kernel profiling"
5 depends on DEBUG_FS 5 depends on DEBUG_FS
6 select CONSTRUCTORS 6 select CONSTRUCTORS if !UML
7 default n 7 default n
8 ---help--- 8 ---help---
9 This option enables gcov-based code profiling (e.g. for code coverage 9 This option enables gcov-based code profiling (e.g. for code coverage
diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c
index 1ef4ffcdfa55..bd8e788d71e0 100644
--- a/kernel/irq/devres.c
+++ b/kernel/irq/devres.c
@@ -87,8 +87,8 @@ void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id)
87{ 87{
88 struct irq_devres match_data = { irq, dev_id }; 88 struct irq_devres match_data = { irq, dev_id };
89 89
90 free_irq(irq, dev_id);
91 WARN_ON(devres_destroy(dev, devm_irq_release, devm_irq_match, 90 WARN_ON(devres_destroy(dev, devm_irq_release, devm_irq_match,
92 &match_data)); 91 &match_data));
92 free_irq(irq, dev_id);
93} 93}
94EXPORT_SYMBOL(devm_free_irq); 94EXPORT_SYMBOL(devm_free_irq);
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 8d814cbc8109..296fbc84d659 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -1095,7 +1095,7 @@ size_t crash_get_memory_size(void)
1095 size_t size = 0; 1095 size_t size = 0;
1096 mutex_lock(&kexec_mutex); 1096 mutex_lock(&kexec_mutex);
1097 if (crashk_res.end != crashk_res.start) 1097 if (crashk_res.end != crashk_res.start)
1098 size = crashk_res.end - crashk_res.start + 1; 1098 size = resource_size(&crashk_res);
1099 mutex_unlock(&kexec_mutex); 1099 mutex_unlock(&kexec_mutex);
1100 return size; 1100 return size;
1101} 1101}
diff --git a/kernel/notifier.c b/kernel/notifier.c
index 2488ba7eb568..8d7b435806c9 100644
--- a/kernel/notifier.c
+++ b/kernel/notifier.c
@@ -525,37 +525,6 @@ void srcu_init_notifier_head(struct srcu_notifier_head *nh)
525} 525}
526EXPORT_SYMBOL_GPL(srcu_init_notifier_head); 526EXPORT_SYMBOL_GPL(srcu_init_notifier_head);
527 527
528/**
529 * register_reboot_notifier - Register function to be called at reboot time
530 * @nb: Info about notifier function to be called
531 *
532 * Registers a function with the list of functions
533 * to be called at reboot time.
534 *
535 * Currently always returns zero, as blocking_notifier_chain_register()
536 * always returns zero.
537 */
538int register_reboot_notifier(struct notifier_block *nb)
539{
540 return blocking_notifier_chain_register(&reboot_notifier_list, nb);
541}
542EXPORT_SYMBOL(register_reboot_notifier);
543
544/**
545 * unregister_reboot_notifier - Unregister previously registered reboot notifier
546 * @nb: Hook to be unregistered
547 *
548 * Unregisters a previously registered reboot
549 * notifier function.
550 *
551 * Returns zero on success, or %-ENOENT on failure.
552 */
553int unregister_reboot_notifier(struct notifier_block *nb)
554{
555 return blocking_notifier_chain_unregister(&reboot_notifier_list, nb);
556}
557EXPORT_SYMBOL(unregister_reboot_notifier);
558
559static ATOMIC_NOTIFIER_HEAD(die_chain); 528static ATOMIC_NOTIFIER_HEAD(die_chain);
560 529
561int notrace __kprobes notify_die(enum die_val val, const char *str, 530int notrace __kprobes notify_die(enum die_val val, const char *str,
diff --git a/kernel/panic.c b/kernel/panic.c
index 69231670eb95..d7bb6974efb5 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -119,6 +119,8 @@ NORET_TYPE void panic(const char * fmt, ...)
119 } 119 }
120 mdelay(PANIC_TIMER_STEP); 120 mdelay(PANIC_TIMER_STEP);
121 } 121 }
122 }
123 if (panic_timeout != 0) {
122 /* 124 /*
123 * This will not be a clean reboot, with everything 125 * This will not be a clean reboot, with everything
124 * shutting down. But if there is a chance of 126 * shutting down. But if there is a chance of
diff --git a/kernel/pid.c b/kernel/pid.c
index 57a8346a270e..e432057f3b21 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -405,7 +405,6 @@ struct task_struct *pid_task(struct pid *pid, enum pid_type type)
405 if (pid) { 405 if (pid) {
406 struct hlist_node *first; 406 struct hlist_node *first;
407 first = rcu_dereference_check(hlist_first_rcu(&pid->tasks[type]), 407 first = rcu_dereference_check(hlist_first_rcu(&pid->tasks[type]),
408 rcu_read_lock_held() ||
409 lockdep_tasklist_lock_is_held()); 408 lockdep_tasklist_lock_is_held());
410 if (first) 409 if (first)
411 result = hlist_entry(first, struct task_struct, pids[(type)].node); 410 result = hlist_entry(first, struct task_struct, pids[(type)].node);
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
index 7b856b3458d2..b1914cb9095c 100644
--- a/kernel/power/Kconfig
+++ b/kernel/power/Kconfig
@@ -193,8 +193,8 @@ config APM_EMULATION
193 notification of APM "events" (e.g. battery status change). 193 notification of APM "events" (e.g. battery status change).
194 194
195 In order to use APM, you will need supporting software. For location 195 In order to use APM, you will need supporting software. For location
196 and more information, read <file:Documentation/power/pm.txt> and the 196 and more information, read <file:Documentation/power/apm-acpi.txt>
197 Battery Powered Linux mini-HOWTO, available from 197 and the Battery Powered Linux mini-HOWTO, available from
198 <http://www.tldp.org/docs.html#howto>. 198 <http://www.tldp.org/docs.html#howto>.
199 199
200 This driver does not spin down disk drives (see the hdparm(8) 200 This driver does not spin down disk drives (see the hdparm(8)
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
index 7784bd216b6a..ddddb320be61 100644
--- a/kernel/rcupdate.c
+++ b/kernel/rcupdate.c
@@ -37,7 +37,7 @@
37#include <linux/smp.h> 37#include <linux/smp.h>
38#include <linux/interrupt.h> 38#include <linux/interrupt.h>
39#include <linux/sched.h> 39#include <linux/sched.h>
40#include <asm/atomic.h> 40#include <linux/atomic.h>
41#include <linux/bitops.h> 41#include <linux/bitops.h>
42#include <linux/percpu.h> 42#include <linux/percpu.h>
43#include <linux/notifier.h> 43#include <linux/notifier.h>
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index 2e138db03382..98f51b13bb7e 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -33,7 +33,7 @@
33#include <linux/rcupdate.h> 33#include <linux/rcupdate.h>
34#include <linux/interrupt.h> 34#include <linux/interrupt.h>
35#include <linux/sched.h> 35#include <linux/sched.h>
36#include <asm/atomic.h> 36#include <linux/atomic.h>
37#include <linux/bitops.h> 37#include <linux/bitops.h>
38#include <linux/completion.h> 38#include <linux/completion.h>
39#include <linux/moduleparam.h> 39#include <linux/moduleparam.h>
@@ -941,7 +941,6 @@ static void rcu_torture_timer(unsigned long unused)
941 idx = cur_ops->readlock(); 941 idx = cur_ops->readlock();
942 completed = cur_ops->completed(); 942 completed = cur_ops->completed();
943 p = rcu_dereference_check(rcu_torture_current, 943 p = rcu_dereference_check(rcu_torture_current,
944 rcu_read_lock_held() ||
945 rcu_read_lock_bh_held() || 944 rcu_read_lock_bh_held() ||
946 rcu_read_lock_sched_held() || 945 rcu_read_lock_sched_held() ||
947 srcu_read_lock_held(&srcu_ctl)); 946 srcu_read_lock_held(&srcu_ctl));
@@ -1002,7 +1001,6 @@ rcu_torture_reader(void *arg)
1002 idx = cur_ops->readlock(); 1001 idx = cur_ops->readlock();
1003 completed = cur_ops->completed(); 1002 completed = cur_ops->completed();
1004 p = rcu_dereference_check(rcu_torture_current, 1003 p = rcu_dereference_check(rcu_torture_current,
1005 rcu_read_lock_held() ||
1006 rcu_read_lock_bh_held() || 1004 rcu_read_lock_bh_held() ||
1007 rcu_read_lock_sched_held() || 1005 rcu_read_lock_sched_held() ||
1008 srcu_read_lock_held(&srcu_ctl)); 1006 srcu_read_lock_held(&srcu_ctl));
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
index 4e144876dc68..3b0c0986afc0 100644
--- a/kernel/rcutree_trace.c
+++ b/kernel/rcutree_trace.c
@@ -31,7 +31,7 @@
31#include <linux/rcupdate.h> 31#include <linux/rcupdate.h>
32#include <linux/interrupt.h> 32#include <linux/interrupt.h>
33#include <linux/sched.h> 33#include <linux/sched.h>
34#include <asm/atomic.h> 34#include <linux/atomic.h>
35#include <linux/bitops.h> 35#include <linux/bitops.h>
36#include <linux/module.h> 36#include <linux/module.h>
37#include <linux/completion.h> 37#include <linux/completion.h>
diff --git a/kernel/rwsem.c b/kernel/rwsem.c
index 176e5e56ffab..9f48f3d82e9b 100644
--- a/kernel/rwsem.c
+++ b/kernel/rwsem.c
@@ -11,7 +11,7 @@
11#include <linux/rwsem.h> 11#include <linux/rwsem.h>
12 12
13#include <asm/system.h> 13#include <asm/system.h>
14#include <asm/atomic.h> 14#include <linux/atomic.h>
15 15
16/* 16/*
17 * lock for reading 17 * lock for reading
diff --git a/kernel/sched.c b/kernel/sched.c
index 751a7cc6a5cd..ccacdbdecf45 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -590,7 +590,6 @@ static inline int cpu_of(struct rq *rq)
590 590
591#define rcu_dereference_check_sched_domain(p) \ 591#define rcu_dereference_check_sched_domain(p) \
592 rcu_dereference_check((p), \ 592 rcu_dereference_check((p), \
593 rcu_read_lock_held() || \
594 lockdep_is_held(&sched_domains_mutex)) 593 lockdep_is_held(&sched_domains_mutex))
595 594
596/* 595/*
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
index c1124752e1d3..ba5070ce5765 100644
--- a/kernel/stop_machine.c
+++ b/kernel/stop_machine.c
@@ -19,7 +19,7 @@
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/kallsyms.h> 20#include <linux/kallsyms.h>
21 21
22#include <asm/atomic.h> 22#include <linux/atomic.h>
23 23
24/* 24/*
25 * Structure to determine completion condition and record errors. May 25 * Structure to determine completion condition and record errors. May
diff --git a/kernel/sys.c b/kernel/sys.c
index e4128b278f23..a101ba36c444 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -8,7 +8,6 @@
8#include <linux/mm.h> 8#include <linux/mm.h>
9#include <linux/utsname.h> 9#include <linux/utsname.h>
10#include <linux/mman.h> 10#include <linux/mman.h>
11#include <linux/notifier.h>
12#include <linux/reboot.h> 11#include <linux/reboot.h>
13#include <linux/prctl.h> 12#include <linux/prctl.h>
14#include <linux/highuid.h> 13#include <linux/highuid.h>
@@ -320,6 +319,37 @@ void kernel_restart_prepare(char *cmd)
320} 319}
321 320
322/** 321/**
322 * register_reboot_notifier - Register function to be called at reboot time
323 * @nb: Info about notifier function to be called
324 *
325 * Registers a function with the list of functions
326 * to be called at reboot time.
327 *
328 * Currently always returns zero, as blocking_notifier_chain_register()
329 * always returns zero.
330 */
331int register_reboot_notifier(struct notifier_block *nb)
332{
333 return blocking_notifier_chain_register(&reboot_notifier_list, nb);
334}
335EXPORT_SYMBOL(register_reboot_notifier);
336
337/**
338 * unregister_reboot_notifier - Unregister previously registered reboot notifier
339 * @nb: Hook to be unregistered
340 *
341 * Unregisters a previously registered reboot
342 * notifier function.
343 *
344 * Returns zero on success, or %-ENOENT on failure.
345 */
346int unregister_reboot_notifier(struct notifier_block *nb)
347{
348 return blocking_notifier_chain_unregister(&reboot_notifier_list, nb);
349}
350EXPORT_SYMBOL(unregister_reboot_notifier);
351
352/**
323 * kernel_restart - reboot the system 353 * kernel_restart - reboot the system
324 * @cmd: pointer to buffer containing command to execute for restart 354 * @cmd: pointer to buffer containing command to execute for restart
325 * or %NULL 355 * or %NULL
diff --git a/kernel/taskstats.c b/kernel/taskstats.c
index fc0f22005417..d1db2880d1cf 100644
--- a/kernel/taskstats.c
+++ b/kernel/taskstats.c
@@ -28,7 +28,7 @@
28#include <linux/fs.h> 28#include <linux/fs.h>
29#include <linux/file.h> 29#include <linux/file.h>
30#include <net/genetlink.h> 30#include <net/genetlink.h>
31#include <asm/atomic.h> 31#include <linux/atomic.h>
32 32
33/* 33/*
34 * Maximum length of a cpumask that can be specified in 34 * Maximum length of a cpumask that can be specified in
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 3f381d0b20a8..616846bcfee5 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -2,7 +2,7 @@
2#define _LINUX_KERNEL_TRACE_H 2#define _LINUX_KERNEL_TRACE_H
3 3
4#include <linux/fs.h> 4#include <linux/fs.h>
5#include <asm/atomic.h> 5#include <linux/atomic.h>
6#include <linux/sched.h> 6#include <linux/sched.h>
7#include <linux/clocksource.h> 7#include <linux/clocksource.h>
8#include <linux/ring_buffer.h> 8#include <linux/ring_buffer.h>
diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c
index 017fa376505d..fd3c8aae55e5 100644
--- a/kernel/trace/trace_mmiotrace.c
+++ b/kernel/trace/trace_mmiotrace.c
@@ -12,7 +12,7 @@
12#include <linux/slab.h> 12#include <linux/slab.h>
13#include <linux/time.h> 13#include <linux/time.h>
14 14
15#include <asm/atomic.h> 15#include <linux/atomic.h>
16 16
17#include "trace.h" 17#include "trace.h"
18#include "trace_output.h" 18#include "trace_output.h"