diff options
author | Saeed Bishara <saeed@marvell.com> | 2008-02-18 13:42:28 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-02-20 12:20:46 -0500 |
commit | f1cb0ea12fee23018ad1865bf789cbd463f13747 (patch) | |
tree | 0809e8fd543ecf8bbc3eaa285139d3a8180cb786 /drivers/ata/sata_mv.c | |
parent | 5d44b414daa8c1d8551aed6130d86d54175db43f (diff) |
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: Saeed Bishara <saeed@marvell.com>
Acked-by: Mark Lord <mlord@pobox.com>
Acked-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/sata_mv.c')
-rw-r--r-- | drivers/ata/sata_mv.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index eb97dde28d47..6ebebde8454a 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -2947,7 +2947,8 @@ static int mv_platform_probe(struct platform_device *pdev) | |||
2947 | hpriv->n_ports = n_ports; | 2947 | hpriv->n_ports = n_ports; |
2948 | 2948 | ||
2949 | host->iomap = NULL; | 2949 | host->iomap = NULL; |
2950 | hpriv->base = ioremap(res->start, res->end - res->start + 1); | 2950 | hpriv->base = devm_ioremap(&pdev->dev, res->start, |
2951 | res->end - res->start + 1); | ||
2951 | hpriv->base -= MV_SATAHC0_REG_BASE; | 2952 | hpriv->base -= MV_SATAHC0_REG_BASE; |
2952 | 2953 | ||
2953 | rc = mv_create_dma_pools(hpriv, &pdev->dev); | 2954 | rc = mv_create_dma_pools(hpriv, &pdev->dev); |
@@ -2979,11 +2980,8 @@ static int __devexit mv_platform_remove(struct platform_device *pdev) | |||
2979 | { | 2980 | { |
2980 | struct device *dev = &pdev->dev; | 2981 | struct device *dev = &pdev->dev; |
2981 | struct ata_host *host = dev_get_drvdata(dev); | 2982 | struct ata_host *host = dev_get_drvdata(dev); |
2982 | struct mv_host_priv *hpriv = host->private_data; | ||
2983 | void __iomem *base = hpriv->base; | ||
2984 | 2983 | ||
2985 | ata_host_detach(host); | 2984 | ata_host_detach(host); |
2986 | iounmap(base); | ||
2987 | return 0; | 2985 | return 0; |
2988 | } | 2986 | } |
2989 | 2987 | ||