Re: [PATCH] driver core: Add the ability to unbind drivers to devices from userspace

Jon Smirl
2005-08-21T22:21:22Z

On 7/28/05, Jon Smirl <jonsmirl@gmail.com> wrote:
> Even simpler version....
>
> --
> Jon Smirl
> jonsmirl@gmail.com
>
> Remove leading and trailing whitespace when text sysfs attribute is set
> signed-off-by: Jon Smirl <jonsmirl@gmail.com>
>
> diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
> --- a/fs/sysfs/file.c
> +++ b/fs/sysfs/file.c
> @@ -6,6 +6,7 @@
> #include <linux/fsnotify.h>
> #include <linux/kobject.h>
> #include <linux/namei.h>
> +#include <linux/ctype.h>
> #include <asm/uaccess.h>
> #include <asm/semaphore.h>
>
> @@ -207,8 +208,23 @@ flush_write_buffer(struct dentry * dentr
> struct attribute * attr = to_attr(dentry);
> struct kobject * kobj = to_kobj(dentry->d_parent);
> struct sysfs_ops * ops = buffer->ops;
> + char *x;
>
> - return ops->store(kobj,attr,buffer->page,count);
> + /* locate trailing white space */
> + while ((count > 0) && isspace(buffer->page[count - 1]))
> + count--;
> +
> + /* locate leading white space */
> + x = buffer->page;
> + if (count > 0) {
> + while (isspace(*x))
> + x++;
> + count -= (x - buffer->page);
> + }
> + /* terminate the string */
> + x[count] = '\0';

Should we add a check for a NULL string here? It seems not all
drivers were prepared to handle a zero length store().

If (count == 0)
return 0;

> +
> + return ops->store(kobj, attr, x, count);
> }
>

--
Jon Smirl
jonsmirl@gmail.com