diff options
author | KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | 2009-09-22 19:45:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 10:39:42 -0400 |
commit | 0d4c36a9b6ab6b15851f60956d901a3c53574ea8 (patch) | |
tree | 08ca4041ee0a3748835b34227868427b7a82467f /fs/proc/kcore.c | |
parent | 678ad5d8aaf8925cb8465f84e1e47d9b1284666a (diff) |
/proc/kcore: update stat.st_size after memory hotplug
After memory hotplug (or other events in future), kcore size can be
modified.
To update inode->i_size, we have to know inode/dentry but we can't get it
from inside /proc directly. But considerinyg memory hotplug, kcore image
is updated only when it's opened. Then, updating inode->i_size at open()
is enough.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: WANG Cong <xiyou.wangcong@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/proc/kcore.c')
-rw-r--r-- | fs/proc/kcore.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index 3d0485c361c7..56013371f9f3 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c | |||
@@ -546,6 +546,11 @@ static int open_kcore(struct inode *inode, struct file *filp) | |||
546 | return -EPERM; | 546 | return -EPERM; |
547 | if (kcore_need_update) | 547 | if (kcore_need_update) |
548 | kcore_update_ram(); | 548 | kcore_update_ram(); |
549 | if (i_size_read(inode) != proc_root_kcore->size) { | ||
550 | mutex_lock(&inode->i_mutex); | ||
551 | i_size_write(inode, proc_root_kcore->size); | ||
552 | mutex_unlock(&inode->i_mutex); | ||
553 | } | ||
549 | return 0; | 554 | return 0; |
550 | } | 555 | } |
551 | 556 | ||