{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-99202",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-09-25T10:25:14.400Z",
        "datePublished": "2026-10-28T10:35:56.827Z",
        "dateUpdated": "2026-10-28T10:35:56.827Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-10-28T10:35:56.827Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: libsas: Fix SMP IO deadlock during HA resume\n\nsmp_execute_task_sg() calls pm_runtime_get_sync() on the host before\nissuing an SMP command. When that command is itself issued from the HA\nresume path, the get_sync() deadlocks: it waits for the ongoing resume\n(the device is RPM_RESUMING), while the resume is blocked in\nsas_drain_work() waiting for that same SMP IO to complete.\n\nThe deadlock needs an expander-attached SATA disk. During\nsas_resume_ha() -> sas_drain_work(), DISCE_RESUME -> sas_resume_sata()\n-> ata_sas_port_resume() requests ATA_EH_RESET, and the hard reset for\nsuch a disk is done via SMP PHY CONTROL (sas_ata_hard_reset() ->\nsas_phy_reset() -> sas_smp_phy_control() ->\nsmp_execute_task_sg()). Direct-attached SATA resets through\nlldd_control_phy() and SSP devices use TMFs, so neither hits this.\n\nReplace the get_sync()/put_sync() pair with\npm_runtime_get_noresume()/pm_runtime_put(). smp_execute_task_sg() only\nneeds to hold off autosuspend while the SMP is in flight, and it must\nnot try to resume the host: a sync resume issued from the HA resume path\nitself is what deadlocks, and by the time sas_resume_ha() runs, hw_init\nhas already reinitialized the hardware, so the device is accessible\nwithout one.\n\nThe usage reference is still required. Discovery work normally runs\ninside an event worker's PM reference, taken at sas_notify_port_event()\nnotify time and held until the handler has flushed the disco\nqueue. sas_rediscover_ex_phy() however requeues DISCE_REVALIDATE_DOMAIN\nfrom within the revalidation worker itself, and flush_workqueue() does\nnot wait for work items queued during execution, so that chained\nrevalidation runs with no outer PM reference - without the\nget_noresume(), its SMP could race autosuspend.\n\nFor the BSG path, sas_smp_handler() is the only caller which may find\nthe host autosuspended: expander SMP requests do not go through any SCSI\ndevice request queue, so nothing else in that path holds the host\nawake. Resume it there with pm_runtime_resume_and_get() and check the\nresult."
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/scsi/libsas/sas_expander.c"
                    ],
                    "versions": [
                        {
                            "version": "9e24b47ef81d43b3fb1b14294f09991640c79fcc",
                            "lessThan": "c9fb89246d9922ac0a45d504adb03e0bb971310c",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3dbbbf656b850c9c8de05df6ad4a1dfc6ff02845",
                            "lessThan": "08b95ef36a64c3ae4490794bed3c35d0c3354e85",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "3dbbbf656b850c9c8de05df6ad4a1dfc6ff02845",
                            "lessThan": "81e097a064b28b4a1f6ca1a8b433e659c1bd64c0",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "09357f067122e2e28ec52e27013a1660a1571618",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e50a6523a603594a6d92cdecfe11997d639410a3",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "c391b5899dd46485a5893696c12ae3e95a3a7325",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "b9c44a14062093e9fc2d6bddc696cfceadb482d7",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "6.18.44",
                            "lessThan": "6.18.59",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.183",
                            "lessThan": "6.2",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.151",
                            "lessThan": "6.7",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12.103",
                            "lessThan": "6.13",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.1.8",
                            "lessThan": "7.2",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/scsi/libsas/sas_expander.c"
                    ],
                    "versions": [
                        {
                            "version": "7.2",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "7.2",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.18.59",
                            "lessThanOrEqual": "6.18.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.2.13",
                            "lessThanOrEqual": "7.2.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.3",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.18.44",
                                    "versionEndExcluding": "6.18.59"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "7.2",
                                    "versionEndExcluding": "7.2.13"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "7.2",
                                    "versionEndExcluding": "7.3"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.1.183"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.6.151"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.12.103"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "7.1.8"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/c9fb89246d9922ac0a45d504adb03e0bb971310c"
                },
                {
                    "url": "https://git.kernel.org/stable/c/08b95ef36a64c3ae4490794bed3c35d0c3354e85"
                },
                {
                    "url": "https://git.kernel.org/stable/c/81e097a064b28b4a1f6ca1a8b433e659c1bd64c0"
                }
            ],
            "title": "scsi: libsas: Fix SMP IO deadlock during HA resume",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}