From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933020Ab0J2WRQ (ORCPT ); Fri, 29 Oct 2010 18:17:16 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:58649 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932438Ab0J2WRN (ORCPT ); Fri, 29 Oct 2010 18:17:13 -0400 Date: Fri, 29 Oct 2010 15:17:10 -0700 From: Andrew Morton To: Vasiliy Kulikov Cc: kernel-janitors@vger.kernel.org, Liu Hong , Kalhan Trisal , Arjan van de Ven , Alan Cox , linux-kernel@vger.kernel.org Subject: Re: [PATCH] misc: isl29020: fix signedness bug Message-Id: <20101029151710.de349042.akpm@linux-foundation.org> In-Reply-To: <1288264443-10627-1-git-send-email-segooon@gmail.com> References: <1288264443-10627-1-git-send-email-segooon@gmail.com> X-Mailer: Sylpheed 2.4.8 (GTK+ 2.12.9; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 28 Oct 2010 15:14:03 +0400 Vasiliy Kulikov wrote: > i2c_smbus_write_byte_data() may return negative error code. This is not > seen to als_sensing_range_store() as the result is stored in unsigned int. > Made it signed. > > Signed-off-by: Vasiliy Kulikov > --- > Compile tested. > > drivers/misc/isl29020.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/misc/isl29020.c b/drivers/misc/isl29020.c > index 34fe835..629d31e 100644 > --- a/drivers/misc/isl29020.c > +++ b/drivers/misc/isl29020.c > @@ -87,7 +87,7 @@ static ssize_t als_sensing_range_store(struct device *dev, > struct device_attribute *attr, const char *buf, size_t count) > { > struct i2c_client *client = to_i2c_client(dev); > - unsigned int ret_val; > + int ret_val; > unsigned long val; > > if (strict_strtoul(buf, 10, &val)) yup. It also needs this: drivers/misc/isl29020.c: don't ignore the i2c_smbus_read_byte_data() return value From: Andrew Morton If i2c_smbus_read_byte_data() fails, this driver will write a mangled errno value into the hardware. Cc: Vasiliy Kulikov Cc: Liu Hong Cc: Kalhan Trisal Cc: Arjan van de Ven Cc: Alan Cox Signed-off-by: Andrew Morton --- drivers/misc/isl29020.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/misc/isl29020.c~a drivers/misc/isl29020.c --- a/drivers/misc/isl29020.c~a +++ a/drivers/misc/isl29020.c @@ -106,8 +106,10 @@ static ssize_t als_sensing_range_store(s val = 4; ret_val = i2c_smbus_read_byte_data(client, 0x00); + if (ret_val < 0) + return ret_val; - ret_val &= 0xFC; /*reset the bit before setting them */ + ret_val &= 0xFC; /* reset the bit before setting them */ ret_val |= val - 1; ret_val = i2c_smbus_write_byte_data(client, 0x00, ret_val); _