ret = nand_ecc_register_on_host_hw_engine(&ms->ecc_eng);
if (ret) {
dev_err(&pdev->dev, "failed to register ecc engine.\n");
- goto release_ecc;
+ goto free_buf;
}
ret = devm_add_action_or_reset(&pdev->dev, mtk_unregister_ecc_engine,
&ms->ecc_eng);
if (ret) {
dev_err_probe(&pdev->dev, ret, "failed to add ECC unregister action\n");
- goto release_ecc;
+ goto free_buf;
}
ctlr->num_chipselect = 1;
ret = spi_register_controller(ctlr);
if (ret) {
dev_err(&pdev->dev, "spi_register_controller failed.\n");
- goto release_ecc;
+ goto free_buf;
}
return 0;
+free_buf:
+ kfree(ms->buf);
release_ecc:
mtk_ecc_release(ms->ecc);
return ret;