[PATCH] RTAS syscall - review request
Nathan Lynch
nathanl at austin.ibm.com
Thu Nov 13 03:20:57 EST 2003
Hi John-
> +/* RTAS Userspace access */
> +static ssize_t ppc_rtas_rmo_buf_read(struct file *file, char *buf,
> + size_t count, loff_t *ppos)
> +{
> + int n;
> +
> + n = sprintf(buf, "%p %x\n", rtas_rmo_buf, RTAS_SYSCALL_MAX);
> if (*ppos >= strlen(buf))
> return 0;
> if (n > strlen(buf) - *ppos)
I don't think you can directly write to buf here; you should be using
copy_to_user(). I believe it should look something like this (I've
omitted error and bounds checking):
static ssize_t ppc_rtas_rmo_buf_read(struct file *file, char __user
*buf, size_t count, loff_t *ppos)
{
int n;
char *kbuf = kmalloc(count, GFP_KERNEL);
n = sprintf(buf, "%p %x\n", rtas_rmo_buf, RTAS_SYSCALL_MAX);
...
copy_to_user(buf, kbuf, count);
kfree(kbuf);
}
Nathan
** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc64-dev
mailing list