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 6/12] wm8904: fix resource reclaim in wm8904_register error path
    From
    Date
    This patch includes below fixes:
    1. wm8904 need to be kfreed in wm8904_register() error path before return.
    2. fix the error path for snd_soc_register_codec() fail and
    snd_soc_register_dai() fail to properly free resources.

    Signed-off-by: Axel Lin <axel.lin@gmail.com>
    ---
    sound/soc/codecs/wm8904.c | 13 ++++++++-----
    1 files changed, 8 insertions(+), 5 deletions(-)

    diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
    index 87f14f8..f7dcabf 100644
    --- a/sound/soc/codecs/wm8904.c
    +++ b/sound/soc/codecs/wm8904.c
    @@ -2433,7 +2433,8 @@ static int wm8904_register(struct wm8904_priv *wm8904,

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

    mutex_init(&codec->mutex);
    @@ -2462,7 +2463,8 @@ static int wm8904_register(struct wm8904_priv *wm8904,
    default:
    dev_err(codec->dev, "Unknown device type %d\n",
    wm8904->devtype);
    - return -EINVAL;
    + ret = -EINVAL;
    + goto err;
    }

    memcpy(codec->reg_cache, wm8904_reg, sizeof(wm8904_reg));
    @@ -2566,18 +2568,19 @@ static int wm8904_register(struct wm8904_priv *wm8904,
    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(&wm8904_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(wm8904->supplies), wm8904->supplies);
    err_get:
    --
    1.5.4.3




    \
     
     \ /
      Last update: 2010-07-15 05:01    [W:0.025 / U:28.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site