hwmon: (pmbus) Convert pmbus drivers to use devm_kzalloc
Guenter Roeck
maintainerPATCH 1/7 hwmon: (pmbus) Convert pmbus drivers to use devm_kzalloc
Marginally less code and eliminate the possibility of memory leaks.
Signed-off-by Guenter Roeck <[email protected]>
--- drivers/hwmon/pmbus/adm1275.c | 16 ++--------- drivers/hwmon/pmbus/lm25066.c | 26 ++++-------------- drivers/hwmon/pmbus/ltc2978.c | 30 +++++--------------- drivers/hwmon/pmbus/pmbus.c | 17 ++---------- drivers/hwmon/pmbus/pmbus_core.c | 54 ++++++++++++------------------------- drivers/hwmon/pmbus/ucd9000.c | 26 +++++------------- drivers/hwmon/pmbus/ucd9200.c | 22 ++++----------- drivers/hwmon/pmbus/zl6100.c | 19 +++---------- 8 files changed, 56 insertions(+), 154 deletions(-)
drivers/hwmon/pmbus/adm1275.c +3 -13
@@ -229,7 +229,8 @@ static int adm1275_probe(struct i2c_client *client,if (device_config <0 )return device_config; - data =kzalloc (sizeof (struct adm1275_data ),GFP_KERNEL ); + data =devm_kzalloc (&client->dev,sizeof (struct adm1275_data ), +GFP_KERNEL );if (!data)return -ENOMEM ;
@@ -297,23 +298,12 @@ static int adm1275_probe(struct i2c_client *client,break ; } - ret =pmbus_do_probe (client, id, info); -if (ret) - goto err_mem; -return 0 ; - -err_mem: -kfree (data); -return ret; +return pmbus_do_probe (client, id, info); }static int adm1275_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info =pmbus_get_driver_info (client); -const struct adm1275_data *data =to_adm1275_data (info); -pmbus_do_remove (client); -kfree (data);return 0 ; }
drivers/hwmon/pmbus/lm25066.c +6 -20
@@ -176,7 +176,6 @@ static int lm25066_probe(struct i2c_client *client, const struct i2c_device_id *id) {int config; -int ret;struct lm25066_data *data;struct pmbus_driver_info *info;
@@ -184,15 +183,14 @@ static int lm25066_probe(struct i2c_client *client, I2C_FUNC_SMBUS_READ_BYTE_DATA))return -ENODEV ; - data =kzalloc (sizeof (struct lm25066_data ),GFP_KERNEL ); + data =devm_kzalloc (&client->dev,sizeof (struct lm25066_data ), +GFP_KERNEL );if (!data)return -ENOMEM ; config =i2c_smbus_read_byte_data (client,LM25066_DEVICE_SETUP ); -if (config <0 ) { - ret = config; - goto err_mem; - } +if (config <0 ) +return config; data->id = id->driver_data; info = &data->info;
@@ -291,27 +289,15 @@ static int lm25066_probe(struct i2c_client *client, }break ;default : - ret = -ENODEV ; - goto err_mem; +return -ENODEV ; } - ret =pmbus_do_probe (client, id, info); -if (ret) - goto err_mem; -return 0 ; - -err_mem: -kfree (data); -return ret; +return pmbus_do_probe (client, id, info); }static int lm25066_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info =pmbus_get_driver_info (client); -const struct lm25066_data *data =to_lm25066_data (info); -pmbus_do_remove (client); -kfree (data);return 0 ; }
drivers/hwmon/pmbus/ltc2978.c +8 -22
@@ -287,7 +287,7 @@ MODULE_DEVICE_TABLE(i2c, ltc2978_id);static int ltc2978_probe (struct i2c_client *client,const struct i2c_device_id *id) { -int chip_id, ret, i; +int chip_id, i;struct ltc2978_data *data;struct pmbus_driver_info *info;
@@ -295,15 +295,14 @@ static int ltc2978_probe(struct i2c_client *client, I2C_FUNC_SMBUS_READ_WORD_DATA))return -ENODEV ; - data =kzalloc (sizeof (struct ltc2978_data ),GFP_KERNEL ); + data =devm_kzalloc (&client->dev,sizeof (struct ltc2978_data ), +GFP_KERNEL );if (!data)return -ENOMEM ; chip_id =i2c_smbus_read_word_data (client,LTC2978_MFR_SPECIAL_ID ); -if (chip_id <0 ) { - ret = chip_id; - goto err_mem; - } +if (chip_id <0 ) +return chip_id;if (chip_id =LTC2978_ID_REV1 || chip_id =LTC2978_ID_REV2 ) { data->id = ltc2978;
@@ -311,8 +310,7 @@ static int ltc2978_probe(struct i2c_client *client, data->id = ltc3880; }else {dev_err (&client->dev,"Unsupported chip ID 0x%x\n" , chip_id); - ret = -ENODEV ; - goto err_mem; +return -ENODEV ; }if (data->id != id->driver_data) dev_warn(&client->dev,
@@ -357,27 +355,15 @@ static int ltc2978_probe(struct i2c_client *client, data->vout_min[1 ] =0xffff ;break ;default : - ret = -ENODEV ; - goto err_mem; +return -ENODEV ; } - ret =pmbus_do_probe (client, id, info); -if (ret) - goto err_mem; -return 0 ; - -err_mem: -kfree (data); -return ret; +return pmbus_do_probe (client, id, info); }static int ltc2978_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info =pmbus_get_driver_info (client); -const struct ltc2978_data *data =to_ltc2978_data (info); -pmbus_do_remove (client); -kfree (data);return 0 ; }
drivers/hwmon/pmbus/pmbus.c +3 -14
@@ -166,32 +166,21 @@ static int pmbus_probe(struct i2c_client *client, const struct i2c_device_id *id) {struct pmbus_driver_info *info; -int ret; - info =kzalloc (sizeof (struct pmbus_driver_info ),GFP_KERNEL ); + info =devm_kzalloc (&client->dev,sizeof (struct pmbus_driver_info ), +GFP_KERNEL );if (!info)return -ENOMEM ; info->pages = id->driver_data; info->identify = pmbus_identify; - ret =pmbus_do_probe (client, id, info); -if (ret <0 ) - goto out; -return 0 ; - -out: -kfree (info); -return ret; +return pmbus_do_probe (client, id, info); }static int pmbus_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info; - - info =pmbus_get_driver_info (client);pmbus_do_remove (client); -kfree (info);return 0 ; }
drivers/hwmon/pmbus/pmbus_core.c +18 -36
125 lines not on this page · raw message
drivers/hwmon/pmbus/ucd9000.c +7 -19
@@ -155,7 +155,8 @@ static int ucd9000_probe(struct i2c_client *client,"Device mismatch: Configured %s, detected %s\n" , id->name, mid->name); - data =kzalloc (sizeof (struct ucd9000_data ),GFP_KERNEL ); + data =devm_kzalloc (&client->dev,sizeof (struct ucd9000_data ), +GFP_KERNEL );if (!data)return -ENOMEM ; info = &data->info;
@@ -164,13 +165,12 @@ static int ucd9000_probe(struct i2c_client *client,if (ret <0 ) {dev_err (&client->dev,"Failed to read number of active pages\n" ); - goto out; +return ret; } info->pages = ret;if (!info->pages) {dev_err (&client->dev,"No pages configured\n" ); - ret = -ENODEV ; - goto out; +return -ENODEV ; }/* The internal temperature sensor is always active */
@@ -181,8 +181,7 @@ static int ucd9000_probe(struct i2c_client *client, block_buffer);if (ret <=0 ) {dev_err (&client->dev,"Failed to read configuration data\n" ); - ret = -ENODEV ; - goto out; +return -ENODEV ; }for (i =0 ; i < ret; i++) {int page =UCD9000_MON_PAGE (block_buffer[i]);
@@ -218,7 +217,7 @@ static int ucd9000_probe(struct i2c_client *client,UCD9000_FAN_CONFIG , data->fan_data[i]);if (ret <0 ) - goto out; +return ret; }i2c_smbus_write_byte_data (client,UCD9000_FAN_CONFIG_INDEX ,0 );
@@ -227,23 +226,12 @@ static int ucd9000_probe(struct i2c_client *client, | PMBUS_HAVE_FAN34 | PMBUS_HAVE_STATUS_FAN34; } - ret =pmbus_do_probe (client, mid, info); -if (ret <0 ) - goto out; -return 0 ; - -out: -kfree (data); -return ret; +return pmbus_do_probe (client, mid, info); }static int ucd9000_remove (struct i2c_client *client) { -struct ucd9000_data *data; - - data =to_ucd9000_data (pmbus_get_driver_info (client));pmbus_do_remove (client); -kfree (data);return 0 ; }
drivers/hwmon/pmbus/ucd9200.c +6 -16
@@ -81,7 +81,8 @@ static int ucd9200_probe(struct i2c_client *client,"Device mismatch: Configured %s, detected %s\n" , id->name, mid->name); - info =kzalloc (sizeof (struct pmbus_driver_info ),GFP_KERNEL ); + info =devm_kzalloc (&client->dev,sizeof (struct pmbus_driver_info ), +GFP_KERNEL );if (!info)return -ENOMEM ;
@@ -89,7 +90,7 @@ static int ucd9200_probe(struct i2c_client *client, block_buffer);if (ret <0 ) {dev_err (&client->dev,"Failed to read phase information\n" ); - goto out; +return ret; }/*
@@ -106,8 +107,7 @@ static int ucd9200_probe(struct i2c_client *client, }if (!info->pages) {dev_err (&client->dev,"No rails configured\n" ); - ret = -ENODEV ; - goto out; +return -ENODEV ; }dev_info (&client->dev,"%d rails configured\n" , info->pages);
@@ -137,7 +137,7 @@ static int ucd9200_probe(struct i2c_client *client,if (ret <0 ) {dev_err (&client->dev,"Failed to initialize PHASE registers\n" ); - goto out; +return ret; } }if (info->pages >1 )
@@ -160,22 +160,12 @@ static int ucd9200_probe(struct i2c_client *client,if (mid->driver_data = ucd9240) info->func[0 ] |=PMBUS_HAVE_FAN12 |PMBUS_HAVE_STATUS_FAN12 ; - ret =pmbus_do_probe (client, mid, info); -if (ret <0 ) - goto out; -return 0 ; -out: -kfree (info); -return ret; +return pmbus_do_probe (client, mid, info); }static int ucd9200_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info; - - info =pmbus_get_driver_info (client);pmbus_do_remove (client); -kfree (info);return 0 ; }
drivers/hwmon/pmbus/zl6100.c +5 -14
@@ -192,7 +192,8 @@ static int zl6100_probe(struct i2c_client *client,"Device mismatch: Configured %s, detected %s\n" , id->name, mid->name); - data =kzalloc (sizeof (struct zl6100_data ),GFP_KERNEL ); + data =devm_kzalloc (&client->dev,sizeof (struct zl6100_data ), +GFP_KERNEL );if (!data)return -ENOMEM ;
@@ -227,7 +228,8 @@ static int zl6100_probe(struct i2c_client *client, ret =i2c_smbus_read_word_data (client,ZL6100_MFR_CONFIG );if (ret <0 ) - goto err_mem; +return ret; +if (ret &ZL6100_MFR_XTEMP_ENABLE ) info->func[0 ] |=PMBUS_HAVE_TEMP2 ;
@@ -239,23 +241,12 @@ static int zl6100_probe(struct i2c_client *client, info->write_word_data = zl6100_write_word_data; info->write_byte = zl6100_write_byte; - ret =pmbus_do_probe (client, mid, info); -if (ret) - goto err_mem; -return 0 ; - -err_mem: -kfree (data); -return ret; +return pmbus_do_probe (client, mid, info); }static int zl6100_remove (struct i2c_client *client) { -const struct pmbus_driver_info *info =pmbus_get_driver_info (client); -const struct zl6100_data *data =to_zl6100_data (info); -pmbus_do_remove (client); -kfree (data);return 0 ; }
Signature · 7 lines
1.7.5.4 _______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors