diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cpu.c | 2 | ||||
-rw-r--r-- | kernel/fork.c | 6 | ||||
-rw-r--r-- | kernel/softirq.c | 9 | ||||
-rw-r--r-- | kernel/sysctl.c | 8 | ||||
-rw-r--r-- | kernel/sysctl_binary.c | 2 |
5 files changed, 16 insertions, 11 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c index a4eb5227a19e..14d32588cccd 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c | |||
@@ -416,7 +416,7 @@ int __cpuinit cpu_up(unsigned int cpu) | |||
416 | 416 | ||
417 | if (pgdat->node_zonelists->_zonerefs->zone == NULL) { | 417 | if (pgdat->node_zonelists->_zonerefs->zone == NULL) { |
418 | mutex_lock(&zonelists_mutex); | 418 | mutex_lock(&zonelists_mutex); |
419 | build_all_zonelists(NULL); | 419 | build_all_zonelists(NULL, NULL); |
420 | mutex_unlock(&zonelists_mutex); | 420 | mutex_unlock(&zonelists_mutex); |
421 | } | 421 | } |
422 | #endif | 422 | #endif |
diff --git a/kernel/fork.c b/kernel/fork.c index 8efac1fe56bc..3bd2280d79f6 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -381,10 +381,8 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | |||
381 | struct file *file; | 381 | struct file *file; |
382 | 382 | ||
383 | if (mpnt->vm_flags & VM_DONTCOPY) { | 383 | if (mpnt->vm_flags & VM_DONTCOPY) { |
384 | long pages = vma_pages(mpnt); | ||
385 | mm->total_vm -= pages; | ||
386 | vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file, | 384 | vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file, |
387 | -pages); | 385 | -vma_pages(mpnt)); |
388 | continue; | 386 | continue; |
389 | } | 387 | } |
390 | charge = 0; | 388 | charge = 0; |
@@ -1308,7 +1306,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1308 | #ifdef CONFIG_DEBUG_MUTEXES | 1306 | #ifdef CONFIG_DEBUG_MUTEXES |
1309 | p->blocked_on = NULL; /* not blocked yet */ | 1307 | p->blocked_on = NULL; /* not blocked yet */ |
1310 | #endif | 1308 | #endif |
1311 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR | 1309 | #ifdef CONFIG_MEMCG |
1312 | p->memcg_batch.do_batch = 0; | 1310 | p->memcg_batch.do_batch = 0; |
1313 | p->memcg_batch.memcg = NULL; | 1311 | p->memcg_batch.memcg = NULL; |
1314 | #endif | 1312 | #endif |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 671f9594e368..b73e681df09e 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -210,6 +210,14 @@ asmlinkage void __do_softirq(void) | |||
210 | __u32 pending; | 210 | __u32 pending; |
211 | int max_restart = MAX_SOFTIRQ_RESTART; | 211 | int max_restart = MAX_SOFTIRQ_RESTART; |
212 | int cpu; | 212 | int cpu; |
213 | unsigned long old_flags = current->flags; | ||
214 | |||
215 | /* | ||
216 | * Mask out PF_MEMALLOC s current task context is borrowed for the | ||
217 | * softirq. A softirq handled such as network RX might set PF_MEMALLOC | ||
218 | * again if the socket is related to swap | ||
219 | */ | ||
220 | current->flags &= ~PF_MEMALLOC; | ||
213 | 221 | ||
214 | pending = local_softirq_pending(); | 222 | pending = local_softirq_pending(); |
215 | account_system_vtime(current); | 223 | account_system_vtime(current); |
@@ -265,6 +273,7 @@ restart: | |||
265 | 273 | ||
266 | account_system_vtime(current); | 274 | account_system_vtime(current); |
267 | __local_bh_enable(SOFTIRQ_OFFSET); | 275 | __local_bh_enable(SOFTIRQ_OFFSET); |
276 | tsk_restore_flags(current, old_flags, PF_MEMALLOC); | ||
268 | } | 277 | } |
269 | 278 | ||
270 | #ifndef __ARCH_HAS_DO_SOFTIRQ | 279 | #ifndef __ARCH_HAS_DO_SOFTIRQ |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 97186b99b0e4..6502d35a25ba 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -1101,11 +1101,9 @@ static struct ctl_table vm_table[] = { | |||
1101 | .extra1 = &zero, | 1101 | .extra1 = &zero, |
1102 | }, | 1102 | }, |
1103 | { | 1103 | { |
1104 | .procname = "nr_pdflush_threads", | 1104 | .procname = "nr_pdflush_threads", |
1105 | .data = &nr_pdflush_threads, | 1105 | .mode = 0444 /* read-only */, |
1106 | .maxlen = sizeof nr_pdflush_threads, | 1106 | .proc_handler = pdflush_proc_obsolete, |
1107 | .mode = 0444 /* read-only*/, | ||
1108 | .proc_handler = proc_dointvec, | ||
1109 | }, | 1107 | }, |
1110 | { | 1108 | { |
1111 | .procname = "swappiness", | 1109 | .procname = "swappiness", |
diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c index a650694883a1..65bdcf198d4e 100644 --- a/kernel/sysctl_binary.c +++ b/kernel/sysctl_binary.c | |||
@@ -147,7 +147,7 @@ static const struct bin_table bin_vm_table[] = { | |||
147 | { CTL_INT, VM_DIRTY_RATIO, "dirty_ratio" }, | 147 | { CTL_INT, VM_DIRTY_RATIO, "dirty_ratio" }, |
148 | /* VM_DIRTY_WB_CS "dirty_writeback_centisecs" no longer used */ | 148 | /* VM_DIRTY_WB_CS "dirty_writeback_centisecs" no longer used */ |
149 | /* VM_DIRTY_EXPIRE_CS "dirty_expire_centisecs" no longer used */ | 149 | /* VM_DIRTY_EXPIRE_CS "dirty_expire_centisecs" no longer used */ |
150 | { CTL_INT, VM_NR_PDFLUSH_THREADS, "nr_pdflush_threads" }, | 150 | /* VM_NR_PDFLUSH_THREADS "nr_pdflush_threads" no longer used */ |
151 | { CTL_INT, VM_OVERCOMMIT_RATIO, "overcommit_ratio" }, | 151 | { CTL_INT, VM_OVERCOMMIT_RATIO, "overcommit_ratio" }, |
152 | /* VM_PAGEBUF unused */ | 152 | /* VM_PAGEBUF unused */ |
153 | /* VM_HUGETLB_PAGES "nr_hugepages" no longer used */ | 153 | /* VM_HUGETLB_PAGES "nr_hugepages" no longer used */ |