From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757205AbcAYNRq (ORCPT ); Mon, 25 Jan 2016 08:17:46 -0500 Received: from smtp.csie.ntu.edu.tw ([140.112.30.61]:54272 "EHLO smtp.csie.ntu.edu.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932253AbcAYNQJ (ORCPT ); Mon, 25 Jan 2016 08:16:09 -0500 From: Chen-Yu Tsai To: Maxime Ripard , Michael Turquette , Stephen Boyd Cc: Chen-Yu Tsai , linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Vishnu Patekar , linux-sunxi@googlegroups.com Subject: [PATCH RFC 05/11] clk: sunxi: unmap registers in sunxi_factors_clk_setup if register call fails Date: Mon, 25 Jan 2016 21:15:41 +0800 Message-Id: <1453727747-23307-6-git-send-email-wens@csie.org> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1453727747-23307-1-git-send-email-wens@csie.org> References: <1453727747-23307-1-git-send-email-wens@csie.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org sunxi_factors_clk_setup() does not unmap registers when sunxi_factors_register() fails. This patch adds proper error handling, and also an error message when sunxi_factors_register() fails. Also use the full DT node name in error messages, as the node name is often just "clk", which is useless. Signed-off-by: Chen-Yu Tsai --- drivers/clk/sunxi/clk-sunxi.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c index 7e719d089017..5dd927859bc2 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c @@ -747,15 +747,24 @@ static struct clk * __init sunxi_factors_clk_setup(struct device_node *node, const struct factors_data *data) { void __iomem *reg; + struct clk *clk; reg = of_iomap(node, 0); if (!reg) { pr_err("Could not get registers for factors-clk: %s\n", - node->name); + of_node_full_name(node)); return NULL; } - return sunxi_factors_register(node, data, &clk_lock, reg); + clk = sunxi_factors_register(node, data, &clk_lock, reg); + + if (!clk) { + pr_err("Could not register factors-clk: %s\n", + of_node_full_name(node)); + iounmap(reg); + } + + return clk; } -- 2.7.0