From: gregkh@suse.de Date: Wed, 6 Apr 2005 19:03:13 +0000 (-0700) Subject: [PATCH] add i2c patch for queue. X-Git-Tag: v2.6.11.9~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e329d43be8bf33d483d539906e9d5bf232314e77;p=thirdparty%2Fkernel%2Fstable-queue.git [PATCH] add i2c patch for queue. --- diff --git a/queue/i2c-sysfs_perms-it87_via686a.patch b/queue/i2c-sysfs_perms-it87_via686a.patch new file mode 100644 index 00000000000..e2f2ff5e2c6 --- /dev/null +++ b/queue/i2c-sysfs_perms-it87_via686a.patch @@ -0,0 +1,50 @@ +From khali@linux-fr.org Sat Apr 2 11:26:48 2005 +Date: Sat, 2 Apr 2005 21:26:31 +0200 +From: Jean Delvare +To: Greg KH +Cc: LM Sensors +Subject: [PATCH 2.6] I2C: Fix incorrect sysfs file permissions in it87 and via686a drivers + +The it87 and via686a hardware monitoring drivers each create a sysfs +file named "alarms" in R/W mode, while they should really create it in +read-only mode. Since we don't provide a store function for these files, +write attempts to these files will do something undefined (I guess) and +bad (I am sure). My own try resulted in a locked terminal (where I +attempted the write) and a 100% CPU load until next reboot. + +As a side note, wouldn't it make sense to check, when creating sysfs +files, that readable files have a non-NULL show method, and writable +files have a non-NULL store method? I know drivers are not supposed to +do stupid things, but there is already a BUG_ON for several conditions +in sysfs_create_file, so maybe we could add two more? + +Signed-off-by: Jean Delvare +Signed-off-by: Greg Kroah-Hartman + +--- linux-2.6.12-rc1-bk5/drivers/i2c/chips/it87.c.orig 2005-04-02 18:09:59.000000000 +0200 ++++ linux-2.6.12-rc1-bk5/drivers/i2c/chips/it87.c 2005-04-02 21:12:46.000000000 +0200 +@@ -668,7 +668,7 @@ + struct it87_data *data = it87_update_device(dev); + return sprintf(buf,"%d\n", ALARMS_FROM_REG(data->alarms)); + } +-static DEVICE_ATTR(alarms, S_IRUGO | S_IWUSR, show_alarms, NULL); ++static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); + + static ssize_t + show_vrm_reg(struct device *dev, char *buf) +--- linux-2.6.12-rc1-bk5/drivers/i2c/chips/via686a.c.orig 2005-04-02 18:22:48.000000000 +0200 ++++ linux-2.6.12-rc1-bk5/drivers/i2c/chips/via686a.c 2005-04-02 21:12:55.000000000 +0200 +@@ -574,7 +574,7 @@ + struct via686a_data *data = via686a_update_device(dev); + return sprintf(buf,"%d\n", ALARMS_FROM_REG(data->alarms)); + } +-static DEVICE_ATTR(alarms, S_IRUGO | S_IWUSR, show_alarms, NULL); ++static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); + + /* The driver. I choose to use type i2c_driver, as at is identical to both + smbus_driver and isa_driver, and clients could be of either kind */ + + +-- +Jean Delvare +