In the Linux kernel, the following vulnerability has been resolved:
pstore: inode: Only d_invalidate() is needed
Unloading a modular pstore backend with records in pstorefs would trigger the dput() double-drop warning:
WARNING: CPU: 0 PID: 2569 at fs/dcache.c:762 dput.part.0+0x3f3/0x410
Using the combo of ddrop()/dput() (as mentioned in Documentation/filesystems/vfs.rst) isn't the right approach here, and leads to the reference counting problem seen above. Use dinvalidate() and update the code to not bother checking for error codes that can never happen.
[
{
"digest": {
"length": 533.0,
"function_hash": "487028990008367022546451367838178683"
},
"target": {
"function": "pstore_put_backend_records",
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4cdf9006fc095af71da80e9b5f48a32e991b9ed3",
"deprecated": false,
"id": "CVE-2024-27389-048df006",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"141465106865715319279012821235924651908",
"451097132397115363147878579883140002",
"92664683903259525384926847216345175221",
"208782261790375853743577793157010551737",
"185158246669382526083443309434489162682",
"149113119439553294773453751088227288830",
"175023789376452056587059901333093280540",
"46443871412296515395116970688791348640",
"282610563525034327353509294758991400047",
"246611441674393293662739742582180270409",
"162630182429476872986349570284661590608",
"178651787716955984136744417135677935614",
"259607017100105877125884312146201715519",
"82264674388172356160310169968235005015",
"54763657337422072502892365145855523356",
"155978610273287454087359361257828211829"
],
"threshold": 0.9
},
"target": {
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4cdf9006fc095af71da80e9b5f48a32e991b9ed3",
"deprecated": false,
"id": "CVE-2024-27389-6a00eaf5",
"signature_type": "Line"
},
{
"digest": {
"line_hashes": [
"141465106865715319279012821235924651908",
"451097132397115363147878579883140002",
"92664683903259525384926847216345175221",
"208782261790375853743577793157010551737",
"185158246669382526083443309434489162682",
"149113119439553294773453751088227288830",
"175023789376452056587059901333093280540",
"46443871412296515395116970688791348640",
"282610563525034327353509294758991400047",
"246611441674393293662739742582180270409",
"162630182429476872986349570284661590608",
"178651787716955984136744417135677935614",
"259607017100105877125884312146201715519",
"82264674388172356160310169968235005015",
"54763657337422072502892365145855523356",
"155978610273287454087359361257828211829"
],
"threshold": 0.9
},
"target": {
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a43e0fc5e9134a46515de2f2f8d4100b74e50de3",
"deprecated": false,
"id": "CVE-2024-27389-80066781",
"signature_type": "Line"
},
{
"digest": {
"length": 533.0,
"function_hash": "487028990008367022546451367838178683"
},
"target": {
"function": "pstore_put_backend_records",
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@db6e5e16f1ee9e3b01d2f71c7f0ba945f4bf0f4e",
"deprecated": false,
"id": "CVE-2024-27389-b3f8a813",
"signature_type": "Function"
},
{
"digest": {
"length": 533.0,
"function_hash": "487028990008367022546451367838178683"
},
"target": {
"function": "pstore_put_backend_records",
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a43e0fc5e9134a46515de2f2f8d4100b74e50de3",
"deprecated": false,
"id": "CVE-2024-27389-c7dae080",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"141465106865715319279012821235924651908",
"451097132397115363147878579883140002",
"92664683903259525384926847216345175221",
"208782261790375853743577793157010551737",
"185158246669382526083443309434489162682",
"149113119439553294773453751088227288830",
"175023789376452056587059901333093280540",
"46443871412296515395116970688791348640",
"282610563525034327353509294758991400047",
"246611441674393293662739742582180270409",
"162630182429476872986349570284661590608",
"178651787716955984136744417135677935614",
"259607017100105877125884312146201715519",
"82264674388172356160310169968235005015",
"54763657337422072502892365145855523356",
"155978610273287454087359361257828211829"
],
"threshold": 0.9
},
"target": {
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cb9e802e49c24eeb3af35e9e8c04d526f35f112a",
"deprecated": false,
"id": "CVE-2024-27389-d257a35e",
"signature_type": "Line"
},
{
"digest": {
"length": 533.0,
"function_hash": "487028990008367022546451367838178683"
},
"target": {
"function": "pstore_put_backend_records",
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@340682ed1932b8e3bd0bfc6c31a0c6354eb57cc6",
"deprecated": false,
"id": "CVE-2024-27389-dcf6c644",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"141465106865715319279012821235924651908",
"451097132397115363147878579883140002",
"92664683903259525384926847216345175221",
"208782261790375853743577793157010551737",
"185158246669382526083443309434489162682",
"149113119439553294773453751088227288830",
"175023789376452056587059901333093280540",
"46443871412296515395116970688791348640",
"282610563525034327353509294758991400047",
"246611441674393293662739742582180270409",
"162630182429476872986349570284661590608",
"178651787716955984136744417135677935614",
"259607017100105877125884312146201715519",
"82264674388172356160310169968235005015",
"54763657337422072502892365145855523356",
"155978610273287454087359361257828211829"
],
"threshold": 0.9
},
"target": {
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@db6e5e16f1ee9e3b01d2f71c7f0ba945f4bf0f4e",
"deprecated": false,
"id": "CVE-2024-27389-ee818e7a",
"signature_type": "Line"
},
{
"digest": {
"length": 533.0,
"function_hash": "487028990008367022546451367838178683"
},
"target": {
"function": "pstore_put_backend_records",
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cb9e802e49c24eeb3af35e9e8c04d526f35f112a",
"deprecated": false,
"id": "CVE-2024-27389-f4d7ff5e",
"signature_type": "Function"
},
{
"digest": {
"line_hashes": [
"141465106865715319279012821235924651908",
"451097132397115363147878579883140002",
"92664683903259525384926847216345175221",
"208782261790375853743577793157010551737",
"185158246669382526083443309434489162682",
"149113119439553294773453751088227288830",
"175023789376452056587059901333093280540",
"46443871412296515395116970688791348640",
"282610563525034327353509294758991400047",
"246611441674393293662739742582180270409",
"162630182429476872986349570284661590608",
"178651787716955984136744417135677935614",
"259607017100105877125884312146201715519",
"82264674388172356160310169968235005015",
"54763657337422072502892365145855523356",
"155978610273287454087359361257828211829"
],
"threshold": 0.9
},
"target": {
"file": "fs/pstore/inode.c"
},
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@340682ed1932b8e3bd0bfc6c31a0c6354eb57cc6",
"deprecated": false,
"id": "CVE-2024-27389-fccfae36",
"signature_type": "Line"
}
]