Merge branch 'akpm' (patches from Andrew Morton)
Merge first patch-bomb from Andrew Morton: "Quite a lot of other stuff is banked up awaiting further next->mainline merging, but this batch contains: - Lots of random misc patches - OCFS2 - Most of MM - backlight updates - lib/ updates - printk updates - checkpatch updates - epoll tweaking - rtc updates - hfs - hfsplus - documentation - procfs - update gcov to gcc-4.7 format - IPC" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (269 commits) ipc, msg: fix message length check for negative values ipc/util.c: remove unnecessary work pending test devpts: plug the memory leak in kill_sb ./Makefile: export initial ramdisk compression config option init/Kconfig: add option to disable kernel compression drivers: w1: make w1_slave::flags long to avoid memory corruption drivers/w1/masters/ds1wm.cuse dev_get_platdata() drivers/memstick/core/ms_block.c: fix unreachable state in h_msb_read_page() drivers/memstick/core/mspro_block.c: fix attributes array allocation drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr kernel/panic.c: reduce 1 byte usage for print tainted buffer gcov: reuse kbasename helper kernel/gcov/fs.c: use pr_warn() kernel/module.c: use pr_foo() gcov: compile specific gcov implementation based on gcc version gcov: add support for gcc 4.7 gcov format gcov: move gcov structs definitions to a gcc version specific file kernel/taskstats.c: return -ENOMEM when alloc memory fails in add_del_listener() kernel/taskstats.c: add nla_nest_cancel() for failure processing between nla_nest_start() and nla_nest_end() kernel/sysctl_binary.c: use scnprintf() instead of snprintf() ...
这个提交包含在:
@@ -31,6 +31,10 @@ config PROC_FS
|
||||
config PROC_KCORE
|
||||
bool "/proc/kcore support" if !ARM
|
||||
depends on PROC_FS && MMU
|
||||
help
|
||||
Provides a virtual ELF core file of the live kernel. This can
|
||||
be read with gdb and other ELF tools. No modifications can be
|
||||
made using this mechanism.
|
||||
|
||||
config PROC_VMCORE
|
||||
bool "/proc/vmcore support"
|
||||
|
@@ -285,19 +285,23 @@ static int proc_reg_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
return rv;
|
||||
}
|
||||
|
||||
static unsigned long proc_reg_get_unmapped_area(struct file *file, unsigned long orig_addr, unsigned long len, unsigned long pgoff, unsigned long flags)
|
||||
static unsigned long
|
||||
proc_reg_get_unmapped_area(struct file *file, unsigned long orig_addr,
|
||||
unsigned long len, unsigned long pgoff,
|
||||
unsigned long flags)
|
||||
{
|
||||
struct proc_dir_entry *pde = PDE(file_inode(file));
|
||||
unsigned long rv = -EIO;
|
||||
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long) = NULL;
|
||||
unsigned long (*get_area)(struct file *, unsigned long, unsigned long,
|
||||
unsigned long, unsigned long) = NULL;
|
||||
if (use_pde(pde)) {
|
||||
#ifdef CONFIG_MMU
|
||||
get_unmapped_area = current->mm->get_unmapped_area;
|
||||
get_area = current->mm->get_unmapped_area;
|
||||
#endif
|
||||
if (pde->proc_fops->get_unmapped_area)
|
||||
get_unmapped_area = pde->proc_fops->get_unmapped_area;
|
||||
if (get_unmapped_area)
|
||||
rv = get_unmapped_area(file, orig_addr, len, pgoff, flags);
|
||||
get_area = pde->proc_fops->get_unmapped_area;
|
||||
if (get_area)
|
||||
rv = get_area(file, orig_addr, len, pgoff, flags);
|
||||
unuse_pde(pde);
|
||||
}
|
||||
return rv;
|
||||
|
@@ -255,8 +255,7 @@ static int kcore_update_ram(void)
|
||||
end_pfn = 0;
|
||||
for_each_node_state(nid, N_MEMORY) {
|
||||
unsigned long node_end;
|
||||
node_end = NODE_DATA(nid)->node_start_pfn +
|
||||
NODE_DATA(nid)->node_spanned_pages;
|
||||
node_end = node_end_pfn(nid);
|
||||
if (end_pfn < node_end)
|
||||
end_pfn = node_end;
|
||||
}
|
||||
|
@@ -24,7 +24,6 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct sysinfo i;
|
||||
unsigned long committed;
|
||||
unsigned long allowed;
|
||||
struct vmalloc_info vmi;
|
||||
long cached;
|
||||
unsigned long pages[NR_LRU_LISTS];
|
||||
@@ -37,8 +36,6 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
|
||||
si_meminfo(&i);
|
||||
si_swapinfo(&i);
|
||||
committed = percpu_counter_read_positive(&vm_committed_as);
|
||||
allowed = ((totalram_pages - hugetlb_total_pages())
|
||||
* sysctl_overcommit_ratio / 100) + total_swap_pages;
|
||||
|
||||
cached = global_page_state(NR_FILE_PAGES) -
|
||||
total_swapcache_pages() - i.bufferram;
|
||||
@@ -147,7 +144,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
|
||||
K(global_page_state(NR_UNSTABLE_NFS)),
|
||||
K(global_page_state(NR_BOUNCE)),
|
||||
K(global_page_state(NR_WRITEBACK_TEMP)),
|
||||
K(allowed),
|
||||
K(vm_commit_limit()),
|
||||
K(committed),
|
||||
(unsigned long)VMALLOC_TOTAL >> 10,
|
||||
vmi.used >> 10,
|
||||
|
@@ -561,6 +561,9 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)
|
||||
[ilog2(VM_NONLINEAR)] = "nl",
|
||||
[ilog2(VM_ARCH_1)] = "ar",
|
||||
[ilog2(VM_DONTDUMP)] = "dd",
|
||||
#ifdef CONFIG_MEM_SOFT_DIRTY
|
||||
[ilog2(VM_SOFTDIRTY)] = "sd",
|
||||
#endif
|
||||
[ilog2(VM_MIXEDMAP)] = "mm",
|
||||
[ilog2(VM_HUGEPAGE)] = "hg",
|
||||
[ilog2(VM_NOHUGEPAGE)] = "nh",
|
||||
@@ -1387,8 +1390,8 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
||||
struct mm_struct *mm = vma->vm_mm;
|
||||
struct mm_walk walk = {};
|
||||
struct mempolicy *pol;
|
||||
int n;
|
||||
char buffer[50];
|
||||
char buffer[64];
|
||||
int nid;
|
||||
|
||||
if (!mm)
|
||||
return 0;
|
||||
@@ -1404,10 +1407,8 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
||||
walk.mm = mm;
|
||||
|
||||
pol = get_vma_policy(task, vma, vma->vm_start);
|
||||
n = mpol_to_str(buffer, sizeof(buffer), pol);
|
||||
mpol_to_str(buffer, sizeof(buffer), pol);
|
||||
mpol_cond_put(pol);
|
||||
if (n < 0)
|
||||
return n;
|
||||
|
||||
seq_printf(m, "%08lx %s", vma->vm_start, buffer);
|
||||
|
||||
@@ -1460,9 +1461,9 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
|
||||
if (md->writeback)
|
||||
seq_printf(m, " writeback=%lu", md->writeback);
|
||||
|
||||
for_each_node_state(n, N_MEMORY)
|
||||
if (md->node[n])
|
||||
seq_printf(m, " N%d=%lu", n, md->node[n]);
|
||||
for_each_node_state(nid, N_MEMORY)
|
||||
if (md->node[nid])
|
||||
seq_printf(m, " N%d=%lu", nid, md->node[nid]);
|
||||
out:
|
||||
seq_putc(m, '\n');
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户