Skip to content

Commit 776c750

Browse files
Wang Haidamien-lemoal
authored andcommitted
ata: ahci_platform: fix null-ptr-deref in ahci_platform_enable_regulators()
I got a null-ptr-deref report: KASAN: null-ptr-deref in range [0x0000000000000090-0x0000000000000097] ... RIP: 0010:regulator_enable+0x84/0x260 ... Call Trace: ahci_platform_enable_regulators+0xae/0x320 ahci_platform_enable_resources+0x1a/0x120 ahci_probe+0x4f/0x1b9 platform_probe+0x10b/0x280 ... entry_SYSCALL_64_after_hwframe+0x44/0xae If devm_regulator_get() in ahci_platform_get_resources() fails, hpriv->phy_regulator will point to NULL, when enabling or disabling it, null-ptr-deref will occur. ahci_probe() ahci_platform_get_resources() devm_regulator_get(, "phy") // failed, let phy_regulator = NULL ahci_platform_enable_resources() ahci_platform_enable_regulators() regulator_enable(hpriv->phy_regulator) // null-ptr-deref commit 962399b ("ata: libahci_platform: Fix regulator_get_optional() misuse") replaces devm_regulator_get_optional() with devm_regulator_get(), but PHY regulator omits to delete "hpriv->phy_regulator = NULL;" like AHCI. Delete it like AHCI regulator to fix this bug. Fixes: commit 962399b ("ata: libahci_platform: Fix regulator_get_optional() misuse") Reported-by: Hulk Robot <[email protected]> Signed-off-by: Wang Hai <[email protected]> Reviewed-by: Hans de Goede <[email protected]> Signed-off-by: Damien Le Moal <[email protected]>
1 parent 0139234 commit 776c750

File tree

1 file changed

+1
-4
lines changed

1 file changed

+1
-4
lines changed

drivers/ata/libahci_platform.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,7 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
440440
hpriv->phy_regulator = devm_regulator_get(dev, "phy");
441441
if (IS_ERR(hpriv->phy_regulator)) {
442442
rc = PTR_ERR(hpriv->phy_regulator);
443-
if (rc == -EPROBE_DEFER)
444-
goto err_out;
445-
rc = 0;
446-
hpriv->phy_regulator = NULL;
443+
goto err_out;
447444
}
448445

449446
if (flags & AHCI_PLATFORM_GET_RESETS) {

0 commit comments

Comments
 (0)