Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton: "Rather a lot of fixes, almost all affecting mm/" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (26 commits) scripts/gdb: fix debugging modules on s390 kernel/events/uprobes.c: only do FOLL_SPLIT_PMD for uprobe register mm/thp: allow dropping THP from page cache mm/vmscan.c: support removing arbitrary sized pages from mapping mm/thp: fix node page state in split_huge_page_to_list() proc/meminfo: fix output alignment mm/init-mm.c: include <linux/mman.h> for vm_committed_as_batch mm/filemap.c: include <linux/ramfs.h> for generic_file_vm_ops definition mm: include <linux/huge_mm.h> for is_vma_temporary_stack zram: fix race between backing_dev_show and backing_dev_store mm/memcontrol: update lruvec counters in mem_cgroup_move_account ocfs2: fix panic due to ocfs2_wq is null hugetlbfs: don't access uninitialized memmaps in pfn_range_valid_gigantic() mm: memblock: do not enforce current limit for memblock_phys* family mm: memcg: get number of pages on the LRU list in memcgroup base on lru_zone_size mm/gup: fix a misnamed "write" argument, and a related bug mm/gup_benchmark: add a missing "w" to getopt string ocfs2: fix error handling in ocfs2_setattr() mm: memcg/slab: fix panic in __free_slab() caused by premature memcg pointer release mm/memunmap: don't access uninitialized memmap in memunmap_pages() ...
这个提交包含在:
@@ -1230,6 +1230,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
transfer_to[USRQUOTA] = dqget(sb, make_kqid_uid(attr->ia_uid));
|
||||
if (IS_ERR(transfer_to[USRQUOTA])) {
|
||||
status = PTR_ERR(transfer_to[USRQUOTA]);
|
||||
transfer_to[USRQUOTA] = NULL;
|
||||
goto bail_unlock;
|
||||
}
|
||||
}
|
||||
@@ -1239,6 +1240,7 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
|
||||
transfer_to[GRPQUOTA] = dqget(sb, make_kqid_gid(attr->ia_gid));
|
||||
if (IS_ERR(transfer_to[GRPQUOTA])) {
|
||||
status = PTR_ERR(transfer_to[GRPQUOTA]);
|
||||
transfer_to[GRPQUOTA] = NULL;
|
||||
goto bail_unlock;
|
||||
}
|
||||
}
|
||||
|
@@ -217,7 +217,8 @@ void ocfs2_recovery_exit(struct ocfs2_super *osb)
|
||||
/* At this point, we know that no more recovery threads can be
|
||||
* launched, so wait for any recovery completion work to
|
||||
* complete. */
|
||||
flush_workqueue(osb->ocfs2_wq);
|
||||
if (osb->ocfs2_wq)
|
||||
flush_workqueue(osb->ocfs2_wq);
|
||||
|
||||
/*
|
||||
* Now that recovery is shut down, and the osb is about to be
|
||||
|
@@ -377,7 +377,8 @@ void ocfs2_shutdown_local_alloc(struct ocfs2_super *osb)
|
||||
struct ocfs2_dinode *alloc = NULL;
|
||||
|
||||
cancel_delayed_work(&osb->la_enable_wq);
|
||||
flush_workqueue(osb->ocfs2_wq);
|
||||
if (osb->ocfs2_wq)
|
||||
flush_workqueue(osb->ocfs2_wq);
|
||||
|
||||
if (osb->local_alloc_state == OCFS2_LA_UNUSED)
|
||||
goto out;
|
||||
|
@@ -132,9 +132,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
|
||||
global_node_page_state(NR_SHMEM_THPS) * HPAGE_PMD_NR);
|
||||
show_val_kb(m, "ShmemPmdMapped: ",
|
||||
global_node_page_state(NR_SHMEM_PMDMAPPED) * HPAGE_PMD_NR);
|
||||
show_val_kb(m, "FileHugePages: ",
|
||||
show_val_kb(m, "FileHugePages: ",
|
||||
global_node_page_state(NR_FILE_THPS) * HPAGE_PMD_NR);
|
||||
show_val_kb(m, "FilePmdMapped: ",
|
||||
show_val_kb(m, "FilePmdMapped: ",
|
||||
global_node_page_state(NR_FILE_PMDMAPPED) * HPAGE_PMD_NR);
|
||||
#endif
|
||||
|
||||
|
@@ -42,10 +42,12 @@ static ssize_t kpagecount_read(struct file *file, char __user *buf,
|
||||
return -EINVAL;
|
||||
|
||||
while (count > 0) {
|
||||
if (pfn_valid(pfn))
|
||||
ppage = pfn_to_page(pfn);
|
||||
else
|
||||
ppage = NULL;
|
||||
/*
|
||||
* TODO: ZONE_DEVICE support requires to identify
|
||||
* memmaps that were actually initialized.
|
||||
*/
|
||||
ppage = pfn_to_online_page(pfn);
|
||||
|
||||
if (!ppage || PageSlab(ppage) || page_has_type(ppage))
|
||||
pcount = 0;
|
||||
else
|
||||
@@ -216,10 +218,11 @@ static ssize_t kpageflags_read(struct file *file, char __user *buf,
|
||||
return -EINVAL;
|
||||
|
||||
while (count > 0) {
|
||||
if (pfn_valid(pfn))
|
||||
ppage = pfn_to_page(pfn);
|
||||
else
|
||||
ppage = NULL;
|
||||
/*
|
||||
* TODO: ZONE_DEVICE support requires to identify
|
||||
* memmaps that were actually initialized.
|
||||
*/
|
||||
ppage = pfn_to_online_page(pfn);
|
||||
|
||||
if (put_user(stable_page_flags(ppage), out)) {
|
||||
ret = -EFAULT;
|
||||
@@ -261,10 +264,11 @@ static ssize_t kpagecgroup_read(struct file *file, char __user *buf,
|
||||
return -EINVAL;
|
||||
|
||||
while (count > 0) {
|
||||
if (pfn_valid(pfn))
|
||||
ppage = pfn_to_page(pfn);
|
||||
else
|
||||
ppage = NULL;
|
||||
/*
|
||||
* TODO: ZONE_DEVICE support requires to identify
|
||||
* memmaps that were actually initialized.
|
||||
*/
|
||||
ppage = pfn_to_online_page(pfn);
|
||||
|
||||
if (ppage)
|
||||
ino = page_cgroup_ino(ppage);
|
||||
|
在新工单中引用
屏蔽一个用户