lkml.org 
[lkml]   [2020]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.7 41/53] ARM: imx6: add missing put_device() call in imx6q_suspend_init()
    Date
    From: yu kuai <yukuai3@huawei.com>

    [ Upstream commit 4845446036fc9c13f43b54a65c9b757c14f5141b ]

    if of_find_device_by_node() succeed, imx6q_suspend_init() doesn't have a
    corresponding put_device(). Thus add a jump target to fix the exception
    handling for this function implementation.

    Signed-off-by: yu kuai <yukuai3@huawei.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm/mach-imx/pm-imx6.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c
    index dd34dff137626..40c74b4c4d730 100644
    --- a/arch/arm/mach-imx/pm-imx6.c
    +++ b/arch/arm/mach-imx/pm-imx6.c
    @@ -493,14 +493,14 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata)
    if (!ocram_pool) {
    pr_warn("%s: ocram pool unavailable!\n", __func__);
    ret = -ENODEV;
    - goto put_node;
    + goto put_device;
    }

    ocram_base = gen_pool_alloc(ocram_pool, MX6Q_SUSPEND_OCRAM_SIZE);
    if (!ocram_base) {
    pr_warn("%s: unable to alloc ocram!\n", __func__);
    ret = -ENOMEM;
    - goto put_node;
    + goto put_device;
    }

    ocram_pbase = gen_pool_virt_to_phys(ocram_pool, ocram_base);
    @@ -523,7 +523,7 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata)
    ret = imx6_pm_get_base(&pm_info->mmdc_base, socdata->mmdc_compat);
    if (ret) {
    pr_warn("%s: failed to get mmdc base %d!\n", __func__, ret);
    - goto put_node;
    + goto put_device;
    }

    ret = imx6_pm_get_base(&pm_info->src_base, socdata->src_compat);
    @@ -570,7 +570,7 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata)
    &imx6_suspend,
    MX6Q_SUSPEND_OCRAM_SIZE - sizeof(*pm_info));

    - goto put_node;
    + goto put_device;

    pl310_cache_map_failed:
    iounmap(pm_info->gpc_base.vbase);
    @@ -580,6 +580,8 @@ static int __init imx6q_suspend_init(const struct imx6_pm_socdata *socdata)
    iounmap(pm_info->src_base.vbase);
    src_map_failed:
    iounmap(pm_info->mmdc_base.vbase);
    +put_device:
    + put_device(&pdev->dev);
    put_node:
    of_node_put(node);

    --
    2.25.1
    \
     
     \ /
      Last update: 2020-07-02 03:24    [W:4.330 / U:0.692 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site