From patchwork Mon Feb 27 20:42:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 733158 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vXDRs3nK9z9s8X for ; Tue, 28 Feb 2017 07:52:41 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3vXDRs1hmpzDqLS for ; Tue, 28 Feb 2017 07:52:41 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3vXDQm36dVzDqC0 for ; Tue, 28 Feb 2017 07:51:43 +1100 (AEDT) Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue101 [212.227.15.145]) with ESMTPA (Nemesis) id 0LlFaA-1c8Ysc0oVy-00azSv; Mon, 27 Feb 2017 21:42:44 +0100 From: Arnd Bergmann To: Stuart Yoder , Laurentiu Tudor , Greg Kroah-Hartman Subject: [PATCH] staging: fsl-mc: fix warning in DT ranges parser Date: Mon, 27 Feb 2017 21:42:16 +0100 Message-Id: <20170227204235.3547639-1-arnd@arndb.de> 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:TfcU4yRrbvs=:lPUTXW1doyWTvctlhZsIjp 3gvXDhJ/RYr05hsYXz67I1hVLzQxLyQ3l28jzgS9emBe2JFMeIScseKMO8493myoBz8PhZRDh f8Rl3TmLf7y7wsiqlaURAQx1eq1ZFLne76HPIDyYL9D4XLqkFVSNlqctF3qNjOsfofAr0Nurq sEsd7Xdti7imfTa+wwHvR2LQnFQgdlw8YV3NEWpJ6YBplZFd2/OTz3xhrSgQRHeTeKuabh+EM MqwC2p7VCnXXP73kyiwCVWuld0mH5T/BncSbuF27DzVHllNVDxE0W3L1AeDHVjxYpp2RDCs8G Md+mzRqGoL1Pf3wB7zP37klCwdl7r2zHCttoEl5EPbWprfezB312lf6nwbtyyCTNKLuWfpaIq o4TFoU6BJ6LSNCCA1kXOstUlPgzLsaAL2IE81rPrg+Uy5ypKJE8KfVX/xG381p/NIxXBYMSwa QwvkfdVgQ6yH1PzFvZklgdxe6kPxyPBn0vLGbadxGD4Du27owT6NI3i6iDasAauFpUTZq3WKM N6+kPXAp5/lhQM5x/OlqtAIZLKLbhEIrJdxsLF9JB2dL4yBqPHoyC9WV3O8ofg/EGGqFroXWM mra0gNco+LZr0v9RkYqmxPXTEgqd2qhFHuyypJtjGodWMoG4SbixYPNlBGc6Ra16EpH/p+S0n 8UAKS7ZhNFKrNCdss/N6i2VUMAUJdueY4QLSRDIqmVXOhXGp3nKRNqZWLKcawoqH4CFw= X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Ramiro Oliveira , Arnd Bergmann , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Rob Herring , German Rivera , Frank Rowand , Itai Katz , linux-arm-kernel@lists.infradead.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" 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 Acked-by: Laurentiu Tudor --- 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