{"schema":"threatline.record/2","record":{"id":"CVE-2026-99202","aliases":[],"summary":"scsi: libsas: Fix SMP IO deadlock during HA resume","details":"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.","categories":["Operating systems"],"product":"Linux","vendor":"Linux","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","product":"Linux","vendor":"Linux","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"}],"defaultStatus":"unaffected"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","product":"Linux","vendor":"Linux","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"}],"defaultStatus":"affected"}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"08b95ef36a64c3ae4490794bed3c35d0c3354e85","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"81e097a064b28b4a1f6ca1a8b433e659c1bd64c0","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"6.18.59","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"6.2","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"6.7","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"6.13","basis":"first unaffected version stated in the CVE record"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","source_modified_at":"2026-10-28T10:35:56.827Z","fetched_at":"2026-10-28T15:55:58.673066Z","package":{"name":"Linux","ecosystem":null},"version":"7.2","basis":"first unaffected version stated in the CVE record"}],"cvss":null,"severity":null,"kev":{"listed":false},"epss":{"probability":null,"percentile":null,"score_date":null},"published_at":"2026-10-28T10:35:56.827Z","modified_at":"2026-10-28T10:35:56.827Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-99202","fetched_at":"2026-10-28T15:55:58.673066Z","source_modified_at":"2026-10-28T10:35:56.827Z"}],"sources":["CVE List"],"references":[{"source":"CVE List","url":"https://git.kernel.org/stable/c/c9fb89246d9922ac0a45d504adb03e0bb971310c"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/08b95ef36a64c3ae4490794bed3c35d0c3354e85"},{"source":"CVE List","url":"https://git.kernel.org/stable/c/81e097a064b28b4a1f6ca1a8b433e659c1bd64c0"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"product","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-28T10:35:56.827Z","content_hash":"d4c9b5ae07a1ce231ab0464033ad84551f2a1739947893b4b6f5c40e3d04e01c"}}
