From 99532903509f3a5c0e2a981d97a049a159b65c2a Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Fri, 23 Mar 2012 15:02:53 -0700 Subject: [PATCH] --- yaml --- r: 295277 b: refs/heads/master c: 59a32e2ce5eb809967cac4e718bc527beca83c59 h: refs/heads/master i: 295275: 36304812f84e8020339c1327a43fca75db00bfdc v: v3 --- [refs] | 2 +- trunk/fs/proc/stat.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ab2f07312613..3192a312697d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b908243c549448fc0662f9cdd8d5cfe620fcdc31 +refs/heads/master: 59a32e2ce5eb809967cac4e718bc527beca83c59 diff --git a/trunk/fs/proc/stat.c b/trunk/fs/proc/stat.c index 121f77cfef76..ac446114cd48 100644 --- a/trunk/fs/proc/stat.c +++ b/trunk/fs/proc/stat.c @@ -157,11 +157,14 @@ static int show_stat(struct seq_file *p, void *v) static int stat_open(struct inode *inode, struct file *file) { - unsigned size = 4096 * (1 + num_possible_cpus() / 32); + unsigned size = 1024 + 128 * num_possible_cpus(); char *buf; struct seq_file *m; int res; + /* minimum size to display an interrupt count : 2 bytes */ + size += 2 * nr_irqs; + /* don't ask for more than the kmalloc() max size */ if (size > KMALLOC_MAX_SIZE) size = KMALLOC_MAX_SIZE; @@ -173,7 +176,7 @@ static int stat_open(struct inode *inode, struct file *file) if (!res) { m = file->private_data; m->buf = buf; - m->size = size; + m->size = ksize(buf); } else kfree(buf); return res;