From patchwork Wed May 9 17:07:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 135321 Delivered-To: patch@linaro.org Received: by 10.46.151.6 with SMTP id r6csp5333lji; Wed, 9 May 2018 10:12:53 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqEowJOx1o2QQIGFCHvW+771gy4ipz36xz+YVYA8CbjQMbrkLqqPaAVDrUHyzpqX14J40Dp X-Received: by 10.98.68.156 with SMTP id m28mr38952969pfi.145.1525885973781; Wed, 09 May 2018 10:12:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525885973; cv=none; d=google.com; s=arc-20160816; b=I57lHvEJlihQAKszMh5xIHxZLETi3SAWt1sn4/ANQQkgxqLySZWwwUkqwmwLZclNg1 Yn/IgJrH33Z4rW7UAri51HP/AEWD0WRzEOONRNh9zVa5UnJpTpzZsjz9FRCSBJ4qjD61 Nj3CjGmg0ugS3MS3nMyadq41TYUVdE4/Vc+JuebFUsOqG3VueY0cUYNc0vfRiUbfYV0a HSPBwIWDV9hwd/nSb3bd/QpIrrw5LHyNbSeRPlHplGmz9BABTIdnoYo4wzaxF9EzUtQ9 CaM+/cKCwQjxubfsfXizuGpFg1700xplhrtik/pomjXuBKWMoMAotrIqvknmaZWy0zOx OYuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=KesC0CFhmLFMd8FtDA4gLMiF0yDXzpyiuDGouz1OxhY=; b=V3mlfWhWo4SGHqdnZ+jaR/YeJB3HPunyCq4s307vnMXss+Ni7Su9oAjuEtmPfDvozD 7ISYGvCMP8C5bwia1wIIjM8EH4e7JRaLxsuvHq54fVu0GGob3x9svIWGSxoxqHkuYRyt uTb2/7qao0B96qbkL0uH9uTLJkA7bJ21EW7+hL1WJHu0BzOU/jZKdbnMn50wqnIjVzlP XUvbRSGGChZc/d5jf79Fp7Vr+R5AnvphnVtIUuYvtBuWwB2vDBpHjK/n3zNwkHMuCZd+ mNpsEdMmtqDC3qxysgrt0ffiKu5Sc9w9N2mosgv9WXG4dhRniocIxZNoPPCnBnqtCpHa ErCw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j33-v6si16858745pld.151.2018.05.09.10.12.53; Wed, 09 May 2018 10:12:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965704AbeEIRMw (ORCPT + 10 others); Wed, 9 May 2018 13:12:52 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:47326 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965594AbeEIRMw (ORCPT ); Wed, 9 May 2018 13:12:52 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3729F1688; Wed, 9 May 2018 10:12:52 -0700 (PDT) Received: from e107155-lin.cambridge.arm.com (unknown [10.1.210.28]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 4D2693F592; Wed, 9 May 2018 10:12:51 -0700 (PDT) From: Sudeep Holla To: linux-arm-kernel@lists.infradead.org, Jonathan Cameron Cc: Sudeep Holla , linux-pm@vger.kernel.org Subject: [PATCH 7/8] firmware: arm_scmi: improve exit paths and code readability Date: Wed, 9 May 2018 18:07:13 +0100 Message-Id: <1525885634-22348-8-git-send-email-sudeep.holla@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1525885634-22348-1-git-send-email-sudeep.holla@arm.com> References: <1525885634-22348-1-git-send-email-sudeep.holla@arm.com> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org The existing code intends the good path to reduce the code which is so uncommon. It's obvious to have more readable code with a goto used for the error path. This patch adds more appropriate error paths and makes code more readable. It also moves a error logging outside the scope of locking. Suggested-by: Jonathan Cameron Signed-off-by: Sudeep Holla --- drivers/firmware/arm_scmi/bus.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) -- 2.7.4 Reviewed-by: Jonathan Cameron diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index f2760a596c28..472c88ae1c0f 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -125,13 +125,13 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol) int id, retval; struct scmi_device *scmi_dev; - id = ida_simple_get(&scmi_bus_id, 1, 0, GFP_KERNEL); - if (id < 0) - return NULL; - scmi_dev = kzalloc(sizeof(*scmi_dev), GFP_KERNEL); if (!scmi_dev) - goto no_mem; + return NULL; + + id = ida_simple_get(&scmi_bus_id, 1, 0, GFP_KERNEL); + if (id < 0) + goto free_mem; scmi_dev->id = id; scmi_dev->protocol_id = protocol; @@ -141,13 +141,15 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol) dev_set_name(&scmi_dev->dev, "scmi_dev.%d", id); retval = device_register(&scmi_dev->dev); - if (!retval) - return scmi_dev; + if (retval) + goto put_dev; + return scmi_dev; +put_dev: put_device(&scmi_dev->dev); - kfree(scmi_dev); -no_mem: ida_simple_remove(&scmi_bus_id, id); +free_mem: + kfree(scmi_dev); return NULL; } @@ -171,9 +173,9 @@ int scmi_protocol_register(int protocol_id, scmi_prot_init_fn_t fn) spin_lock(&protocol_lock); ret = idr_alloc(&scmi_protocols, fn, protocol_id, protocol_id + 1, GFP_ATOMIC); + spin_unlock(&protocol_lock); if (ret != protocol_id) pr_err("unable to allocate SCMI idr slot, err %d\n", ret); - spin_unlock(&protocol_lock); return ret; }