Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp723109pxj; Fri, 28 May 2021 14:09:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzO42A5JbZej3iE2IELjq2lPMJfxUMspIBTXzjxjdrCAnyi4IQ1M0QT36mBBStrqixuWKdg X-Received: by 2002:a17:907:3f97:: with SMTP id hr23mr11302082ejc.49.1622236148930; Fri, 28 May 2021 14:09:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622236148; cv=none; d=google.com; s=arc-20160816; b=qiuwbIag0AT9Ao9Fyh5O2xsfWyuQsTQgGVApYKsIHbNkjasNRuzmalkHLfk3scOyCD +GBwnhIKKKSgBnPF+mg3q3uqWzYmPg/Xu+ENvAL/+OmiOmr2ofKwWOls4lKV1iR0QOP/ 0SITs1d26idj16MpQqj2wnTDbeI4cRqihbWrs+1ialoDMouojCRhEAQSnxse5ais2RE/ 0ljsX22eFQntLKNQ874aeGVPVaI8uVoRb5GI3fpo5gqM020MdIQxtnkE5v+fE8+2qCnO aJNp0ws41oRFHncqZFQW57UboC93mr9dWFdpInZ4bIcdgHE8FwPKRrK8M2Ybc53e1Wn4 Tg1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :to:subject; bh=X3AzHAfIUltyeN2FoNyFAm0x7yK/124HOojEqF9MtYU=; b=SvgPAZ/xTF0Yv6fdKp9gUE41hAjROGn2ghHpDOmyVRtyc0FKNYoIH88N8zwaKFyF9d Km2Aoi650M4l/K3wfXagZaNAlPHCY7FYrnwL48Lph7kM6jbII36K5gHSHJFLqaXz7R2U TnAljvu0jrEquVKMm4gQkKK+ByIZZll9wVOREpzWfoJWXLploaL/Ekk7klN7F4gSd0NE 9O/0/bj5hT0lh2oO0pwOUZuNmFgmqPmvRbrhseupSPT4eTduQh+PIdDwn/XihD8bza8A La1depHmkwFJjFLTmU32V3CVkvXDLu95zjmfUwYh25lLdleS7vwOHHlzU22hcyQtuLNz OGfA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z26si5725681eje.396.2021.05.28.14.08.36; Fri, 28 May 2021 14:09:08 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229539AbhE1VIx (ORCPT + 99 others); Fri, 28 May 2021 17:08:53 -0400 Received: from smtp.220.in.ua ([89.184.67.205]:53098 "EHLO smtp.220.in.ua" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229481AbhE1VIw (ORCPT ); Fri, 28 May 2021 17:08:52 -0400 X-Greylist: delayed 490 seconds by postgrey-1.27 at vger.kernel.org; Fri, 28 May 2021 17:08:52 EDT Received: from [192.168.202.100] (unknown [95.67.115.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.220.in.ua (Postfix) with ESMTPSA id 487401A200CD; Fri, 28 May 2021 23:59:05 +0300 (EEST) Subject: Re: [PATCH v1 04/28] leds: el15203000: Make error handling more robust To: Andy Shevchenko , Pavel Machek , Andy Shevchenko , Amireddy Mallikarjuna reddy , Linus Walleij , =?UTF-8?Q?Marek_Beh=c3=ban?= , Abanoub Sameh , Dan Murphy , Krzysztof Kozlowski , linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org References: <20210510095045.3299382-1-andy.shevchenko@gmail.com> <20210510095045.3299382-5-andy.shevchenko@gmail.com> From: Oleh Kravchenko Message-ID: <6fe3dbb8-255d-35f7-076a-039ab032ac7f@kaa.org.ua> Date: Fri, 28 May 2021 23:59:00 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210510095045.3299382-5-andy.shevchenko@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: uk-UA Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 10.05.21 12:50, Andy Shevchenko пише: > It's easy to miss necessary clean up, e.g. firmware node reference counting, > during error path in ->probe(). Make it more robust by moving to a single > point of return. > > Signed-off-by: Andy Shevchenko > --- > drivers/leds/leds-el15203000.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/leds/leds-el15203000.c b/drivers/leds/leds-el15203000.c > index 912451db05e6..bcdbbbc9c187 100644 > --- a/drivers/leds/leds-el15203000.c > +++ b/drivers/leds/leds-el15203000.c > @@ -246,16 +246,13 @@ static int el15203000_probe_dt(struct el15203000 *priv) > ret = fwnode_property_read_u32(child, "reg", &led->reg); > if (ret) { > dev_err(priv->dev, "LED without ID number"); > - fwnode_handle_put(child); > - > - break; > + goto err_child_out; > } > > if (led->reg > U8_MAX) { > dev_err(priv->dev, "LED value %d is invalid", led->reg); > - fwnode_handle_put(child); > - > - return -EINVAL; > + ret = -EINVAL; > + goto err_child_out; > } > > led->priv = priv; > @@ -277,14 +274,16 @@ static int el15203000_probe_dt(struct el15203000 *priv) > dev_err(priv->dev, > "failed to register LED device %s, err %d", > led->ldev.name, ret); > - fwnode_handle_put(child); > - > - break; > + goto err_child_out; > } > > led++; > } > > + return 0; > + > +err_child_out: > + fwnode_handle_put(child); > return ret; > } > > Reviewed-by: Oleh Kravchenko