Re: clean up and warnings patch for 2.6.12-rc4-mm1 i2c-chip

From: Daniel Paschka
Date: Mon May 16 2005 - 04:41:33 EST


Alexey Fisher wrote:

> diff -uprN linux/drivers/i2c/chips/max1619.c linux-2.6-dev/drivers/i2c/chips/max1619.c
> --- linux/drivers/i2c/chips/max1619.c 2005-05-15 22:49:31.000000000 +0200
> +++ linux-2.6-dev/drivers/i2c/chips/max1619.c 2005-05-15 21:05:56.000000000 +0200
> @@ -195,6 +195,7 @@ static int max1619_detect(struct i2c_ada
> u8 reg_config=0, reg_convrate=0, reg_status=0;
> u8 man_id, chip_id;
> if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
> + err = -ENODEV;
> goto exit;


Sure about that, I think there are some brackets missing.


> if (!(data = kmalloc(sizeof(struct max1619_data), GFP_KERNEL))) {
> @@ -234,6 +235,7 @@ static int max1619_detect(struct i2c_ada
> dev_dbg(&adapter->dev,
> "MAX1619 detection failed at 0x%02x.\n",
> address);
> + return -ENODEV;
> goto exit_free;
> }
> }


I would expect gcc to throw a warning about unreachable code here
because goto exit_free ist behind a return statement.
Don't you mean
err = -ENODEV;
goto exit_free;

That way the data structure data will be freed, too.

> @@ -254,6 +256,7 @@ static int max1619_detect(struct i2c_ada
> dev_info(&adapter->dev,
> "Unsupported chip (man_id=0x%02X, "
> "chip_id=0x%02X).\n", man_id, chip_id);
> + return -ENODEV;
> goto exit_free;
> }

Same here.

I am not using this driver and am not fully up to date with the kernel
sources so I am sorry if I am talking nonesense here.

Bye Daniel

Attachment: signature.asc
Description: OpenPGP digital signature