[PATCH] 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 <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by Jean Delvare and committed by Greg KH 1d66c64c 86b5ac87

+2 -2
+1 -1
drivers/i2c/chips/it87.c
··· 668 668 struct it87_data *data = it87_update_device(dev); 669 669 return sprintf(buf,"%d\n", ALARMS_FROM_REG(data->alarms)); 670 670 } 671 - static DEVICE_ATTR(alarms, S_IRUGO | S_IWUSR, show_alarms, NULL); 671 + static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); 672 672 673 673 static ssize_t 674 674 show_vrm_reg(struct device *dev, char *buf)
+1 -1
drivers/i2c/chips/via686a.c
··· 574 574 struct via686a_data *data = via686a_update_device(dev); 575 575 return sprintf(buf,"%d\n", ALARMS_FROM_REG(data->alarms)); 576 576 } 577 - static DEVICE_ATTR(alarms, S_IRUGO | S_IWUSR, show_alarms, NULL); 577 + static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); 578 578 579 579 /* The driver. I choose to use type i2c_driver, as at is identical to both 580 580 smbus_driver and isa_driver, and clients could be of either kind */