lkml.org 
[lkml]   [2018]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v10 14/27] drivers: firmware: psci: Simplify error path of psci_dt_init()
    From
    Date
    On 29/11/2018 18:46, Ulf Hansson wrote:
    > Instead of having each psci init function taking care of the of_node_put(),
    > let's deal with that from psci_dt_init(), as this enables a bit simpler
    > error path for each psci init function.
    >
    > Cc: Lina Iyer <ilina@codeaurora.org>
    > Co-developed-by: Lina Iyer <lina.iyer@linaro.org>
    > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    > Acked-by: Mark Rutland <mark.rutland@arm.com>

    Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>


    > ---
    >
    > Changes in v10:
    > - None.
    >
    > ---
    > drivers/firmware/psci/psci.c | 23 ++++++++++-------------
    > 1 file changed, 10 insertions(+), 13 deletions(-)
    >
    > diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
    > index 631e20720a22..6bfa47cbd174 100644
    > --- a/drivers/firmware/psci/psci.c
    > +++ b/drivers/firmware/psci/psci.c
    > @@ -609,9 +609,9 @@ static int __init psci_0_2_init(struct device_node *np)
    > int err;
    >
    > err = get_set_conduit_method(np);
    > -
    > if (err)
    > - goto out_put_node;
    > + return err;
    > +
    > /*
    > * Starting with v0.2, the PSCI specification introduced a call
    > * (PSCI_VERSION) that allows probing the firmware version, so
    > @@ -619,11 +619,7 @@ static int __init psci_0_2_init(struct device_node *np)
    > * can be carried out according to the specific version reported
    > * by firmware
    > */
    > - err = psci_probe();
    > -
    > -out_put_node:
    > - of_node_put(np);
    > - return err;
    > + return psci_probe();
    > }
    >
    > /*
    > @@ -635,9 +631,8 @@ static int __init psci_0_1_init(struct device_node *np)
    > int err;
    >
    > err = get_set_conduit_method(np);
    > -
    > if (err)
    > - goto out_put_node;
    > + return err;
    >
    > pr_info("Using PSCI v0.1 Function IDs from DT\n");
    >
    > @@ -661,9 +656,7 @@ static int __init psci_0_1_init(struct device_node *np)
    > psci_ops.migrate = psci_migrate;
    > }
    >
    > -out_put_node:
    > - of_node_put(np);
    > - return err;
    > + return 0;
    > }
    >
    > static const struct of_device_id psci_of_match[] __initconst = {
    > @@ -678,6 +671,7 @@ int __init psci_dt_init(void)
    > struct device_node *np;
    > const struct of_device_id *matched_np;
    > psci_initcall_t init_fn;
    > + int ret;
    >
    > np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np);
    >
    > @@ -685,7 +679,10 @@ int __init psci_dt_init(void)
    > return -ENODEV;
    >
    > init_fn = (psci_initcall_t)matched_np->data;
    > - return init_fn(np);
    > + ret = init_fn(np);
    > +
    > + of_node_put(np);
    > + return ret;
    > }
    >
    > #ifdef CONFIG_ACPI
    >


    --
    <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

    Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
    <http://twitter.com/#!/linaroorg> Twitter |
    <http://www.linaro.org/linaro-blog/> Blog

    \
     
     \ /
      Last update: 2018-12-19 13:09    [W:4.029 / U:0.672 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site