Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp826809pxj; Fri, 7 May 2021 23:19:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzgrNvj/U2Yc1lM6D0Yd5pI7zZwzEnSWQB8BnfIGRLghF2j2TZ/WTAd/PIikOzSeSX3/Foj X-Received: by 2002:aa7:8541:0:b029:28e:7797:72cf with SMTP id y1-20020aa785410000b029028e779772cfmr14743714pfn.64.1620454781939; Fri, 07 May 2021 23:19:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620454781; cv=none; d=google.com; s=arc-20160816; b=m+REXwr4YK58e7dARrRpwbgDgq/+Jf74zuZpJZ9G2jxhz2nKzUNO3/jwT6UzqtJY+5 /pWKKwm3j6fVwINNpP6UJ9VJr7w1twAQgBsjPqTaVp9P9p11pwSiqqxr2j23t/18/nJH qZzL/GrE7T9QE0tN/Xmf2FnbbOxEErz2rNxmqnqYwL0uIKxPXdQJ7obeyJbqCs355Fbm jwa6inSH5nzwJ2lhUGFgyvE1kMAkaQ9d4OYlXdWwGXpHYdzdLytYJa7EMElK9hK/9qWn Z9tSIOEIWyoYgJcJMW0XP7QshPG9g2Pg7PkXZxzrjVxIvS1MTKuLOuZSFtqfLgJCwfkr CMzg== 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 :message-id:date:subject:cc:to:from; bh=QNYOYBs5rz0948UQn6EAHIA7K20PYw6WDaig4Y3vaaM=; b=tnTNRLOysG/cAe4EahBImn2Up2tOHerl+Rs86irlwsdjuF3dGPaFhmg0kZhgCAwOQy 77LoJuRlufXSFTQHXQnlIgzYaKd+zKQKN5mfxF9WIH0T68fbzvk+Xc7b4OqZQ1pZVmEd SuTID9WNz+T26iETBZ6mPzgu1nFCWAm+KvZ8cC+X6oy0wEpn08luREBzm/3Mz4pjIXnk e/65IBLe6BnBPo66NpUWVWPSTEySP4FB2JzxoEKQ30z+Tvm5jbWWm8AYzz9MdeuZkXCX tOf50sTPW/naHZ2WhEQQtwrnTabtJ0+tsWA+mpqKOsgbIU75RQYcPlEgS2dmH3RUUWiA 74EQ== 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 m21si17373686pjv.116.2021.05.07.23.19.27; Fri, 07 May 2021 23:19:41 -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 S229775AbhEHGSD (ORCPT + 99 others); Sat, 8 May 2021 02:18:03 -0400 Received: from smtp07.smtpout.orange.fr ([80.12.242.129]:59166 "EHLO smtp.smtpout.orange.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229473AbhEHGSD (ORCPT ); Sat, 8 May 2021 02:18:03 -0400 Received: from localhost.localdomain ([86.243.172.93]) by mwinf5d66 with ME id 26Gz2500721Fzsu036H0FJ; Sat, 08 May 2021 08:17:01 +0200 X-ME-Helo: localhost.localdomain X-ME-Auth: Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI= X-ME-Date: Sat, 08 May 2021 08:17:01 +0200 X-ME-IP: 86.243.172.93 From: Christophe JAILLET To: srinivas.kandagatla@linaro.org, bgolaszewski@baylibre.com, gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET Subject: [PATCH V2] nvmem: core: add a missing of_node_put Date: Sat, 8 May 2021 08:16:58 +0200 Message-Id: <10f4577d8a72765780006fbaf7751c8df9c26d0a.1620454485.git.christophe.jaillet@wanadoo.fr> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 'for_each_child_of_node' performs an of_node_get on each iteration, so a return from the middle of the loop requires an of_node_put. Fixes: e888d445ac33 ("nvmem: resolve cells from DT at registration time") Signed-off-by: Christophe JAILLET --- v2: Reorder code to delay the 'cell->np = of_node_get(child);' Without this change, we needed a double 'of_node_put' in the last hunk which could be confusing to the reader --- drivers/nvmem/core.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index bca671ff4e54..f9c9c9859919 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -686,15 +686,17 @@ static int nvmem_add_cells_from_of(struct nvmem_device *nvmem) continue; if (len < 2 * sizeof(u32)) { dev_err(dev, "nvmem: invalid reg on %pOF\n", child); + of_node_put(child); return -EINVAL; } cell = kzalloc(sizeof(*cell), GFP_KERNEL); - if (!cell) + if (!cell) { + of_node_put(child); return -ENOMEM; + } cell->nvmem = nvmem; - cell->np = of_node_get(child); cell->offset = be32_to_cpup(addr++); cell->bytes = be32_to_cpup(addr); cell->name = kasprintf(GFP_KERNEL, "%pOFn", child); @@ -715,11 +717,12 @@ static int nvmem_add_cells_from_of(struct nvmem_device *nvmem) cell->name, nvmem->stride); /* Cells already added will be freed later. */ kfree_const(cell->name); - of_node_put(cell->np); kfree(cell); + of_node_put(child); return -EINVAL; } + cell->np = of_node_get(child); nvmem_cell_add(cell); } -- 2.30.2