From patchwork Wed Apr 22 13:17:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 6255941 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 61E0A9F389 for ; Wed, 22 Apr 2015 13:18:03 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8AC0820328 for ; Wed, 22 Apr 2015 13:18:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 30D2A2035B for ; Wed, 22 Apr 2015 13:18:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756768AbbDVNR7 (ORCPT ); Wed, 22 Apr 2015 09:17:59 -0400 Received: from mail-pa0-f45.google.com ([209.85.220.45]:34097 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756403AbbDVNRz (ORCPT ); Wed, 22 Apr 2015 09:17:55 -0400 Received: by pacyx8 with SMTP id yx8so272725540pac.1; Wed, 22 Apr 2015 06:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zyD7fZN/mcFrbY6ktMhJSa/MLrvWTgLiJxiRCybxTsg=; b=D6hiK/ruyhkwjAeNZoyKxq5j9R98pJh23ii5GrroFxjxTbmaGCHNV1egvUQpZC8Q1w /eXO4mod3ifwNFAZjI7baLyiJKKfhUafNxy+ADJH8PEZJFShmDZNZ7NqfdKgZCHot43T BV59XPytZeEVU4t1g8ozfyioFPDVqFAzzdWGVm6VkP8O85agL1PkPKiFvEqyYTv3atx7 8j2SxclrDNgiltvhP2Ke2nbn4bkf1LvyJI8n7itcknLl7ot3wdRRyjuroFuFSPMMRSPL h0qUE4A+N2FZPFFhrwBBAzjOyMxt/Xv4STjtDdBit8vRC58XjL/NPupSsH7xK4VxkOg0 D7qw== X-Received: by 10.70.129.106 with SMTP id nv10mr6368560pdb.160.1429708674417; Wed, 22 Apr 2015 06:17:54 -0700 (PDT) Received: from localhost.localdomain ([125.130.175.98]) by mx.google.com with ESMTPSA id sz7sm5193014pab.22.2015.04.22.06.17.52 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Apr 2015 06:17:53 -0700 (PDT) From: Krzysztof Kozlowski To: Kukjin Kim , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski Subject: [RESEND PATCH v2 2/3] ARM: EXYNOS: Handle of_find_device_by_node and kstrdup failures Date: Wed, 22 Apr 2015 22:17:09 +0900 Message-Id: <1429708630-19810-2-git-send-email-k.kozlowski.k@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1429708630-19810-1-git-send-email-k.kozlowski.k@gmail.com> References: <1429708630-19810-1-git-send-email-k.kozlowski.k@gmail.com> Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Krzysztof Kozlowski Prevent possible NULL pointer dereference of pointer returned by of_find_device_by_node(). Handle this by skipping such power domain. Additionally fail the init on kstrdup() failure. Such case is actually not fatal because the name for power domain allocated by kstrdup() is used only in printk. Still as a precaution handle this as an error condition. Signed-off-by: Krzysztof Kozlowski --- Changes since v1: None. --- arch/arm/mach-exynos/pm_domains.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c index 14622b5f4481..61c32ccc9f7a 100644 --- a/arch/arm/mach-exynos/pm_domains.c +++ b/arch/arm/mach-exynos/pm_domains.c @@ -126,6 +126,12 @@ static __init int exynos4_pm_init_power_domain(void) struct device *dev; pdev = of_find_device_by_node(np); + if (!pdev) { + pr_err("%s: failed to find device for node %s\n", + __func__, np->name); + of_node_put(np); + continue; + } dev = &pdev->dev; pd = kzalloc(sizeof(*pd), GFP_KERNEL); @@ -136,6 +142,12 @@ static __init int exynos4_pm_init_power_domain(void) } pd->pd.name = kstrdup(dev_name(dev), GFP_KERNEL); + if (!pd->pd.name) { + kfree(pd); + of_node_put(np); + return -ENOMEM; + } + pd->name = pd->pd.name; pd->base = of_iomap(np, 0); if (!pd->base) {