mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 03:35:32 -04:00
spi: qpic-snand: free OOB buffer with ECC context
qcom_spi_ecc_init_ctx_pipelined() allocates qspi->oob_buf as part of the pipelined ECC context setup. The buffer is then used by the raw and ECC page I/O paths through the NAND ECC context. The matching cleanup callback only frees the qpic_ecc structure, and the init error path also skips the OOB buffer after it has been allocated. Free qspi->oob_buf on both paths and clear the pointer so the ECC context teardown owns all resources allocated during init. Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn> Link: https://patch.msgid.link/20260616151129.76060-1-pengpeng@iscas.ac.cn Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -394,14 +394,19 @@ static int qcom_spi_ecc_init_ctx_pipelined(struct nand_device *nand)
|
||||
return 0;
|
||||
|
||||
err_free_ecc_cfg:
|
||||
kfree(snandc->qspi->oob_buf);
|
||||
snandc->qspi->oob_buf = NULL;
|
||||
kfree(ecc_cfg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void qcom_spi_ecc_cleanup_ctx_pipelined(struct nand_device *nand)
|
||||
{
|
||||
struct qcom_nand_controller *snandc = nand_to_qcom_snand(nand);
|
||||
struct qpic_ecc *ecc_cfg = nand_to_ecc_ctx(nand);
|
||||
|
||||
kfree(snandc->qspi->oob_buf);
|
||||
snandc->qspi->oob_buf = NULL;
|
||||
kfree(ecc_cfg);
|
||||
}
|
||||
|
||||
@@ -1645,4 +1650,3 @@ module_platform_driver(qcom_spi_driver);
|
||||
MODULE_DESCRIPTION("SPI driver for QPIC QSPI cores");
|
||||
MODULE_AUTHOR("Md Sadre Alam <quic_mdalam@quicinc.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user