lkml.org 
[lkml]   [2004]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] use simple_read_from_buffer in proc_info_read and proc_pid_attr_read
Use simple_read_from_buffer in proc_info_read and proc_pid_attr_read.
Viro had ack'd this earlier.

Signed-off-by: Chris Wright <chrisw@osdl.org>

===== fs/proc/base.c 1.71 vs edited =====
--- 1.71/fs/proc/base.c 2004-06-19 22:42:40 -07:00
+++ edited/fs/proc/base.c 2004-08-06 18:27:59 -07:00
@@ -517,7 +517,6 @@
struct inode * inode = file->f_dentry->d_inode;
unsigned long page;
ssize_t length;
- ssize_t end;
struct task_struct *task = proc_task(inode);

if (count > PROC_BLOCK_SIZE)
@@ -527,24 +526,10 @@

length = PROC_I(inode)->op.proc_read(task, (char*)page);

- if (length < 0) {
- free_page(page);
- return length;
- }
- /* Static 4kB (or whatever) block capacity */
- if (*ppos >= length) {
- free_page(page);
- return 0;
- }
- if (count + *ppos > length)
- count = length - *ppos;
- end = count + *ppos;
- if (copy_to_user(buf, (char *) page + *ppos, count))
- count = -EFAULT;
- else
- *ppos = end;
+ if (length >= 0)
+ length = simple_read_from_buffer(buf, count, ppos, (char *)page, length);
free_page(page);
- return count;
+ return length;
}

static struct file_operations proc_info_file_operations = {
@@ -1168,7 +1153,6 @@
struct inode * inode = file->f_dentry->d_inode;
unsigned long page;
ssize_t length;
- ssize_t end;
struct task_struct *task = proc_task(inode);

if (count > PAGE_SIZE)
@@ -1179,24 +1163,10 @@
length = security_getprocattr(task,
(char*)file->f_dentry->d_name.name,
(void*)page, count);
- if (length < 0) {
- free_page(page);
- return length;
- }
- /* Static 4kB (or whatever) block capacity */
- if (*ppos >= length) {
- free_page(page);
- return 0;
- }
- if (count + *ppos > length)
- count = length - *ppos;
- end = count + *ppos;
- if (copy_to_user(buf, (char *) page + *ppos, count))
- count = -EFAULT;
- else
- *ppos = end;
+ if (length >= 0)
+ length = simple_read_from_buffer(buf, count, ppos, (char *)page, length);
free_page(page);
- return count;
+ return length;
}

static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 14:05    [W:0.035 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site