diff options
| -rw-r--r-- | Documentation/DocBook/media/Makefile | 2 | ||||
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | fs/ocfs2/dlm/dlmmaster.c | 8 | ||||
| -rw-r--r-- | include/linux/sched.h | 2 | ||||
| -rw-r--r-- | mm/filemap.c | 6 | ||||
| -rw-r--r-- | mm/madvise.c | 2 | ||||
| -rw-r--r-- | mm/memcontrol.c | 27 | ||||
| -rw-r--r-- | mm/memory-failure.c | 17 |
8 files changed, 38 insertions, 28 deletions
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile index f9fd615427fb..1d27f0a1abd1 100644 --- a/Documentation/DocBook/media/Makefile +++ b/Documentation/DocBook/media/Makefile | |||
| @@ -195,7 +195,7 @@ DVB_DOCUMENTED = \ | |||
| 195 | # | 195 | # |
| 196 | 196 | ||
| 197 | install_media_images = \ | 197 | install_media_images = \ |
| 198 | $(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api | 198 | $(Q)-cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api |
| 199 | 199 | ||
| 200 | $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 | 200 | $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 |
| 201 | $(Q)base64 -d $< >$@ | 201 | $(Q)base64 -d $< >$@ |
diff --git a/MAINTAINERS b/MAINTAINERS index 6846c7c622e3..c47d2683bd6b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -537,7 +537,7 @@ L: linux-alpha@vger.kernel.org | |||
| 537 | F: arch/alpha/ | 537 | F: arch/alpha/ |
| 538 | 538 | ||
| 539 | ALTERA TRIPLE SPEED ETHERNET DRIVER | 539 | ALTERA TRIPLE SPEED ETHERNET DRIVER |
| 540 | M: Vince Bridgers <vbridgers2013@gmail.com | 540 | M: Vince Bridgers <vbridgers2013@gmail.com> |
| 541 | L: netdev@vger.kernel.org | 541 | L: netdev@vger.kernel.org |
| 542 | L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) | 542 | L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) |
| 543 | S: Maintained | 543 | S: Maintained |
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c index af3f7aa73e13..ee1f88419cb0 100644 --- a/fs/ocfs2/dlm/dlmmaster.c +++ b/fs/ocfs2/dlm/dlmmaster.c | |||
| @@ -472,11 +472,15 @@ bail: | |||
| 472 | 472 | ||
| 473 | void dlm_destroy_master_caches(void) | 473 | void dlm_destroy_master_caches(void) |
| 474 | { | 474 | { |
| 475 | if (dlm_lockname_cache) | 475 | if (dlm_lockname_cache) { |
| 476 | kmem_cache_destroy(dlm_lockname_cache); | 476 | kmem_cache_destroy(dlm_lockname_cache); |
| 477 | dlm_lockname_cache = NULL; | ||
| 478 | } | ||
| 477 | 479 | ||
| 478 | if (dlm_lockres_cache) | 480 | if (dlm_lockres_cache) { |
| 479 | kmem_cache_destroy(dlm_lockres_cache); | 481 | kmem_cache_destroy(dlm_lockres_cache); |
| 482 | dlm_lockres_cache = NULL; | ||
| 483 | } | ||
| 480 | } | 484 | } |
| 481 | 485 | ||
| 482 | static void dlm_lockres_release(struct kref *kref) | 486 | static void dlm_lockres_release(struct kref *kref) |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 25f54c79f757..21fbdae61b9e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -220,7 +220,7 @@ print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); | |||
| 220 | #define TASK_PARKED 512 | 220 | #define TASK_PARKED 512 |
| 221 | #define TASK_STATE_MAX 1024 | 221 | #define TASK_STATE_MAX 1024 |
| 222 | 222 | ||
| 223 | #define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP" | 223 | #define TASK_STATE_TO_CHAR_STR "RSDTtXZxKWP" |
| 224 | 224 | ||
| 225 | extern char ___assert_task_state[1 - 2*!!( | 225 | extern char ___assert_task_state[1 - 2*!!( |
| 226 | sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; | 226 | sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; |
diff --git a/mm/filemap.c b/mm/filemap.c index 000a220e2a41..088358c8006b 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
| @@ -257,9 +257,11 @@ static int filemap_check_errors(struct address_space *mapping) | |||
| 257 | { | 257 | { |
| 258 | int ret = 0; | 258 | int ret = 0; |
| 259 | /* Check for outstanding write errors */ | 259 | /* Check for outstanding write errors */ |
| 260 | if (test_and_clear_bit(AS_ENOSPC, &mapping->flags)) | 260 | if (test_bit(AS_ENOSPC, &mapping->flags) && |
| 261 | test_and_clear_bit(AS_ENOSPC, &mapping->flags)) | ||
| 261 | ret = -ENOSPC; | 262 | ret = -ENOSPC; |
| 262 | if (test_and_clear_bit(AS_EIO, &mapping->flags)) | 263 | if (test_bit(AS_EIO, &mapping->flags) && |
| 264 | test_and_clear_bit(AS_EIO, &mapping->flags)) | ||
| 263 | ret = -EIO; | 265 | ret = -EIO; |
| 264 | return ret; | 266 | return ret; |
| 265 | } | 267 | } |
diff --git a/mm/madvise.c b/mm/madvise.c index 539eeb96b323..a402f8fdc68e 100644 --- a/mm/madvise.c +++ b/mm/madvise.c | |||
| @@ -195,7 +195,7 @@ static void force_shm_swapin_readahead(struct vm_area_struct *vma, | |||
| 195 | for (; start < end; start += PAGE_SIZE) { | 195 | for (; start < end; start += PAGE_SIZE) { |
| 196 | index = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; | 196 | index = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; |
| 197 | 197 | ||
| 198 | page = find_get_page(mapping, index); | 198 | page = find_get_entry(mapping, index); |
| 199 | if (!radix_tree_exceptional_entry(page)) { | 199 | if (!radix_tree_exceptional_entry(page)) { |
| 200 | if (page) | 200 | if (page) |
| 201 | page_cache_release(page); | 201 | page_cache_release(page); |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index c47dffdcb246..5177c6d4a2dd 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
| @@ -1077,9 +1077,18 @@ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm) | |||
| 1077 | 1077 | ||
| 1078 | rcu_read_lock(); | 1078 | rcu_read_lock(); |
| 1079 | do { | 1079 | do { |
| 1080 | memcg = mem_cgroup_from_task(rcu_dereference(mm->owner)); | 1080 | /* |
| 1081 | if (unlikely(!memcg)) | 1081 | * Page cache insertions can happen withou an |
| 1082 | * actual mm context, e.g. during disk probing | ||
| 1083 | * on boot, loopback IO, acct() writes etc. | ||
| 1084 | */ | ||
| 1085 | if (unlikely(!mm)) | ||
| 1082 | memcg = root_mem_cgroup; | 1086 | memcg = root_mem_cgroup; |
| 1087 | else { | ||
| 1088 | memcg = mem_cgroup_from_task(rcu_dereference(mm->owner)); | ||
| 1089 | if (unlikely(!memcg)) | ||
| 1090 | memcg = root_mem_cgroup; | ||
| 1091 | } | ||
| 1083 | } while (!css_tryget(&memcg->css)); | 1092 | } while (!css_tryget(&memcg->css)); |
| 1084 | rcu_read_unlock(); | 1093 | rcu_read_unlock(); |
| 1085 | return memcg; | 1094 | return memcg; |
| @@ -3958,17 +3967,9 @@ int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm, | |||
| 3958 | return 0; | 3967 | return 0; |
| 3959 | } | 3968 | } |
| 3960 | 3969 | ||
| 3961 | /* | 3970 | memcg = mem_cgroup_try_charge_mm(mm, gfp_mask, 1, true); |
| 3962 | * Page cache insertions can happen without an actual mm | 3971 | if (!memcg) |
| 3963 | * context, e.g. during disk probing on boot. | 3972 | return -ENOMEM; |
| 3964 | */ | ||
| 3965 | if (unlikely(!mm)) | ||
| 3966 | memcg = root_mem_cgroup; | ||
| 3967 | else { | ||
| 3968 | memcg = mem_cgroup_try_charge_mm(mm, gfp_mask, 1, true); | ||
| 3969 | if (!memcg) | ||
| 3970 | return -ENOMEM; | ||
| 3971 | } | ||
| 3972 | __mem_cgroup_commit_charge(memcg, page, 1, type, false); | 3973 | __mem_cgroup_commit_charge(memcg, page, 1, type, false); |
| 3973 | return 0; | 3974 | return 0; |
| 3974 | } | 3975 | } |
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 35ef28acf137..9ccef39a9de2 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
| @@ -1081,15 +1081,16 @@ int memory_failure(unsigned long pfn, int trapno, int flags) | |||
| 1081 | return 0; | 1081 | return 0; |
| 1082 | } else if (PageHuge(hpage)) { | 1082 | } else if (PageHuge(hpage)) { |
| 1083 | /* | 1083 | /* |
| 1084 | * Check "just unpoisoned", "filter hit", and | 1084 | * Check "filter hit" and "race with other subpage." |
| 1085 | * "race with other subpage." | ||
| 1086 | */ | 1085 | */ |
| 1087 | lock_page(hpage); | 1086 | lock_page(hpage); |
| 1088 | if (!PageHWPoison(hpage) | 1087 | if (PageHWPoison(hpage)) { |
| 1089 | || (hwpoison_filter(p) && TestClearPageHWPoison(p)) | 1088 | if ((hwpoison_filter(p) && TestClearPageHWPoison(p)) |
| 1090 | || (p != hpage && TestSetPageHWPoison(hpage))) { | 1089 | || (p != hpage && TestSetPageHWPoison(hpage))) { |
| 1091 | atomic_long_sub(nr_pages, &num_poisoned_pages); | 1090 | atomic_long_sub(nr_pages, &num_poisoned_pages); |
| 1092 | return 0; | 1091 | unlock_page(hpage); |
| 1092 | return 0; | ||
| 1093 | } | ||
| 1093 | } | 1094 | } |
| 1094 | set_page_hwpoison_huge_page(hpage); | 1095 | set_page_hwpoison_huge_page(hpage); |
| 1095 | res = dequeue_hwpoisoned_huge_page(hpage); | 1096 | res = dequeue_hwpoisoned_huge_page(hpage); |
| @@ -1152,6 +1153,8 @@ int memory_failure(unsigned long pfn, int trapno, int flags) | |||
| 1152 | */ | 1153 | */ |
| 1153 | if (!PageHWPoison(p)) { | 1154 | if (!PageHWPoison(p)) { |
| 1154 | printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn); | 1155 | printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn); |
| 1156 | atomic_long_sub(nr_pages, &num_poisoned_pages); | ||
| 1157 | put_page(hpage); | ||
| 1155 | res = 0; | 1158 | res = 0; |
| 1156 | goto out; | 1159 | goto out; |
| 1157 | } | 1160 | } |
