aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Deweerdt <deweerdt@free.fr>2006-09-29 05:01:02 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 12:18:19 -0400
commitf7ca54f486d3b07f48b8bbc92705bde6ba98ee54 (patch)
tree33a464bf15016d5521c1c18f53af5c64a2cc06de
parent87d7c8aca8670a772f74766c19e0345a606b67a9 (diff)
[PATCH] fix mem_write() return value
At the beginning of the routine, "copied" is set to 0, but it is no good because in lines 805 and 812 it is set to other values. Finally, the routine returns as if it copied 12 (=ENOMEM) bytes less than it actually did. Signed-off-by: Frederik Deweerdt <frederik.deweerdt@gmail.com> Acked-by: Eric Biederman <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/proc/base.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index fe8d55fb17cc..89c20d9d50bf 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -797,7 +797,7 @@ out_no_task:
797static ssize_t mem_write(struct file * file, const char * buf, 797static ssize_t mem_write(struct file * file, const char * buf,
798 size_t count, loff_t *ppos) 798 size_t count, loff_t *ppos)
799{ 799{
800 int copied = 0; 800 int copied;
801 char *page; 801 char *page;
802 struct task_struct *task = get_proc_task(file->f_dentry->d_inode); 802 struct task_struct *task = get_proc_task(file->f_dentry->d_inode);
803 unsigned long dst = *ppos; 803 unsigned long dst = *ppos;
@@ -814,6 +814,7 @@ static ssize_t mem_write(struct file * file, const char * buf,
814 if (!page) 814 if (!page)
815 goto out; 815 goto out;
816 816
817 copied = 0;
817 while (count > 0) { 818 while (count > 0) {
818 int this_len, retval; 819 int this_len, retval;
819 820