From patchwork Fri Mar 15 08:48:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh Kumar X-Patchwork-Id: 15372 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id DBA6823E2E for ; Fri, 15 Mar 2013 08:48:28 +0000 (UTC) Received: from mail-vc0-f173.google.com (mail-vc0-f173.google.com [209.85.220.173]) by fiordland.canonical.com (Postfix) with ESMTP id 78370A19013 for ; Fri, 15 Mar 2013 08:48:28 +0000 (UTC) Received: by mail-vc0-f173.google.com with SMTP id gd11so1070693vcb.32 for ; Fri, 15 Mar 2013 01:48:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:x-forwarded-to:x-forwarded-for:delivered-to:x-received :received-spf:from:to:cc:subject:date:message-id:x-mailer :x-originalarrivaltime:x-mc-unique:content-type :content-transfer-encoding:x-gm-message-state; bh=gzyCrDMqmqEXoXvY2vSHnNTSnW+WMxdgWi02xlsh4CI=; b=T4oyeF0nCp0GbLvqbd2BmU0VUkyxA1rNxUzdPqHmFvr3i1vd3chevf0QbtjAl8TvNM c/Qtvz4us72gDHB8z8I50IF3mFAtGJuOB50aR4eZpdKOd/DhoL5FTCgzJo3PP8iO5/a5 AxiKoL7LA87zrQYLNcRINpkrcFPNTnvAp5F57XyCPnb9KAJGvQmhxHZcHG6O1iW1yXIY aBmHlcEuD9L8xDvP+vKYhF/YdUDazAo5Y4OQR8CnO3XdT8KhfAJmX4ZISrk/OdSK8ne5 yEX56LpKUZzdca9+vUuA3kmpz7vrP2ODMQV+pr6HsDBL1lRrwLQgUTBN09w+ZxrpYvSg XzPw== X-Received: by 10.58.188.48 with SMTP id fx16mr5949410vec.22.1363337307940; Fri, 15 Mar 2013 01:48:27 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.58.127.98 with SMTP id nf2csp109935veb; Fri, 15 Mar 2013 01:48:27 -0700 (PDT) X-Received: by 10.180.8.4 with SMTP id n4mr1351081wia.13.1363337306307; Fri, 15 Mar 2013 01:48:26 -0700 (PDT) Received: from service87.mimecast.com (service87.mimecast.com. [91.220.42.44]) by mx.google.com with ESMTP id bc3si2322053wjc.158.2013.03.15.01.48.25; Fri, 15 Mar 2013 01:48:26 -0700 (PDT) Received-SPF: pass (google.com: domain of viresh.kumar2@arm.com designates 91.220.42.44 as permitted sender) client-ip=91.220.42.44; Authentication-Results: mx.google.com; spf=pass (google.com: domain of viresh.kumar2@arm.com designates 91.220.42.44 as permitted sender) smtp.mail=viresh.kumar2@arm.com Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Fri, 15 Mar 2013 08:48:24 +0000 Received: from localhost ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Fri, 15 Mar 2013 08:48:22 +0000 From: Viresh Kumar To: vinod.koul@intel.com Cc: linaro-kernel@lists.linaro.org, spear-devel@list.st.com, linux-kernel@vger.kernel.org, rob.herring@calxeda.com, linux-arm-kernel@lists.infradead.org, Viresh Kumar Subject: [PATCH] DMA: OF: Check properties value before running be32_to_cpup() on it Date: Fri, 15 Mar 2013 14:18:20 +0530 Message-Id: <0a0ef15d47393fe9d24a395c38068b871f913776.1363337257.git.viresh.kumar@linaro.org> X-Mailer: git-send-email 1.7.12.rc2.18.g61b472e X-OriginalArrivalTime: 15 Mar 2013 08:48:22.0646 (UTC) FILETIME=[D993A160:01CE2159] X-MC-Unique: 113031508482408001 X-Gm-Message-State: ALoCoQmkEutQimn40vgvznJQk4B68cQigRjyedP0rfQQjNWnsJoPkziJDyCOPMMgvkS4G0XMzvCV In of_dma_controller_register() routine we are calling of_get_property() as an parameter to be32_to_cpup(). In case the property doesn't exist we will get a crash. This patch changes this code to check if we got a valid property first and then runs be32_to_cpup() on it. Signed-off-by: Viresh Kumar --- My mails are broken, i have pushed this patch here: http://git.linaro.org/gitweb?p=people/vireshk/linux.git;a=shortlog;h=refs/heads/dma-of-fix drivers/dma/of-dma.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c index 69d04d2..09c7ad1 100644 --- a/drivers/dma/of-dma.c +++ b/drivers/dma/of-dma.c @@ -93,6 +93,7 @@ int of_dma_controller_register(struct device_node *np, { struct of_dma *ofdma; int nbcells; + const __be32 *prop; if (!np || !of_dma_xlate) { pr_err("%s: not enough information provided\n", __func__); @@ -103,8 +104,11 @@ int of_dma_controller_register(struct device_node *np, if (!ofdma) return -ENOMEM; - nbcells = be32_to_cpup(of_get_property(np, "#dma-cells", NULL)); - if (!nbcells) { + prop = of_get_property(np, "#dma-cells", NULL); + if (prop) + nbcells = be32_to_cpup(prop); + + if (!prop || !nbcells) { pr_err("%s: #dma-cells property is missing or invalid\n", __func__); kfree(ofdma);