diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-12 18:44:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-12 18:44:27 -0400 |
commit | ac4de9543aca59f2b763746647577302fbedd57e (patch) | |
tree | 40407750569ee030de56233c41c9a97f7e89cf67 /arch/powerpc | |
parent | 26935fb06ee88f1188789807687c03041f3c70d9 (diff) | |
parent | de32a8177f64bc62e1b19c685dd391af664ab13f (diff) |
Merge branch 'akpm' (patches from Andrew Morton)
Merge more patches from Andrew Morton:
"The rest of MM. Plus one misc cleanup"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (35 commits)
mm/Kconfig: add MMU dependency for MIGRATION.
kernel: replace strict_strto*() with kstrto*()
mm, thp: count thp_fault_fallback anytime thp fault fails
thp: consolidate code between handle_mm_fault() and do_huge_pmd_anonymous_page()
thp: do_huge_pmd_anonymous_page() cleanup
thp: move maybe_pmd_mkwrite() out of mk_huge_pmd()
mm: cleanup add_to_page_cache_locked()
thp: account anon transparent huge pages into NR_ANON_PAGES
truncate: drop 'oldsize' truncate_pagecache() parameter
mm: make lru_add_drain_all() selective
memcg: document cgroup dirty/writeback memory statistics
memcg: add per cgroup writeback pages accounting
memcg: check for proper lock held in mem_cgroup_update_page_stat
memcg: remove MEMCG_NR_FILE_MAPPED
memcg: reduce function dereference
memcg: avoid overflow caused by PAGE_ALIGN
memcg: rename RESOURCE_MAX to RES_COUNTER_MAX
memcg: correct RESOURCE_MAX to ULLONG_MAX
mm: memcg: do not trap chargers with full callstack on OOM
mm: memcg: rework and document OOM waiting and wakeup
...
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/mm/fault.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 2dd69bf4af46..51ab9e7e6c39 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -223,9 +223,6 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | |||
223 | is_write = error_code & ESR_DST; | 223 | is_write = error_code & ESR_DST; |
224 | #endif /* CONFIG_4xx || CONFIG_BOOKE */ | 224 | #endif /* CONFIG_4xx || CONFIG_BOOKE */ |
225 | 225 | ||
226 | if (is_write) | ||
227 | flags |= FAULT_FLAG_WRITE; | ||
228 | |||
229 | #ifdef CONFIG_PPC_ICSWX | 226 | #ifdef CONFIG_PPC_ICSWX |
230 | /* | 227 | /* |
231 | * we need to do this early because this "data storage | 228 | * we need to do this early because this "data storage |
@@ -288,6 +285,9 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, | |||
288 | if (user_mode(regs)) | 285 | if (user_mode(regs)) |
289 | store_update_sp = store_updates_sp(regs); | 286 | store_update_sp = store_updates_sp(regs); |
290 | 287 | ||
288 | if (user_mode(regs)) | ||
289 | flags |= FAULT_FLAG_USER; | ||
290 | |||
291 | /* When running in the kernel we expect faults to occur only to | 291 | /* When running in the kernel we expect faults to occur only to |
292 | * addresses in user space. All other faults represent errors in the | 292 | * addresses in user space. All other faults represent errors in the |
293 | * kernel and should generate an OOPS. Unfortunately, in the case of an | 293 | * kernel and should generate an OOPS. Unfortunately, in the case of an |
@@ -415,6 +415,7 @@ good_area: | |||
415 | } else if (is_write) { | 415 | } else if (is_write) { |
416 | if (!(vma->vm_flags & VM_WRITE)) | 416 | if (!(vma->vm_flags & VM_WRITE)) |
417 | goto bad_area; | 417 | goto bad_area; |
418 | flags |= FAULT_FLAG_WRITE; | ||
418 | /* a read */ | 419 | /* a read */ |
419 | } else { | 420 | } else { |
420 | /* protection fault */ | 421 | /* protection fault */ |