return -ENOMEM;
 
        flash->pdata = lm3554_platform_data_func(client);
-       if (IS_ERR(flash->pdata))
-               return PTR_ERR(flash->pdata);
+       if (IS_ERR(flash->pdata)) {
+               err = PTR_ERR(flash->pdata);
+               goto fail1;
+       }
 
        v4l2_i2c_subdev_init(&flash->sd, client, &lm3554_ops);
        flash->sd.internal_ops = &lm3554_internal_ops;
                                   ARRAY_SIZE(lm3554_controls));
        if (ret) {
                dev_err(&client->dev, "error initialize a ctrl_handler.\n");
-               goto fail2;
+               goto fail3;
        }
 
        for (i = 0; i < ARRAY_SIZE(lm3554_controls); i++)
 
        if (flash->ctrl_handler.error) {
                dev_err(&client->dev, "ctrl_handler error.\n");
-               goto fail2;
+               goto fail3;
        }
 
        flash->sd.ctrl_handler = &flash->ctrl_handler;
        err = media_entity_pads_init(&flash->sd.entity, 0, NULL);
        if (err) {
                dev_err(&client->dev, "error initialize a media entity.\n");
-               goto fail1;
+               goto fail2;
        }
 
        flash->sd.entity.function = MEDIA_ENT_F_FLASH;
        err = lm3554_gpio_init(client);
        if (err) {
                dev_err(&client->dev, "gpio request/direction_output fail");
-               goto fail2;
+               goto fail3;
        }
        return atomisp_register_i2c_module(&flash->sd, NULL, LED_FLASH);
-fail2:
+fail3:
        media_entity_cleanup(&flash->sd.entity);
        v4l2_ctrl_handler_free(&flash->ctrl_handler);
-fail1:
+fail2:
        v4l2_device_unregister_subdev(&flash->sd);
+fail1:
        kfree(flash);
 
        return err;