const struct i2c_device_id *id)
 {
        struct backlight_properties props;
-       struct tosa_bl_data *data = kzalloc(sizeof(struct tosa_bl_data), GFP_KERNEL);
+       struct tosa_bl_data *data;
        int ret = 0;
+
+       data = devm_kzalloc(&client->dev, sizeof(struct tosa_bl_data),
+                               GFP_KERNEL);
        if (!data)
                return -ENOMEM;
 
        ret = gpio_request(TOSA_GPIO_BL_C20MA, "backlight");
        if (ret) {
                dev_dbg(&data->bl->dev, "Unable to request gpio!\n");
-               goto err_gpio_bl;
+               return ret;
        }
        ret = gpio_direction_output(TOSA_GPIO_BL_C20MA, 0);
        if (ret)
        data->bl = NULL;
 err_gpio_dir:
        gpio_free(TOSA_GPIO_BL_C20MA);
-err_gpio_bl:
-       kfree(data);
        return ret;
 }
 
 
        gpio_free(TOSA_GPIO_BL_C20MA);
 
-       kfree(data);
-
        return 0;
 }