android_kernel_xiaomi_sm8450/drivers/nfc
Zheng Wang 43aa468df2 nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition
[ Upstream commit 5000fe6c27827a61d8250a7e4a1d26c3298ef4f6 ]

This bug influences both st_nci_i2c_remove and st_nci_spi_remove.
Take st_nci_i2c_remove as an example.

In st_nci_i2c_probe, it called ndlc_probe and bound &ndlc->sm_work
with llt_ndlc_sm_work.

When it calls ndlc_recv or timeout handler, it will finally call
schedule_work to start the work.

When we call st_nci_i2c_remove to remove the driver, there
may be a sequence as follows:

Fix it by finishing the work before cleanup in ndlc_remove

CPU0                  CPU1

                    |llt_ndlc_sm_work
st_nci_i2c_remove   |
  ndlc_remove       |
     st_nci_remove  |
     nci_free_device|
     kfree(ndev)    |
//free ndlc->ndev   |
                    |llt_ndlc_rcv_queue
                    |nci_recv_frame
                    |//use ndlc->ndev

Fixes: 35630df68d ("NFC: st21nfcb: Add driver for STMicroelectronics ST21NFCB NFC chip")
Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230312160837.2040857-1-zyytlz.wz@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-03-22 13:29:58 +01:00
..
fdp nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties 2023-03-17 08:45:10 +01:00
microread treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
nfcmrvl nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send() 2022-11-10 18:14:17 +01:00
nxp-nci nfc: nxp-nci: Fix potential memory leak in nxp_nci_send() 2022-11-10 18:14:17 +01:00
pn533 nfc: pn533: initialize struct pn533_out_arg properly 2023-03-22 13:29:57 +01:00
pn544 treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
s3fwrn5 nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send() 2022-11-10 18:14:17 +01:00
st21nfca nfc: fix memory leak of se_io context in nfc_genl_se_io 2023-03-11 16:40:13 +01:00
st95hf NFC: st95hf: Fix memleak in st95hf_in_send_cmd 2020-08-24 17:34:25 -07:00
st-nci nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition 2023-03-22 13:29:58 +01:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mei_phy.c nfc/mei: convert to SPDX license tags 2019-03-28 02:07:54 +09:00
mei_phy.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfcsim.c nfc: nfcsim: fix use after free during module unload 2021-08-04 12:46:41 +02:00
port100.c NFC: port100: fix use-after-free in port100_send_complete 2022-03-16 14:15:59 +01:00
trf7970a.c nfc: remove unneeded break 2020-10-20 10:36:41 -07:00