[PATCH] net: hisilicon: unmap IO resources when cleanup

Arnd Bergmann arnd at arndb.de
Sat Nov 29 10:54:08 PST 2014


On Saturday 29 November 2014 10:50:02 Orson Zhai wrote:
> On 2014年11月29日 09:48, Sheng Yong wrote:
> > Unmap IO resources if the driver initailization failed or the driver is
> > unmounted.
> >
> > Signed-off-by: Sheng Yong <shengyong1 at huawei.com>
> > ---
> >   drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 14 ++++++++++----
> >   1 file changed, 10 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
> > index 0ffdcd3..3399ce6 100644
> > --- a/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
> > +++ b/drivers/net/ethernet/hisilicon/hix5hd2_gmac.c
> > @@ -917,26 +917,26 @@ static int hix5hd2_dev_probe(struct platform_device *pdev)
> >       priv->ctrl_base = devm_ioremap_resource(dev, res);
> >       if (IS_ERR(priv->ctrl_base)) {
> >               ret = PTR_ERR(priv->ctrl_base);
> > -             goto out_free_netdev;
> > +             goto out_base;
> As i know we don't need to do anything but return error code from probe 
> when using devm_xxx for getting resource.
> What's the idea to io-unmap explicitly here?
> 

I think it's actually a bug to pair devm_ioremap() with iounmap,
since the iounmap will be done twice then, and that causes
undefined behavior.

In cases where you have to unmap something explicitly, devm_iounmap
should be used, but in this case the patch seems entirely wrong,
the code without the patch looks correct.

	Arnd



More information about the linux-arm-kernel mailing list