On Mon, Dec 05, 2011 at 03:58:07PM -0800, Rhyland Klein wrote:
>  static int sbs_read_word_data(struct i2c_client *client, u8 address)
> @@ -681,15 +682,25 @@ static int __devinit sbs_probe(struct i2c_client 
> *client,
>       struct sbs_platform_data *pdata = client->dev.platform_data;
>       int rc;
>       int irq;
> +     char *name;
>  
> -     chip = kzalloc(sizeof(struct sbs_info), GFP_KERNEL);
> -     if (!chip)
> +     name = kasprintf(GFP_KERNEL, "%s-%s", "sbs", dev_name(&client->dev));

Mm... why not just

kasprintf(GFP_KERNEL, "sbs-%s", dev_name(&client->dev)) ?

> +     if (!name) {
> +             dev_err(&client->dev, "Failed to allocate device name\n");
>               return -ENOMEM;
> +     }
> +
> +     chip = kzalloc(sizeof(struct sbs_info), GFP_KERNEL);
> +     if (!chip) {
> +             rc = -ENOMEM;
> +             goto exit_free_name;
> +     }
>  
>       chip->client = client;
>       chip->enable_detection = false;
>       chip->gpio_detect = false;
> -     chip->power_supply.name = "battery";
> +     chip->name = name;
> +     chip->power_supply.name = name;
>       chip->power_supply.type = POWER_SUPPLY_TYPE_BATTERY;
>       chip->power_supply.properties = sbs_properties;
>       chip->power_supply.num_properties = ARRAY_SIZE(sbs_properties);
> @@ -774,6 +785,9 @@ exit_psupply:
>  
>       kfree(chip);
>  
> +exit_free_name:
> +     kfree(name);
> +
>       return rc;
>  }
>  
> @@ -790,6 +804,7 @@ static int __devexit sbs_remove(struct i2c_client *client)
>  
>       cancel_delayed_work_sync(&chip->work);
>  
> +     kfree(chip->name);

I think you don't really need chip->name.

power_supply_unregister() won't touch power_supply.name, so
you can kfree(chip->power_supply.name);

Otherwise, the patch looks great.

Thanks!

-- 
Anton Vorontsov
Email: cbouatmai...@gmail.com
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to