Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2433294pxj; Mon, 10 May 2021 02:53:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyX1cj03euvYeGBSiXAj9Mxvy+MgD7TkUM+It0o8NTlVJXypYaB3cvT1v13g5U0yIDIn3yU X-Received: by 2002:a05:6e02:b28:: with SMTP id e8mr22160697ilu.60.1620640404715; Mon, 10 May 2021 02:53:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620640404; cv=none; d=google.com; s=arc-20160816; b=IZPgElbO2ILWPd8aN4A73UrKMGVo4aPw6wAUpMFinU0zXwIq694hU6kzKVQUHiFNW/ LzqlFWfweeuBQRD0X+vMKFk8abyEFN3RqS1Me+VerQO6Bs/pSu0CDUglwQDpKZICiyi8 QDBG2r12gh2yJC4KKlsRu1dmjHodNt4dXtwzLg1L7+C2jgJpuOdkfH/e+xCch4HTM+GZ eXv5EjmGvCdgLJfbX7/W6xPmq3sECI0VJj/+5K/GIs/krPDxqk0BtOJ0TPEqHZOnU9v7 bLr0G4ZMhV3/bZarKHCJ8G9MlYrZ5OXTAnJUpdfzUsC5zsZTtmy53maC0EltE2Ih+uM7 5fgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=xJGdjQIwXE40uXlmJj+bVdVszlHez8/1zvtQXCuDbwo=; b=bkfWxsvO9++va5rXE4vKnuwMEemDr7WaqUrUYcl3laD8hq2oboswAKlb/7MVexsPXd 7bTUtrOmL+75YN/vNno+tUE8Fg+FR6xVM8DfFcLwE2J7Q+V1FmsGKL6mJSnXJxhtKGbg Yvctj3zByM765MkclMTgDT7I4vwvKVdqoFA7q9gNz8Anq6ImGuv7BYpBuuBGNsNEh2U6 V+GrPIU8v0RxYG2K43Awy5RmXKG5zBIRhe4eD7XGWJUjwknyzvaM/6lgLE0AuntBsayt 9QKeKmlnsqg5dM9warlEVZFEAHLhNco31x3hpAIsvRdtePdc0C+XHfJ9rHxAKeP6yM51 qpdA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w9si5219348ilv.15.2021.05.10.02.53.05; Mon, 10 May 2021 02:53:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231249AbhEJJwn (ORCPT + 99 others); Mon, 10 May 2021 05:52:43 -0400 Received: from fgw20-7.mail.saunalahti.fi ([62.142.5.81]:63851 "EHLO fgw20-7.mail.saunalahti.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230506AbhEJJwP (ORCPT ); Mon, 10 May 2021 05:52:15 -0400 Received: from localhost (88-115-248-186.elisa-laajakaista.fi [88.115.248.186]) by fgw20.mail.saunalahti.fi (Halon) with ESMTP id 3cb47c1a-b175-11eb-ba24-005056bd6ce9; Mon, 10 May 2021 12:51:05 +0300 (EEST) From: Andy Shevchenko To: Pavel Machek , Andy Shevchenko , Amireddy Mallikarjuna reddy , Linus Walleij , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Abanoub Sameh , Dan Murphy , Krzysztof Kozlowski , linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Andy Shevchenko Subject: [PATCH v1 08/28] leds: lgm-sso: Put fwnode in any case during ->probe() Date: Mon, 10 May 2021 12:50:25 +0300 Message-Id: <20210510095045.3299382-9-andy.shevchenko@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510095045.3299382-1-andy.shevchenko@gmail.com> References: <20210510095045.3299382-1-andy.shevchenko@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org fwnode_get_next_child_node() bumps a reference counting of a returned variable. We have to balance it whenever we return to the caller. All the same in fwnode_for_each_child_node() case. Fixes: c3987cd2bca3 ("leds: lgm: Add LED controller driver for LGM SoC") Cc: Amireddy Mallikarjuna reddy Signed-off-by: Andy Shevchenko --- drivers/leds/blink/leds-lgm-sso.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/leds/blink/leds-lgm-sso.c b/drivers/leds/blink/leds-lgm-sso.c index 6a6d75f07af0..f6c7a5d0c2f7 100644 --- a/drivers/leds/blink/leds-lgm-sso.c +++ b/drivers/leds/blink/leds-lgm-sso.c @@ -633,8 +633,10 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) fwnode_for_each_child_node(fw_ssoled, fwnode_child) { led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); - if (!led) - return -ENOMEM; + if (!led) { + ret = -ENOMEM; + goto __dt_err; + } INIT_LIST_HEAD(&led->list); led->priv = priv; @@ -704,11 +706,11 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) if (sso_create_led(priv, led, fwnode_child)) goto __dt_err; } - fwnode_handle_put(fw_ssoled); return 0; + __dt_err: - fwnode_handle_put(fw_ssoled); + fwnode_handle_put(fwnode_child); /* unregister leds */ list_for_each(p, &priv->led_list) { led = list_entry(p, struct sso_led, list); @@ -734,10 +736,15 @@ static int sso_led_dt_parse(struct sso_led_priv *priv) if (fw_ssoled) { ret = __sso_led_dt_parse(priv, fw_ssoled); if (ret) - return ret; + goto err_child_out; } + fwnode_handle_put(fw_ssoled); return 0; + +err_child_out: + fwnode_handle_put(fw_ssoled); + return ret; } static int sso_probe_gpios(struct sso_led_priv *priv) -- 2.31.1