[PATCH] lm75.c write values below 0°C

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 24, 2007 at 03:09:57PM +0200, Jean Delvare wrote:
> On Tue, 24 Jul 2007 14:57:53 +0200, Christian Hohnstaedt wrote:
> > On Tue, Jul 24, 2007 at 02:06:04PM +0200, Jean Delvare wrote:
> > > On Tue, 24 Jul 2007 11:35:37 +0200, Christian Hohnstaedt wrote:
> > > > diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
> > > > index a40166f..4fa3220 100644
> > > > --- a/drivers/hwmon/lm75.c
> > > > +++ b/drivers/hwmon/lm75.c
> > > > @@ -95,7 +95,7 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
> > > >  	struct i2c_client *client = to_i2c_client(dev);
> > > >  	struct lm75_data *data = i2c_get_clientdata(client);
> > > >  	int nr = attr->index;
> > > > -	unsigned long temp = simple_strtoul(buf, NULL, 10);
> > > > +	int temp = simple_strtol(buf, NULL, 10);
> > > >  
> > > >  	mutex_lock(&data->update_lock);
> > > >  	data->temp[nr] = LM75_TEMP_TO_REG(temp);
> > > 
> > > temp should be a long rather than an int. Otherwise the input value
> > > might wrap before LM75_TEMP_TO_REG has a chance to clamp it.
> > 
> > Since LM75_TEMP_TO_REG() expects an int, I thought it would be best
> > to make temp an int here, to reduce confusion.
> 
> Good point. But what this means then is that LM75_TEMP_TO_REG() should
> take a long as a parameter rather than an int.

Sounds reasonable.

Then LM75_TEMP_FROM_REG() should also return a long instead of an int.

Other drivers using LM75_TEMP_TO_REG:

driver          temp.type   func
------------------------------------
asb100.c        long        strtoul
ds1621.c        direct      strtoul
w83627e?hf.c    u32         strtoul
w83781d.c       s32         strtol

Looks like there is some kind of general inconsistency :-)


Christian Hohnstaedt

-- 
Christian Hohnstaedt
Software Engineer

Innominate Security Technologies AG  /protecting industrial networks/
tel: +49.30.6392-3285 fax: +49.30.6392-3307
Albert-Einstein-Strasse 14, D-12489 Berlin, Germany
http://www.innominate.com

Register Court: AG Charlottenburg, HR B 81603
Management Board: Joachim Fietz, Dirk Seewald
Chairman of the Supervisory Board: Edward M. Stadum




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux