lkml.org 
[lkml]   [2010]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 4/12] wm8523: fix resource reclaim in wm8523_register error path
    From
    Date
    This patch includes below fixes:
    1. If another WM8523 is registered, need to kfree wm8523 before return -EINVAL.
    2. If snd_soc_register_codec failed, goto error path to properly free resources.
    3. Instead of using mixed in-line and goto style cleanup, use goto style error
    handling if snd_soc_register_dai failed.

    Signed-off-by: Axel Lin <axel.lin@gmail.com>
    ---
    sound/soc/codecs/wm8523.c | 10 ++++++----
    1 files changed, 6 insertions(+), 4 deletions(-)

    diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c
    index 37242a7..0ad039b 100644
    --- a/sound/soc/codecs/wm8523.c
    +++ b/sound/soc/codecs/wm8523.c
    @@ -482,7 +482,8 @@ static int wm8523_register(struct wm8523_priv *wm8523,

    if (wm8523_codec) {
    dev_err(codec->dev, "Another WM8523 is registered\n");
    - return -EINVAL;
    + ret = -EINVAL;
    + goto err;
    }

    mutex_init(&codec->mutex);
    @@ -570,18 +571,19 @@ static int wm8523_register(struct wm8523_priv *wm8523,
    ret = snd_soc_register_codec(codec);
    if (ret != 0) {
    dev_err(codec->dev, "Failed to register codec: %d\n", ret);
    - return ret;
    + goto err_enable;
    }

    ret = snd_soc_register_dai(&wm8523_dai);
    if (ret != 0) {
    dev_err(codec->dev, "Failed to register DAI: %d\n", ret);
    - snd_soc_unregister_codec(codec);
    - return ret;
    + goto err_codec;
    }

    return 0;

    +err_codec:
    + snd_soc_unregister_codec(codec);
    err_enable:
    regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies);
    err_get:
    --
    1.5.4.3




    \
     
     \ /
      Last update: 2010-07-15 04:59    [W:0.021 / U:185.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site