nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition
In the Linux kernel, the following vulnerability has been resolved: nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition 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
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 4.14.311, 4.19.279, 5.10.176, 5.15.104, 5.4.238, 6.1.21, 6.2.8
- CVEs
- CVE-2023-53106
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 18:15 UTC · Revision 1
Source evidence
nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition
core-osv · Original sourcePublished 2 May 2025, 15:55 UTC
In the Linux kernel, the following vulnerability has been resolved: nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition 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
osv:CVE-2023-53106
Kernel
Fixed versions: 4.14.311, 4.19.279, 5.4.238, 5.10.176, 5.15.104, 6.1.21, 6.2.8
Complete source record
{
"id": "23f6d875b01775444d86c25f1723d8e08be23e3921cb7dc3d7b80a2106a41e40",
"url": "https://osv.dev/vulnerability/CVE-2023-53106",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition",
"summary": "In the Linux kernel, the following vulnerability has been resolved: nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition 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",
"evidence": "osv:CVE-2023-53106",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "4.14.311",
"evidence": "/affected/1/ranges"
},
{
"value": "4.19.279",
"evidence": "/affected/1/ranges"
},
{
"value": "5.4.238",
"evidence": "/affected/1/ranges"
},
{
"value": "5.10.176",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.104",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.21",
"evidence": "/affected/1/ranges"
},
{
"value": "6.2.8",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2023-53106",
"aliases": [
"CVE-2023-53106"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "35630df68d6030daf12dde12ed07bbe26324e6ac"
},
{
"fixed": "2156490c4b7cacda9a18ec99929940b8376dc0e3"
},
{
"fixed": "3405eb641dafcc8b28d174784b203c1622c121bf"
},
{
"fixed": "b0c202a8dc63008205a5d546559736507a9aae66"
},
{
"fixed": "43aa468df246175207a7d5d7d6d31b231f15b49c"
},
{
"fixed": "84dd9cc34014e3a3dcce0eb6d54b8a067e97676b"
},
{
"fixed": "5e331022b448fbc5e76f24349cd0246844dcad25"
},
{
"fixed": "f589e5b56c562d99ea74e05b1c3f0eab78aa17a3"
},
{
"fixed": "5000fe6c27827a61d8250a7e4a1d26c3298ef4f6"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53106.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.17.0"
},
{
"fixed": "4.14.311"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.15.0"
},
{
"fixed": "4.19.279"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.20.0"
},
{
"fixed": "5.4.238"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.176"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.104"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.21"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.2.8"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53106.json"
}
}
],
"modified": "2026-10-28T02:30:31.487016077Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/2156490c4b7cacda9a18ec99929940b8376dc0e3",
"https://git.kernel.org/stable/c/3405eb641dafcc8b28d174784b203c1622c121bf",
"https://git.kernel.org/stable/c/43aa468df246175207a7d5d7d6d31b231f15b49c",
"https://git.kernel.org/stable/c/5000fe6c27827a61d8250a7e4a1d26c3298ef4f6",
"https://git.kernel.org/stable/c/5e331022b448fbc5e76f24349cd0246844dcad25",
"https://git.kernel.org/stable/c/84dd9cc34014e3a3dcce0eb6d54b8a067e97676b",
"https://git.kernel.org/stable/c/b0c202a8dc63008205a5d546559736507a9aae66",
"https://git.kernel.org/stable/c/f589e5b56c562d99ea74e05b1c3f0eab78aa17a3",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53106.json",
"https://nvd.nist.gov/vuln/detail/CVE-2023-53106",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53106.json"
}
},
"related_cves": [
{
"value": "CVE-2023-53106",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 498341,
"published_at": "2025-05-02T15:55:47.501+00:00"
}