linux-stable/drivers/mtd/nand
Lv Yunlong 8adf43281a mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init
[ Upstream commit 076de75de1 ]

If the callee gpmi_alloc_dma_buffer() failed to alloc memory for
this->raw_buffer, gpmi_free_dma_buffer() will be called to free
this->auxiliary_virt. But this->auxiliary_virt is still a non-NULL
and valid ptr.

Then gpmi_alloc_dma_buffer() returns err and gpmi_free_dma_buffer()
is called again to free this->auxiliary_virt in err_out. This causes
a double free.

As gpmi_free_dma_buffer() has already called in gpmi_alloc_dma_buffer's
error path, so it should return err directly instead of releasing the dma
buffer again.

Fixes: 4d02423e9a ("mtd: nand: gpmi: Fix gpmi_nand_init() error path")
Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20210403060905.5251-1-lyl2019@mail.ustc.edu.cn
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-22 10:57:28 +02:00
..
atmel mtd: rawnand: atmel: fix possible object reference leak 2019-12-05 15:38:21 +01:00
bcm47xxnflash mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
brcmnand mtd: rawnand: brcmnand: fix CS0 layout 2020-07-22 09:22:25 +02:00
gpmi-nand mtd: rawnand: gpmi: Fix a double free in gpmi_nand_init 2021-05-22 10:57:28 +02:00
ams-delta.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
au1550nd.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
bf5xx_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
cafe_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
cmx270_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
cs553x_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
davinci_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
denali.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
denali.h
denali_dt.c
denali_pci.c
diskonchip.c mtd: rawnand: diskonchip: Fix the probe error path 2020-06-25 15:42:00 +02:00
docg4.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
fsl_elbc_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
fsl_ifc_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
fsl_upm.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
fsmc_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
gpio.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
hisi504_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
jz4740_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
jz4780_bch.c
jz4780_bch.h
jz4780_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
Kconfig
lpc32xx_mlc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
lpc32xx_slc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
Makefile
mpc5121_nfc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
mtk_ecc.c
mtk_ecc.h
mtk_nand.c mtd: rawnand: mtk: Fix the probe error path 2020-06-25 15:42:01 +02:00
mxc_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
nand_amd.c
nand_base.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
nand_bbt.c
nand_bch.c
nand_ecc.c
nand_hynix.c
nand_ids.c
nand_macronix.c
nand_micron.c
nand_samsung.c
nand_timings.c
nand_toshiba.c
nandsim.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
ndfc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
nuc900_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
omap2.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
omap_elm.c mtd: rawnand: omap_elm: Fix runtime PM imbalance on error 2020-10-01 13:12:46 +02:00
orion_nand.c mtd: rawnand: orion: Fix the probe error path 2020-06-25 15:42:00 +02:00
oxnas_nand.c mtd: rawnand: oxnas: Release all devices in the _remove() path 2020-07-22 09:22:25 +02:00
pasemi_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
plat_nand.c mtd: rawnand: plat_nand: Fix the probe error path 2020-06-25 15:42:01 +02:00
pxa3xx_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
qcom_nandc.c mtd: rawnand: qcom: avoid write to unavailable register 2020-08-21 09:48:15 +02:00
r852.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
r852.h
s3c2410.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
sh_flctl.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
sharpsl.c mtd: rawnand: sharpsl: Fix the probe error path 2020-06-25 15:42:00 +02:00
sm_common.c
sm_common.h
socrates_nand.c mtd: rawnand: socrates: Fix the probe error path 2020-06-25 15:42:01 +02:00
sunxi_nand.c mtd: rawnand: sunxi: Fix the probe error path 2020-10-14 09:51:11 +02:00
tango_nand.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
tmio_nand.c mtd: rawnand: tmio: Fix the probe error path 2020-06-25 15:42:01 +02:00
txx9ndfmc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
vf610_nfc.c mtd: rawnand: Pass a nand_chip object to nand_release() 2020-06-25 15:42:00 +02:00
xway_nand.c mtd: rawnand: xway: Fix the probe error path 2020-06-25 15:42:00 +02:00