Commit f1cb0ea1 authored by Saeed Bishara's avatar Saeed Bishara Committed by Jeff Garzik

sata_mv: remove iounmap in mv_platform_remove and use devm_iomap

this will fix crash bug when doing rmmod to the driver, this is because the
port_stop function get called later and it could access the device's registers.
Signed-off-by: default avatarSaeed Bishara <saeed@marvell.com>
Acked-by: default avatarMark Lord <mlord@pobox.com>
Acked-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 5d44b414
...@@ -2947,7 +2947,8 @@ static int mv_platform_probe(struct platform_device *pdev) ...@@ -2947,7 +2947,8 @@ static int mv_platform_probe(struct platform_device *pdev)
hpriv->n_ports = n_ports; hpriv->n_ports = n_ports;
host->iomap = NULL; host->iomap = NULL;
hpriv->base = ioremap(res->start, res->end - res->start + 1); hpriv->base = devm_ioremap(&pdev->dev, res->start,
res->end - res->start + 1);
hpriv->base -= MV_SATAHC0_REG_BASE; hpriv->base -= MV_SATAHC0_REG_BASE;
rc = mv_create_dma_pools(hpriv, &pdev->dev); rc = mv_create_dma_pools(hpriv, &pdev->dev);
...@@ -2979,11 +2980,8 @@ static int __devexit mv_platform_remove(struct platform_device *pdev) ...@@ -2979,11 +2980,8 @@ static int __devexit mv_platform_remove(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct ata_host *host = dev_get_drvdata(dev); struct ata_host *host = dev_get_drvdata(dev);
struct mv_host_priv *hpriv = host->private_data;
void __iomem *base = hpriv->base;
ata_host_detach(host); ata_host_detach(host);
iounmap(base);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment