Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2433410pxj; Mon, 10 May 2021 02:53:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXz469bc+ZXEF/+NGLSI3bC6JLxVeVqvBanZwQh0qG+dUFYcP3WyyXUFKIWD3IOxdMeaLf X-Received: by 2002:a92:d7c3:: with SMTP id g3mr19238984ilq.114.1620640419658; Mon, 10 May 2021 02:53:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620640419; cv=none; d=google.com; s=arc-20160816; b=UYWqQHwKbSbYHqpqIffXix04CVT1y8V1hK/wVKx1YYDIPsTdjyMzY2l9/yKTUZDJuh DuNHEveZb58pR+PsA85XsI44eUQb/AZau1i08slF4vcwnQ8ojxQT/ukqVEiDPtrh8pOq DO68J5UDegEl9TStmlFN31bCUY6MxXxyX2x2oD3q3GEHlH5tMiH0O5gOQ58LnKggRohp jIWs9EjsuQqUs+nYlh1iyWNMkMzFfao0lni9pEKGHXmeVhgv6wo21+22Y3ZSEOmT497J 9OuITdJp9TmEhvDVxmEgcstswYogZYu2kFnVl+Inj3bDYmJsoxife8rqm93Klbni+n5g aHYQ== 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=JtaKx1t3fI+sI+rBJPd4JPUbmmvuuB+yg+20cDoVq2A=; b=Xmlas+TGvw+cRZ/Yj9VKfM4O0KKpz6/XJCStO6WFZ8OxVCPcTh2FLMo8Kio1457rFk aBzs0gZOzXQbRhA7fWY+qtbTSI13cqMdHQoC7SvRRgJRrWfpel+DfVI4QfFMZkkMikev IgODrGBOoCeO3s9iI++X34YqJWI9CLdfsYzyMSY/vGFDTqmw37kRNNtB176/lC5Pwjcb c2FT4DJSwTSVkaUX35b41ycmqfunDkHm9kZC0BqRF7x/9OddLRCqcDcK5ij2H38qjE7N 59B3uHq5B6Y0HYLl4nASUT/cRW2f2gKsl6PoQdLXBTaCG7h3DID/Ua6TaFo6YHLzF2RJ ZlpQ== 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 l11si269329ils.107.2021.05.10.02.53.27; Mon, 10 May 2021 02:53:39 -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 S231273AbhEJJxZ (ORCPT + 99 others); Mon, 10 May 2021 05:53:25 -0400 Received: from fgw22-7.mail.saunalahti.fi ([62.142.5.83]:17396 "EHLO fgw22-7.mail.saunalahti.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231129AbhEJJwY (ORCPT ); Mon, 10 May 2021 05:52:24 -0400 Received: from localhost (88-115-248-186.elisa-laajakaista.fi [88.115.248.186]) by fgw22.mail.saunalahti.fi (Halon) with ESMTP id 401f8309-b175-11eb-88cb-005056bdf889; Mon, 10 May 2021 12:51:11 +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 15/28] leds: lm3532: Make error handling more robust Date: Mon, 10 May 2021 12:50:32 +0300 Message-Id: <20210510095045.3299382-16-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 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-lm3532.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/leds/leds-lm3532.c b/drivers/leds/leds-lm3532.c index 0bf25bdde02f..beb53040e09e 100644 --- a/drivers/leds/leds-lm3532.c +++ b/drivers/leds/leds-lm3532.c @@ -586,7 +586,6 @@ static int lm3532_parse_node(struct lm3532_data *priv) ret = fwnode_property_read_u32(child, "reg", &control_bank); if (ret) { dev_err(&priv->client->dev, "reg property missing\n"); - fwnode_handle_put(child); goto child_out; } @@ -601,7 +600,6 @@ static int lm3532_parse_node(struct lm3532_data *priv) &led->mode); if (ret) { dev_err(&priv->client->dev, "ti,led-mode property missing\n"); - fwnode_handle_put(child); goto child_out; } @@ -636,7 +634,6 @@ static int lm3532_parse_node(struct lm3532_data *priv) led->num_leds); if (ret) { dev_err(&priv->client->dev, "led-sources property missing\n"); - fwnode_handle_put(child); goto child_out; } @@ -647,7 +644,6 @@ static int lm3532_parse_node(struct lm3532_data *priv) if (ret) { dev_err(&priv->client->dev, "led register err: %d\n", ret); - fwnode_handle_put(child); goto child_out; } @@ -655,14 +651,15 @@ static int lm3532_parse_node(struct lm3532_data *priv) if (ret) { dev_err(&priv->client->dev, "register init err: %d\n", ret); - fwnode_handle_put(child); goto child_out; } i++; } + return 0; child_out: + fwnode_handle_put(child); return ret; } -- 2.31.1