sysfs: fix problems with binary files
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Jan 2009 23:51:16 +0000 (15:51 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 21 Jan 2009 04:52:09 +0000 (20:52 -0800)
Some sysfs binary files don't like having 0 passed to them as a size.
Fix this up at the root by just returning to the vfs if userspace asks
us for a zero sized buffer.

Thanks to Pavel Roskin for pointing this out.

Reported-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/sysfs/bin.c

index 66f6e58a7e4bb1a52590f4eecbb4094647c61c4f..f2c478c3424e6f40096049206c4b3e181f37d211 100644 (file)
@@ -63,6 +63,9 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)
        int count = min_t(size_t, bytes, PAGE_SIZE);
        char *temp;
 
+       if (!bytes)
+               return 0;
+
        if (size) {
                if (offs > size)
                        return 0;
@@ -131,6 +134,9 @@ static ssize_t write(struct file *file, const char __user *userbuf,
        int count = min_t(size_t, bytes, PAGE_SIZE);
        char *temp;
 
+       if (!bytes)
+               return 0;
+
        if (size) {
                if (offs > size)
                        return 0;