[media] m88ds3103: One function call less in m88ds3103_init() after error detection
authorMarkus Elfring <elfring@users.sourceforge.net>
Wed, 19 Nov 2014 22:20:51 +0000 (19:20 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 25 Nov 2014 14:07:33 +0000 (12:07 -0200)
GIT_AUTHOR_DATE=1416472158
The release_firmware() function was called in some cases by the
m88ds3103_init() function during error handling even if the passed variable
contained still a null pointer. This implementation detail could be improved
by the introduction of another jump label.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/m88ds3103.c

index 843e669a3d7c8a305ff8efef34c602a503fc5bb5..ba4ee0b488344079d8e690724778661f131bd2b6 100644 (file)
@@ -640,7 +640,7 @@ static int m88ds3103_init(struct dvb_frontend *fe)
 
        ret = m88ds3103_wr_reg(priv, 0xb2, 0x01);
        if (ret)
-               goto err;
+               goto error_fw_release;
 
        for (remaining = fw->size; remaining > 0;
                        remaining -= (priv->cfg->i2c_wr_max - 1)) {
@@ -654,13 +654,13 @@ static int m88ds3103_init(struct dvb_frontend *fe)
                        dev_err(&priv->i2c->dev,
                                        "%s: firmware download failed=%d\n",
                                        KBUILD_MODNAME, ret);
-                       goto err;
+                       goto error_fw_release;
                }
        }
 
        ret = m88ds3103_wr_reg(priv, 0xb2, 0x00);
        if (ret)
-               goto err;
+               goto error_fw_release;
 
        release_firmware(fw);
        fw = NULL;
@@ -686,9 +686,10 @@ skip_fw_download:
        priv->warm = true;
 
        return 0;
-err:
-       release_firmware(fw);
 
+error_fw_release:
+       release_firmware(fw);
+err:
        dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
        return ret;
 }