From 4c14b60335b0cbc6863274fd138c21295bc101a9 Mon Sep 17 00:00:00 2001 From: KAMEZAWA Hiroyuki Date: Tue, 22 Sep 2009 16:45:51 -0700 Subject: [PATCH] --- yaml --- r: 164772 b: refs/heads/master c: 678ad5d8aaf8925cb8465f84e1e47d9b1284666a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/proc/kcore.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index f8f70dcf043a..66e7370ac602 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 90396f96b7da0e2305ffe0266d22b6f8221f28ba +refs/heads/master: 678ad5d8aaf8925cb8465f84e1e47d9b1284666a diff --git a/trunk/fs/proc/kcore.c b/trunk/fs/proc/kcore.c index 70733780fdd9..3d0485c361c7 100644 --- a/trunk/fs/proc/kcore.c +++ b/trunk/fs/proc/kcore.c @@ -107,6 +107,8 @@ static void free_kclist_ents(struct list_head *head) */ static void __kcore_update_ram(struct list_head *list) { + int nphdr; + size_t size; struct kcore_list *tmp, *pos; LIST_HEAD(garbage); @@ -121,6 +123,7 @@ static void __kcore_update_ram(struct list_head *list) } else list_splice(list, &garbage); kcore_need_update = 0; + proc_root_kcore->size = get_kcore_size(&nphdr, &size); write_unlock(&kclist_lock); free_kclist_ents(&garbage); @@ -429,7 +432,8 @@ read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos) unsigned long start; read_lock(&kclist_lock); - proc_root_kcore->size = size = get_kcore_size(&nphdr, &elf_buflen); + size = get_kcore_size(&nphdr, &elf_buflen); + if (buflen == 0 || *fpos >= size) { read_unlock(&kclist_lock); return 0;