CVE-2021-47549

sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl

HIGH
7.8
CVSS Score
Published: May 24, 2024 at 03:09 PM UTC
Updated: June 17, 2026 at 04:17 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl When the `rmmod sata_fsl.ko` command is executed in the PPC64 GNU/Linux, a bug is reported: ================================================================== BUG: Unable to handle kernel data access on read at 0x80000800805b502c Oops: Kernel access of bad area, sig: 11 [#1] NIP [c0000000000388a4] .ioread32+0x4/0x20 LR [80000000000c6034] .sata_fsl_port_stop+0x44/0xe0 [sata_fsl] Call Trace: .free_irq+0x1c/0x4e0 (unreliable) .ata_host_stop+0x74/0xd0 [libata] .release_nodes+0x330/0x3f0 .device_release_driver_internal+0x178/0x2c0 .driver_detach+0x64/0xd0 .bus_remove_driver+0x70/0xf0 .driver_unregister+0x38/0x80 .platform_driver_unregister+0x14/0x30 .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl] .__se_sys_delete_module+0x1ec/0x2d0 .system_call_exception+0xfc/0x1f0 system_call_common+0xf8/0x200 ================================================================== The triggering of the BUG is shown in the following stack: driver_detach device_release_driver_internal __device_release_driver drv->remove(dev) --> platform_drv_remove/platform_remove drv->remove(dev) --> sata_fsl_remove iounmap(host_priv->hcr_base); <---- unmap kfree(host_priv); <---- free devres_release_all release_nodes dr->node.release(dev, dr->data) --> ata_host_stop ap->ops->port_stop(ap) --> sata_fsl_port_stop ioread32(hcr_base + HCONTROL) <---- UAF host->ops->host_stop(host) The iounmap(host_priv->hcr_base) and kfree(host_priv) functions should not be executed in drv->remove. These functions should be executed in host_stop after port_stop. Therefore, we move these functions to the new function sata_fsl_host_stop and bind the new function to host_stop.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.24 ≤ v < 4.14.2572.6.24 ≤ v < 4.19.2202.6.24 ≤ v < 4.4.2942.6.24 ≤ v < 4.9.2922.6.24 ≤ v < 5.10.842.6.24 ≤ v < 5.15.72.6.24 ≤ v < 5.162.6.24 ≤ v < 5.4.1644.10 ≤ v < 4.14.2574.15 ≤ v < 4.19.2204.20 ≤ v < 5.4.1644.5 ≤ v < 4.9.2925.11 ≤ v < 5.15.75.5 ≤ v < 5.10.845.16 rc15.16 rc25.16 rc3faf0b2e5afe7dae072d2715763c7f992b612b628
Vendor states this is fixed in 0769449b0a5eabc3545337217ae690e46673e73a (fixed)
Vendor states this is fixed in 325ea49fc43cbc03a5e1e37de8f0ca6357ced4b1 (fixed)
Vendor states this is fixed in 4a46b2f5dce02539e88a300800812bd24a45e097 (fixed)
Vendor states this is fixed in 6c8ad7e8cf29eb55836e7a0215f967746ab2b504 (fixed)
Vendor states this is fixed in 77393806c76b6b44f1c44bd957788c8bd9152c45 (fixed)
Vendor states this is fixed in 91ba94d3f7afca195b224f77a72044fbde1389ce (fixed)
Vendor states this is fixed in adf098e2a8a1e1fc075d6a5ba2edd13cf7189082 (fixed)
Vendor states this is fixed in cdcd80292106df5cda325426e96495503e41f947 (fixed)
Vendor states this is fixed in 2.6.24 (unaffected)
Vendor states this is fixed in 4.14.257 (unaffected)
Vendor states this is fixed in 4.19.220 (unaffected)
Vendor states this is fixed in 4.4.294 (unaffected)
Vendor states this is fixed in 4.9.292 (unaffected)
Vendor states this is fixed in 5.10.84 (unaffected)
Vendor states this is fixed in 5.15.7 (unaffected)
Vendor states this is fixed in 5.16 (unaffected)
Vendor states this is fixed in 5.4.164 (unaffected)

References (8)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/0769449b0a5eabc3545337217ae690e46673e73a
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/325ea49fc43cbc03a5e1e37de8f0ca6357ced4b1
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/4a46b2f5dce02539e88a300800812bd24a45e097
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/6c8ad7e8cf29eb55836e7a0215f967746ab2b504
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/77393806c76b6b44f1c44bd957788c8bd9152c45
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/91ba94d3f7afca195b224f77a72044fbde1389ce
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/adf098e2a8a1e1fc075d6a5ba2edd13cf7189082
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/cdcd80292106df5cda325426e96495503e41f947

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-416

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card