[PATCH] sysfs: fix signedness problem

2005-03-01 Thread Greg KH

count is size_t, fill_write_buffer() may return a negative number
which would evade the 'count > 0' checks and do bad things.

found by the Coverity tool

Signed-off-by: Alexander Nyberg <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

--- 1.22/fs/sysfs/file.c2004-11-04 03:04:14 +01:00
+++ edited/fs/sysfs/file.c  2005-02-26 15:48:19 +01:00
@@ -231,15 +231,16 @@ static ssize_t
 sysfs_write_file(struct file *file, const char __user *buf, size_t count, 
loff_t *ppos)
 {
struct sysfs_buffer * buffer = file->private_data;
+   ssize_t len;
 
down(>sem);
-   count = fill_write_buffer(buffer,buf,count);
-   if (count > 0)
-   count = flush_write_buffer(file->f_dentry,buffer,count);
-   if (count > 0)
-   *ppos += count;
+   len = fill_write_buffer(buffer, buf, count);
+   if (len > 0)
+   len = flush_write_buffer(file->f_dentry, buffer, len);
+   if (len > 0)
+   *ppos += len;
up(>sem);
-   return count;
+   return len;
 }
 
 static int check_perm(struct inode * inode, struct file * file)



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] sysfs: fix signedness problem

2005-03-01 Thread Greg KH

count is size_t, fill_write_buffer() may return a negative number
which would evade the 'count  0' checks and do bad things.

found by the Coverity tool

Signed-off-by: Alexander Nyberg [EMAIL PROTECTED]
Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED]

--- 1.22/fs/sysfs/file.c2004-11-04 03:04:14 +01:00
+++ edited/fs/sysfs/file.c  2005-02-26 15:48:19 +01:00
@@ -231,15 +231,16 @@ static ssize_t
 sysfs_write_file(struct file *file, const char __user *buf, size_t count, 
loff_t *ppos)
 {
struct sysfs_buffer * buffer = file-private_data;
+   ssize_t len;
 
down(buffer-sem);
-   count = fill_write_buffer(buffer,buf,count);
-   if (count  0)
-   count = flush_write_buffer(file-f_dentry,buffer,count);
-   if (count  0)
-   *ppos += count;
+   len = fill_write_buffer(buffer, buf, count);
+   if (len  0)
+   len = flush_write_buffer(file-f_dentry, buffer, len);
+   if (len  0)
+   *ppos += len;
up(buffer-sem);
-   return count;
+   return len;
 }
 
 static int check_perm(struct inode * inode, struct file * file)



-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/