Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1588951

[PATCH] staging: fsl-mc: fix warning in DT ranges parser

Path csiph.com!fu-berlin.de!bofh.it!news.nic.it!robomod
From Arnd Bergmann <arnd@arndb.de>
Newsgroups linux.kernel
Subject [PATCH] staging: fsl-mc: fix warning in DT ranges parser
Date Mon, 27 Feb 2017 22:30:01 +0100
Message-ID <tfB1L-2XP-3@gated-at.bofh.it> (permalink)
X-Mailer git-send-email 2.9.0
X-Provags-ID V03:K0:+M0Upr+ca4LFbQB98cVrbxjmFRRwEu5UJyZ0+DeFku8YNDlGW7o SjUMV3lymeoCDwSBY9KGkuh8CF29QvFCEvE+AMDo+Pge9c4lzG3YwaLQpwlcISfP9dXo7+M 0VrSDuDwk0TITaMzHNYISbUbjIUrQrMEKMn7ehbSnSPSls3+f1Tf2c3b6NQlGu51TQcucdz xu4b0CcxAZSaLA83doomQ==
X-Ui-Out-Filterresults notjunk:1;V01:K0:ygPL4GV/kfQ=:9qbwg/b065/WOyrrzvOLwu RKOeSNWJxc7QOz0V4a5FIiu4S0GO8j7Ol+pYx+DQNevTlzVE09FES/LzS4kjsz0AY8w9vRC0z GBz4njb+aRLDwvd1Nd9eJkw69xDKjZLSqbDLn3YirVR9ngy1yFyXH2oEU6K726+GBd4DAxANP 9v7jNSZkFrNdXjKGZTiIG146f+vpujFVlMhRNZbDtHJMIapW4rSMdzmadzxwGon77BTWEq+G/ vPMgn9yeQ0tPYwSFweiWiXLHIjDe7fkG5xwCNhpxKH0iukCOWX7xofKajjJkNaKfXVQ49CzXr KOWWuVBeDcLf/7aZurVrJPudBtnbRGJjKCXjTcFg3wetcmwDQ4bDl3u7gozghZQ/iwVINh648 TG6FBS1UEU3D1AcA10kQ5fUJQGsWs4ILyZ+JjGuNZhqpdCN7EllxvaGj+nGgA3cX83LvRgFhh PVf8JdDTRQc2/ZCehP8Q9XpxTg0hmBAII3PFNRZCHDJ/a3zgq2Hrg+xy6w/+qpE+OsidjRdYt StXx9eAmc8SaeMkeeSTIegNT4m7TkefWpuAb2j8N4owri9o1tF1dIbn9zYyeJvWeXJtUcMPP9 /6zsfR5COab/8XYw/1am3B144l/Xd3kH2ZkFq3zws4QPv52NcyqFbRWYo3GJ+w6N4TO9Qx+Jc C+Rxn34wvBGwfYgFWfPorbHxGMKiLqu4iFccV1fH9LzBIygWo2cdInX9l9oG17g2uXlY=
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 89
Organization linux.* mail to news gateway
X-Original-Cc devicetree@vger.kernel.org, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, Arnd Bergmann <arnd@arndb.de>, German Rivera <german.rivera@nxp.com>, Itai Katz <itai.katz@nxp.com>, Ramiro Oliveira <Ramiro.Oliveira@synopsys.com>, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org
X-Original-Date Mon, 27 Feb 2017 21:42:16 +0100
X-Original-Message-ID <20170227204235.3547639-1-arnd@arndb.de>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1588951

Show key headers only | View raw


The fsl-mc-bus driver in staging contains a copy of the standard
'ranges' property parsing algorithm with a hack to treat a missing
property the same way as an empty one. This code produces false-positive
warnings for me in an allmodconfig build:

drivers/staging/fsl-mc/bus/fsl-mc-bus.c: In function 'fsl_mc_bus_probe':
drivers/staging/fsl-mc/bus/fsl-mc-bus.c:645:6: error: 'mc_size_cells' may be used uninitialized in this function [-Werror=maybe-uninitialized]
drivers/staging/fsl-mc/bus/fsl-mc-bus.c:682:8: error: 'mc_addr_cells' may be used uninitialized in this function [-Werror=maybe-uninitialized]
drivers/staging/fsl-mc/bus/fsl-mc-bus.c:644:6: note: 'mc_addr_cells' was declared here
drivers/staging/fsl-mc/bus/fsl-mc-bus.c:684:8: error: 'paddr_cells' may be used uninitialized in this function [-Werror=maybe-uninitialized]
drivers/staging/fsl-mc/bus/fsl-mc-bus.c:643:6: note: 'paddr_cells' was declared here

To avoid the warnings, I'm simplifying the argument handling to pass
the number of valid ranges in the property as the function return code
rather than passing it by reference. With this change, gcc can see that
we don't evaluate the cell numbers for an missing ranges property.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/staging/fsl-mc/bus/fsl-mc-bus.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
index 47acb0a29842..3be5f25ff113 100644
--- a/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
+++ b/drivers/staging/fsl-mc/bus/fsl-mc-bus.c
@@ -588,8 +588,7 @@ static int parse_mc_ranges(struct device *dev,
 			   int *paddr_cells,
 			   int *mc_addr_cells,
 			   int *mc_size_cells,
-			   const __be32 **ranges_start,
-			   u8 *num_ranges)
+			   const __be32 **ranges_start)
 {
 	const __be32 *prop;
 	int range_tuple_cell_count;
@@ -602,8 +601,6 @@ static int parse_mc_ranges(struct device *dev,
 		dev_warn(dev,
 			 "missing or empty ranges property for device tree node '%s'\n",
 			 mc_node->name);
-
-		*num_ranges = 0;
 		return 0;
 	}
 
@@ -630,8 +627,7 @@ static int parse_mc_ranges(struct device *dev,
 		return -EINVAL;
 	}
 
-	*num_ranges = ranges_len / tuple_len;
-	return 0;
+	return ranges_len / tuple_len;
 }
 
 static int get_mc_addr_translation_ranges(struct device *dev,
@@ -639,7 +635,7 @@ static int get_mc_addr_translation_ranges(struct device *dev,
 						**ranges,
 					  u8 *num_ranges)
 {
-	int error;
+	int ret;
 	int paddr_cells;
 	int mc_addr_cells;
 	int mc_size_cells;
@@ -647,16 +643,16 @@ static int get_mc_addr_translation_ranges(struct device *dev,
 	const __be32 *ranges_start;
 	const __be32 *cell;
 
-	error = parse_mc_ranges(dev,
+	ret = parse_mc_ranges(dev,
 				&paddr_cells,
 				&mc_addr_cells,
 				&mc_size_cells,
-				&ranges_start,
-				num_ranges);
-	if (error < 0)
-		return error;
+				&ranges_start);
+	if (ret < 0)
+		return ret;
 
-	if (!(*num_ranges)) {
+	*num_ranges = ret;
+	if (!ret) {
 		/*
 		 * Missing or empty ranges property ("ranges;") for the
 		 * 'fsl,qoriq-mc' node. In this case, identity mapping
-- 
2.9.0

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH] staging: fsl-mc: fix warning in DT ranges parser Arnd Bergmann <arnd@arndb.de> - 2017-02-27 22:30 +0100
  Re: [PATCH] staging: fsl-mc: fix warning in DT ranges parser Laurentiu Tudor <laurentiu.tudor@nxp.com> - 2017-02-28 11:40 +0100

csiph-web