From: Markus Elfring <elfr...@users.sourceforge.net>
Date: Tue, 2 Dec 2014 20:33:51 +0100

The kfree() function was called in two cases by the get_daio_rsc() function
during error handling even if the passed variable contained still
a null pointer. This implementation detail could be improved
by adjustments for jump labels.

Signed-off-by: Markus Elfring <elfr...@users.sourceforge.net>
---
 sound/pci/ctxfi/ctdaio.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/sound/pci/ctxfi/ctdaio.c b/sound/pci/ctxfi/ctdaio.c
index 1712332..a12489e 100644
--- a/sound/pci/ctxfi/ctdaio.c
+++ b/sound/pci/ctxfi/ctdaio.c
@@ -549,22 +549,22 @@ static int get_daio_rsc(struct daio_mgr *mgr,
                dao = kzalloc(sizeof(*dao), GFP_KERNEL);
                if (!dao) {
                        err = -ENOMEM;
-                       goto error;
+                       goto alloc_error;
                }
                err = dao_rsc_init(dao, desc, mgr);
                if (err)
-                       goto error;
+                       goto dao_init_error;
 
                *rdaio = &dao->daio;
        } else {
                dai = kzalloc(sizeof(*dai), GFP_KERNEL);
                if (!dai) {
                        err = -ENOMEM;
-                       goto error;
+                       goto alloc_error;
                }
                err = dai_rsc_init(dai, desc, mgr);
                if (err)
-                       goto error;
+                       goto dai_init_error;
 
                *rdaio = &dai->daio;
        }
@@ -574,12 +574,12 @@ static int get_daio_rsc(struct daio_mgr *mgr,
 
        return 0;
 
-error:
-       if (dao)
-               kfree(dao);
-       else
-               kfree(dai);
-
+dao_init_error:
+       kfree(dao);
+       goto alloc_error;
+dai_init_error:
+       kfree(dai);
+alloc_error:
        spin_lock_irqsave(&mgr->mgr_lock, flags);
        daio_mgr_put_rsc(&mgr->mgr, desc->type);
        spin_unlock_irqrestore(&mgr->mgr_lock, flags);
-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to