Re: [net-next PATCH v4 1/3] sysctl: refactor integer handling proc code

From: Octavian Purdila
Date: Tue Feb 16 2010 - 08:48:29 EST


On Tuesday 16 February 2010 15:09:51 you wrote:
> Octavian Purdila wrote:
> > On Tuesday 16 February 2010 10:41:07 you wrote:
> >>> +static int proc_skip_wspace(char __user **buf, size_t *size)
> >>> +{
> >>> + char c;
> >>> +
> >>> + while (*size) {
> >>> + if (get_user(c, *buf))
> >>> + return -EFAULT;
> >>> + if (!isspace(c))
> >>> + break;
> >>> + (*size)--; (*buf)++;
> >>> + }
> >>> +
> >>> + return 0;
> >>> +}
> >>
> >> In lib/string.c we have skip_spaces(), I think we can use it
> >> here instead of inventing another one.
> >
> > I'm afraid we can't, skip_spaces does not accept userspace buffers.
>
> Well, you need to use copy_from_user() before call it.
>

And how much would you copy? You need to either use a stack buffer and do a
loop copy or you would need to copy the whole userspace buffer which means we
need to allocate a kernel buffer. I think its much cleaner the way is currently
done.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/