|
@@ -60,24 +60,14 @@ static int proc_do_xprt(ctl_table *table, int write, struct file *file,
|
|
|
void __user *buffer, size_t *lenp, loff_t *ppos)
|
|
|
{
|
|
|
char tmpbuf[256];
|
|
|
- int len;
|
|
|
+ size_t len;
|
|
|
+
|
|
|
if ((*ppos && !write) || !*lenp) {
|
|
|
*lenp = 0;
|
|
|
return 0;
|
|
|
}
|
|
|
- if (write)
|
|
|
- return -EINVAL;
|
|
|
- else {
|
|
|
- len = svc_print_xprts(tmpbuf, sizeof(tmpbuf));
|
|
|
- if (!access_ok(VERIFY_WRITE, buffer, len))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- if (__copy_to_user(buffer, tmpbuf, len))
|
|
|
- return -EFAULT;
|
|
|
- }
|
|
|
- *lenp -= len;
|
|
|
- *ppos += len;
|
|
|
- return 0;
|
|
|
+ len = svc_print_xprts(tmpbuf, sizeof(tmpbuf));
|
|
|
+ return simple_read_from_buffer(buffer, *lenp, ppos, tmpbuf, len);
|
|
|
}
|
|
|
|
|
|
static int
|