CVE-2024-26893

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-26893
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-26893.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2024-26893
Downstream
Related
Published
2024-04-17T10:27:45Z
Modified
2025-10-15T09:24:37.370420Z
Summary
firmware: arm_scmi: Fix double free in SMC transport cleanup path
Details

In the Linux kernel, the following vulnerability has been resolved:

firmware: arm_scmi: Fix double free in SMC transport cleanup path

When the generic SCMI code tears down a channel, it calls the chanfree callback function, defined by each transport. Since multiple protocols might share the same transportinfo member, chan_free() might want to clean up the same member multiple times within the given SCMI transport implementation. In this case, it is SMC transport. This will lead to a NULL pointer dereference at the second time:

| scmi_protocol scmi_dev.1: Enabled polling mode TX channel - prot_id:16
| arm-scmi firmware:scmi: SCMI Notifications - Core Enabled.
| arm-scmi firmware:scmi: unable to communicate with SCMI
| Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
| Mem abort info:
|   ESR = 0x0000000096000004
|   EC = 0x25: DABT (current EL), IL = 32 bits
|   SET = 0, FnV = 0
|   EA = 0, S1PTW = 0
|   FSC = 0x04: level 0 translation fault
| Data abort info:
|   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
|   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
|   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
| user pgtable: 4k pages, 48-bit VAs, pgdp=0000000881ef8000
| [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
| Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
| Modules linked in:
| CPU: 4 PID: 1 Comm: swapper/0 Not tainted 6.7.0-rc2-00124-g455ef3d016c9-dirty #793
| Hardware name: FVP Base RevC (DT)
| pstate: 61400009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
| pc : smc_chan_free+0x3c/0x6c
| lr : smc_chan_free+0x3c/0x6c
| Call trace:
|  smc_chan_free+0x3c/0x6c
|  idr_for_each+0x68/0xf8
|  scmi_cleanup_channels.isra.0+0x2c/0x58
|  scmi_probe+0x434/0x734
|  platform_probe+0x68/0xd8
|  really_probe+0x110/0x27c
|  __driver_probe_device+0x78/0x12c
|  driver_probe_device+0x3c/0x118
|  __driver_attach+0x74/0x128
|  bus_for_each_dev+0x78/0xe0
|  driver_attach+0x24/0x30
|  bus_add_driver+0xe4/0x1e8
|  driver_register+0x60/0x128
|  __platform_driver_register+0x28/0x34
|  scmi_driver_init+0x84/0xc0
|  do_one_initcall+0x78/0x33c
|  kernel_init_freeable+0x2b8/0x51c
|  kernel_init+0x24/0x130
|  ret_from_fork+0x10/0x20
| Code: f0004701 910a0021 aa1403e5 97b91c70 (b9400280)
| ---[ end trace 0000000000000000 ]---

Simply check for the struct pointer being NULL before trying to access its members, to avoid this situation.

This was found when a transport doesn't really work (for instance no SMC service), the probe routines then tries to clean up, and triggers a crash.

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1dc6558062dadfabd2fb3bd885fa6e92ec7196f2
Fixed
0d276d9f335f41d6524258d58c0c0241ef9a83a4
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1dc6558062dadfabd2fb3bd885fa6e92ec7196f2
Fixed
857f56db8c3a71f9871922b6984ff74ad588cb2c
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1dc6558062dadfabd2fb3bd885fa6e92ec7196f2
Fixed
8ffaa17ccb1eb1b65cf85db63225a3581c303773
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1dc6558062dadfabd2fb3bd885fa6e92ec7196f2
Fixed
ead445dd3d681020af333649a27306160eee761d
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1dc6558062dadfabd2fb3bd885fa6e92ec7196f2
Fixed
f1d71576d2c9ec8fdb822173fa7f3de79475e9bd

Affected versions

v5.*

v5.10
v5.10-rc1
v5.10-rc2
v5.10-rc3
v5.10-rc4
v5.10-rc5
v5.10-rc6
v5.10-rc7
v5.11
v5.11-rc1
v5.11-rc2
v5.11-rc3
v5.11-rc4
v5.11-rc5
v5.11-rc6
v5.11-rc7
v5.12
v5.12-rc1
v5.12-rc1-dontuse
v5.12-rc2
v5.12-rc3
v5.12-rc4
v5.12-rc5
v5.12-rc6
v5.12-rc7
v5.12-rc8
v5.13
v5.13-rc1
v5.13-rc2
v5.13-rc3
v5.13-rc4
v5.13-rc5
v5.13-rc6
v5.13-rc7
v5.14
v5.14-rc1
v5.14-rc2
v5.14-rc3
v5.14-rc4
v5.14-rc5
v5.14-rc6
v5.14-rc7
v5.15
v5.15-rc1
v5.15-rc2
v5.15-rc3
v5.15-rc4
v5.15-rc5
v5.15-rc6
v5.15-rc7
v5.16
v5.16-rc1
v5.16-rc2
v5.16-rc3
v5.16-rc4
v5.16-rc5
v5.16-rc6
v5.16-rc7
v5.16-rc8
v5.17
v5.17-rc1
v5.17-rc2
v5.17-rc3
v5.17-rc4
v5.17-rc5
v5.17-rc6
v5.17-rc7
v5.17-rc8
v5.18
v5.18-rc1
v5.18-rc2
v5.18-rc3
v5.18-rc4
v5.18-rc5
v5.18-rc6
v5.18-rc7
v5.19
v5.19-rc1
v5.19-rc2
v5.19-rc3
v5.19-rc4
v5.19-rc5
v5.19-rc6
v5.19-rc7
v5.19-rc8
v5.7
v5.7-rc2
v5.7-rc3
v5.7-rc4
v5.7-rc5
v5.7-rc6
v5.7-rc7
v5.8
v5.8-rc1
v5.8-rc2
v5.8-rc3
v5.8-rc4
v5.8-rc5
v5.8-rc6
v5.8-rc7
v5.9
v5.9-rc1
v5.9-rc2
v5.9-rc3
v5.9-rc4
v5.9-rc5
v5.9-rc6
v5.9-rc7
v5.9-rc8

v6.*

v6.0
v6.0-rc1
v6.0-rc2
v6.0-rc3
v6.0-rc4
v6.0-rc5
v6.0-rc6
v6.0-rc7
v6.1
v6.1-rc1
v6.1-rc2
v6.1-rc3
v6.1-rc4
v6.1-rc5
v6.1-rc6
v6.1-rc7
v6.1-rc8
v6.1.1
v6.1.10
v6.1.11
v6.1.12
v6.1.13
v6.1.14
v6.1.15
v6.1.16
v6.1.17
v6.1.18
v6.1.19
v6.1.2
v6.1.20
v6.1.21
v6.1.22
v6.1.23
v6.1.24
v6.1.25
v6.1.26
v6.1.27
v6.1.28
v6.1.29
v6.1.3
v6.1.30
v6.1.31
v6.1.32
v6.1.33
v6.1.34
v6.1.35
v6.1.36
v6.1.37
v6.1.38
v6.1.39
v6.1.4
v6.1.40
v6.1.41
v6.1.42
v6.1.43
v6.1.44
v6.1.45
v6.1.46
v6.1.47
v6.1.48
v6.1.49
v6.1.5
v6.1.50
v6.1.51
v6.1.52
v6.1.53
v6.1.54
v6.1.55
v6.1.56
v6.1.57
v6.1.58
v6.1.59
v6.1.6
v6.1.60
v6.1.61
v6.1.62
v6.1.63
v6.1.64
v6.1.65
v6.1.66
v6.1.67
v6.1.68
v6.1.69
v6.1.7
v6.1.70
v6.1.71
v6.1.72
v6.1.73
v6.1.74
v6.1.75
v6.1.76
v6.1.77
v6.1.78
v6.1.79
v6.1.8
v6.1.80
v6.1.81
v6.1.82
v6.1.9
v6.2
v6.2-rc1
v6.2-rc2
v6.2-rc3
v6.2-rc4
v6.2-rc5
v6.2-rc6
v6.2-rc7
v6.2-rc8
v6.3
v6.3-rc1
v6.3-rc2
v6.3-rc3
v6.3-rc4
v6.3-rc5
v6.3-rc6
v6.3-rc7
v6.4
v6.4-rc1
v6.4-rc2
v6.4-rc3
v6.4-rc4
v6.4-rc5
v6.4-rc6
v6.4-rc7
v6.5
v6.5-rc1
v6.5-rc2
v6.5-rc3
v6.5-rc4
v6.5-rc5
v6.5-rc6
v6.5-rc7
v6.6
v6.6-rc1
v6.6-rc2
v6.6-rc3
v6.6-rc4
v6.6-rc5
v6.6-rc6
v6.6-rc7
v6.6.1
v6.6.10
v6.6.11
v6.6.12
v6.6.13
v6.6.14
v6.6.15
v6.6.16
v6.6.17
v6.6.18
v6.6.19
v6.6.2
v6.6.20
v6.6.21
v6.6.22
v6.6.3
v6.6.4
v6.6.5
v6.6.6
v6.6.7
v6.6.8
v6.6.9
v6.7
v6.7-rc1
v6.7-rc2
v6.7-rc3
v6.7-rc4
v6.7-rc5
v6.7-rc6
v6.7-rc7
v6.7-rc8
v6.7.1
v6.7.10
v6.7.2
v6.7.3
v6.7.4
v6.7.5
v6.7.6
v6.7.7
v6.7.8
v6.7.9
v6.8
v6.8-rc1
v6.8-rc2
v6.8-rc3
v6.8-rc4
v6.8-rc5
v6.8-rc6
v6.8-rc7
v6.8.1

Database specific

{
    "vanir_signatures": [
        {
            "signature_version": "v1",
            "signature_type": "Line",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c"
            },
            "deprecated": false,
            "digest": {
                "line_hashes": [
                    "96983283136766550372252081994660228937",
                    "286495773655377105684372258969320083859",
                    "44870181363075535302888912976833070695"
                ],
                "threshold": 0.9
            },
            "id": "CVE-2024-26893-3c5d8e8f",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8ffaa17ccb1eb1b65cf85db63225a3581c303773"
        },
        {
            "signature_version": "v1",
            "signature_type": "Function",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c",
                "function": "smc_chan_free"
            },
            "deprecated": false,
            "digest": {
                "length": 249.0,
                "function_hash": "84226554420653495809230060686196973689"
            },
            "id": "CVE-2024-26893-40ed5bb0",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@857f56db8c3a71f9871922b6984ff74ad588cb2c"
        },
        {
            "signature_version": "v1",
            "signature_type": "Function",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c",
                "function": "smc_chan_free"
            },
            "deprecated": false,
            "digest": {
                "length": 284.0,
                "function_hash": "95203683907673704134651523135445812451"
            },
            "id": "CVE-2024-26893-53f64d0a",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0d276d9f335f41d6524258d58c0c0241ef9a83a4"
        },
        {
            "signature_version": "v1",
            "signature_type": "Line",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c"
            },
            "deprecated": false,
            "digest": {
                "line_hashes": [
                    "96983283136766550372252081994660228937",
                    "286495773655377105684372258969320083859",
                    "44870181363075535302888912976833070695"
                ],
                "threshold": 0.9
            },
            "id": "CVE-2024-26893-75e5a1a8",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ead445dd3d681020af333649a27306160eee761d"
        },
        {
            "signature_version": "v1",
            "signature_type": "Line",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c"
            },
            "deprecated": false,
            "digest": {
                "line_hashes": [
                    "96983283136766550372252081994660228937",
                    "286495773655377105684372258969320083859",
                    "44870181363075535302888912976833070695"
                ],
                "threshold": 0.9
            },
            "id": "CVE-2024-26893-78d819e5",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@857f56db8c3a71f9871922b6984ff74ad588cb2c"
        },
        {
            "signature_version": "v1",
            "signature_type": "Line",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c"
            },
            "deprecated": false,
            "digest": {
                "line_hashes": [
                    "96983283136766550372252081994660228937",
                    "286495773655377105684372258969320083859",
                    "44870181363075535302888912976833070695"
                ],
                "threshold": 0.9
            },
            "id": "CVE-2024-26893-ac5e64e3",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0d276d9f335f41d6524258d58c0c0241ef9a83a4"
        },
        {
            "signature_version": "v1",
            "signature_type": "Line",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c"
            },
            "deprecated": false,
            "digest": {
                "line_hashes": [
                    "96983283136766550372252081994660228937",
                    "286495773655377105684372258969320083859",
                    "44870181363075535302888912976833070695"
                ],
                "threshold": 0.9
            },
            "id": "CVE-2024-26893-bd9795d3",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d71576d2c9ec8fdb822173fa7f3de79475e9bd"
        },
        {
            "signature_version": "v1",
            "signature_type": "Function",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c",
                "function": "smc_chan_free"
            },
            "deprecated": false,
            "digest": {
                "length": 249.0,
                "function_hash": "84226554420653495809230060686196973689"
            },
            "id": "CVE-2024-26893-d624fb50",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f1d71576d2c9ec8fdb822173fa7f3de79475e9bd"
        },
        {
            "signature_version": "v1",
            "signature_type": "Function",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c",
                "function": "smc_chan_free"
            },
            "deprecated": false,
            "digest": {
                "length": 249.0,
                "function_hash": "84226554420653495809230060686196973689"
            },
            "id": "CVE-2024-26893-d7f91e72",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8ffaa17ccb1eb1b65cf85db63225a3581c303773"
        },
        {
            "signature_version": "v1",
            "signature_type": "Function",
            "target": {
                "file": "drivers/firmware/arm_scmi/smc.c",
                "function": "smc_chan_free"
            },
            "deprecated": false,
            "digest": {
                "length": 249.0,
                "function_hash": "84226554420653495809230060686196973689"
            },
            "id": "CVE-2024-26893-f11307c4",
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ead445dd3d681020af333649a27306160eee761d"
        }
    ]
}

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.8.0
Fixed
6.1.83
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.23
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.7.11
Type
ECOSYSTEM
Events
Introduced
6.8.0
Fixed
6.8.2