提交 fc3ac5c7 编写于 作者: L Linus Torvalds

Merge branch 'akpm' (incoming from Andrew)

Merge misc fixes from Andrew Morton:
 "9 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  MAINTAINERS: add closing angle bracket to Vince Bridgers' email address
  Documentation: fix DOCBOOKS=... building
  ocfs2: fix double kmem_cache_destroy in dlm_init
  mm/memory-failure.c: fix memory leak by race between poison and unpoison
  wait: swap EXIT_ZOMBIE(Z) and EXIT_DEAD(X) chars in TASK_STATE_TO_CHAR_STR
  memcg: fix swapcache charge from kernel thread context
  mm: madvise: fix MADV_WILLNEED on shmem swapouts
  mm/filemap.c: avoid always dirtying mapping->flags on O_DIRECT
  hwpoison, hugetlb: lock_page/unlock_page does not match for handling a free hugepage
上级 9abd09ac 0d9327ab
master alk-4.19.24 alk-4.19.30 alk-4.19.34 alk-4.19.36 alk-4.19.43 alk-4.19.48 alk-4.19.57 ck-4.19.67 ck-4.19.81 ck-4.19.91 github/fork/deepanshu1422/fix-typo-in-comment github/fork/haosdent/fix-typo linux-next v4.19.91 v4.19.90 v4.19.89 v4.19.88 v4.19.87 v4.19.86 v4.19.85 v4.19.84 v4.19.83 v4.19.82 v4.19.81 v4.19.80 v4.19.79 v4.19.78 v4.19.77 v4.19.76 v4.19.75 v4.19.74 v4.19.73 v4.19.72 v4.19.71 v4.19.70 v4.19.69 v4.19.68 v4.19.67 v4.19.66 v4.19.65 v4.19.64 v4.19.63 v4.19.62 v4.19.61 v4.19.60 v4.19.59 v4.19.58 v4.19.57 v4.19.56 v4.19.55 v4.19.54 v4.19.53 v4.19.52 v4.19.51 v4.19.50 v4.19.49 v4.19.48 v4.19.47 v4.19.46 v4.19.45 v4.19.44 v4.19.43 v4.19.42 v4.19.41 v4.19.40 v4.19.39 v4.19.38 v4.19.37 v4.19.36 v4.19.35 v4.19.34 v4.19.33 v4.19.32 v4.19.31 v4.19.30 v4.19.29 v4.19.28 v4.19.27 v4.19.26 v4.19.25 v4.19.24 v4.19.23 v4.19.22 v4.19.21 v4.19.20 v4.19.19 v4.19.18 v4.19.17 v4.19.16 v4.19.15 v4.19.14 v4.19.13 v4.19.12 v4.19.11 v4.19.10 v4.19.9 v4.19.8 v4.19.7 v4.19.6 v4.19.5 v4.19.4 v4.19.3 v4.19.2 v4.19.1 v4.19 v4.19-rc8 v4.19-rc7 v4.19-rc6 v4.19-rc5 v4.19-rc4 v4.19-rc3 v4.19-rc2 v4.19-rc1 ck-release-21 ck-release-20 ck-release-19.2 ck-release-19.1 ck-release-19 ck-release-18 ck-release-17.2 ck-release-17.1 ck-release-17 ck-release-16 ck-release-15.1 ck-release-15 ck-release-14 ck-release-13.2 ck-release-13 ck-release-12 ck-release-11 ck-release-10 ck-release-9 ck-release-7 alk-release-15 alk-release-14 alk-release-13.2 alk-release-13 alk-release-12 alk-release-11 alk-release-10 alk-release-9 alk-release-7
无相关合并请求
...@@ -195,7 +195,7 @@ DVB_DOCUMENTED = \ ...@@ -195,7 +195,7 @@ DVB_DOCUMENTED = \
# #
install_media_images = \ install_media_images = \
$(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api $(Q)-cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
$(Q)base64 -d $< >$@ $(Q)base64 -d $< >$@
......
...@@ -537,7 +537,7 @@ L: linux-alpha@vger.kernel.org ...@@ -537,7 +537,7 @@ L: linux-alpha@vger.kernel.org
F: arch/alpha/ F: arch/alpha/
ALTERA TRIPLE SPEED ETHERNET DRIVER ALTERA TRIPLE SPEED ETHERNET DRIVER
M: Vince Bridgers <vbridgers2013@gmail.com M: Vince Bridgers <vbridgers2013@gmail.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
S: Maintained S: Maintained
......
...@@ -472,11 +472,15 @@ int dlm_init_master_caches(void) ...@@ -472,11 +472,15 @@ int dlm_init_master_caches(void)
void dlm_destroy_master_caches(void) void dlm_destroy_master_caches(void)
{ {
if (dlm_lockname_cache) if (dlm_lockname_cache) {
kmem_cache_destroy(dlm_lockname_cache); kmem_cache_destroy(dlm_lockname_cache);
dlm_lockname_cache = NULL;
}
if (dlm_lockres_cache) if (dlm_lockres_cache) {
kmem_cache_destroy(dlm_lockres_cache); kmem_cache_destroy(dlm_lockres_cache);
dlm_lockres_cache = NULL;
}
} }
static void dlm_lockres_release(struct kref *kref) static void dlm_lockres_release(struct kref *kref)
......
...@@ -220,7 +220,7 @@ print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); ...@@ -220,7 +220,7 @@ print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq);
#define TASK_PARKED 512 #define TASK_PARKED 512
#define TASK_STATE_MAX 1024 #define TASK_STATE_MAX 1024
#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP" #define TASK_STATE_TO_CHAR_STR "RSDTtXZxKWP"
extern char ___assert_task_state[1 - 2*!!( extern char ___assert_task_state[1 - 2*!!(
sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)];
......
...@@ -257,9 +257,11 @@ static int filemap_check_errors(struct address_space *mapping) ...@@ -257,9 +257,11 @@ static int filemap_check_errors(struct address_space *mapping)
{ {
int ret = 0; int ret = 0;
/* Check for outstanding write errors */ /* Check for outstanding write errors */
if (test_and_clear_bit(AS_ENOSPC, &mapping->flags)) if (test_bit(AS_ENOSPC, &mapping->flags) &&
test_and_clear_bit(AS_ENOSPC, &mapping->flags))
ret = -ENOSPC; ret = -ENOSPC;
if (test_and_clear_bit(AS_EIO, &mapping->flags)) if (test_bit(AS_EIO, &mapping->flags) &&
test_and_clear_bit(AS_EIO, &mapping->flags))
ret = -EIO; ret = -EIO;
return ret; return ret;
} }
......
...@@ -195,7 +195,7 @@ static void force_shm_swapin_readahead(struct vm_area_struct *vma, ...@@ -195,7 +195,7 @@ static void force_shm_swapin_readahead(struct vm_area_struct *vma,
for (; start < end; start += PAGE_SIZE) { for (; start < end; start += PAGE_SIZE) {
index = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; index = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
page = find_get_page(mapping, index); page = find_get_entry(mapping, index);
if (!radix_tree_exceptional_entry(page)) { if (!radix_tree_exceptional_entry(page)) {
if (page) if (page)
page_cache_release(page); page_cache_release(page);
......
...@@ -1077,9 +1077,18 @@ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm) ...@@ -1077,9 +1077,18 @@ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm)
rcu_read_lock(); rcu_read_lock();
do { do {
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner)); /*
if (unlikely(!memcg)) * Page cache insertions can happen withou an
* actual mm context, e.g. during disk probing
* on boot, loopback IO, acct() writes etc.
*/
if (unlikely(!mm))
memcg = root_mem_cgroup; memcg = root_mem_cgroup;
else {
memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
if (unlikely(!memcg))
memcg = root_mem_cgroup;
}
} while (!css_tryget(&memcg->css)); } while (!css_tryget(&memcg->css));
rcu_read_unlock(); rcu_read_unlock();
return memcg; return memcg;
...@@ -3958,17 +3967,9 @@ int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm, ...@@ -3958,17 +3967,9 @@ int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm,
return 0; return 0;
} }
/* memcg = mem_cgroup_try_charge_mm(mm, gfp_mask, 1, true);
* Page cache insertions can happen without an actual mm if (!memcg)
* context, e.g. during disk probing on boot. return -ENOMEM;
*/
if (unlikely(!mm))
memcg = root_mem_cgroup;
else {
memcg = mem_cgroup_try_charge_mm(mm, gfp_mask, 1, true);
if (!memcg)
return -ENOMEM;
}
__mem_cgroup_commit_charge(memcg, page, 1, type, false); __mem_cgroup_commit_charge(memcg, page, 1, type, false);
return 0; return 0;
} }
......
...@@ -1081,15 +1081,16 @@ int memory_failure(unsigned long pfn, int trapno, int flags) ...@@ -1081,15 +1081,16 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
return 0; return 0;
} else if (PageHuge(hpage)) { } else if (PageHuge(hpage)) {
/* /*
* Check "just unpoisoned", "filter hit", and * Check "filter hit" and "race with other subpage."
* "race with other subpage."
*/ */
lock_page(hpage); lock_page(hpage);
if (!PageHWPoison(hpage) if (PageHWPoison(hpage)) {
|| (hwpoison_filter(p) && TestClearPageHWPoison(p)) if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
|| (p != hpage && TestSetPageHWPoison(hpage))) { || (p != hpage && TestSetPageHWPoison(hpage))) {
atomic_long_sub(nr_pages, &num_poisoned_pages); atomic_long_sub(nr_pages, &num_poisoned_pages);
return 0; unlock_page(hpage);
return 0;
}
} }
set_page_hwpoison_huge_page(hpage); set_page_hwpoison_huge_page(hpage);
res = dequeue_hwpoisoned_huge_page(hpage); res = dequeue_hwpoisoned_huge_page(hpage);
...@@ -1152,6 +1153,8 @@ int memory_failure(unsigned long pfn, int trapno, int flags) ...@@ -1152,6 +1153,8 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
*/ */
if (!PageHWPoison(p)) { if (!PageHWPoison(p)) {
printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn); printk(KERN_ERR "MCE %#lx: just unpoisoned\n", pfn);
atomic_long_sub(nr_pages, &num_poisoned_pages);
put_page(hpage);
res = 0; res = 0;
goto out; goto out;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部