From patchwork Tue Oct 25 15:55:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101605 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp3191468qge; Tue, 25 Oct 2016 08:56:31 -0700 (PDT) X-Received: by 10.107.144.138 with SMTP id s132mr16537382iod.146.1477410991522; Tue, 25 Oct 2016 08:56:31 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a8si17817793pan.8.2016.10.25.08.56.31; Tue, 25 Oct 2016 08:56:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758650AbcJYP42 (ORCPT + 27 others); Tue, 25 Oct 2016 11:56:28 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:49868 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752744AbcJYP40 (ORCPT ); Tue, 25 Oct 2016 11:56:26 -0400 Received: from wuerfel.lan. ([78.43.20.153]) by mrelayeu.kundenserver.de (mreue004) with ESMTPA (Nemesis) id 0MC5LA-1c7tlP34oC-008o6I; Tue, 25 Oct 2016 17:55:43 +0200 From: Arnd Bergmann To: Jonathan Cameron Cc: Arnd Bergmann , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Matt Ranostay , sayli karnik , Wei Yongjun , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] iio: maxim_thermocouple: detect invalid storage size in read() Date: Tue, 25 Oct 2016 17:55:04 +0200 Message-Id: <20161025155538.38037-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:qBHym+PvXwQbZiR05Q5oRAaGdC8mvVbWuXo+c42MrHJlodY+T4D icywYm8nDHXQkLPIXH2SNPHWGFa4C6v/7hd7oKvDdMbI7Xle451bcPQUTWcBbmU7n5GLWcx STVoFl/KVlAuko6f4ZxV5KMIeIe2tI3BtIogTVyDQGRXfZKXV1SCFGWUaEX8Jen6PTJZ4uM Y+PzrhzMkgjxkR6IGUGAA== X-UI-Out-Filterresults: notjunk:1; V01:K0:pskujuNeIRQ=:P35pyX2Os2BQ00qbRjUMUG HAf3mMT/zkTJCnj3o62lyDMSGYp33Tpt1+TKTsNVGhhi7IaU+Y9qDsYg3zjLbwbpJoXfe6cvV w+9doGL4qi7Qz7mu7m3fog2G1cZlJIL2UmwjPx7vEecWX6qkdMyBdw7BFIMKg3hOIKwa7U4f6 96MIlD3i17gJNLr25Nt+UqPJh/jKkZe1ne7eJlMlAKzs8VNlqr3WXXwI8o+RrbbdAxdDLv8h3 oFIPZxiltf63LxJjvQEbLjuaClmXsZwB7qntWXkpjV8zSXirLuZ6FnyzUqkHXJzU5d7XHzxj+ wwbTsxNmlSFcrxA4lAML6E5nr+ALGB+U+8XrC7uZGgzg1pVox2nXHk2E6OQvOPKpfKsdaTJ2b pU/yM0jjd8kjS0GVJDd3NyhK4Z3jn51N5O9IHLDU+gJUIwCN/NFP8a/KIOavzX/iH3/81+6QG Wy3StZH9ha6kUjc9eifZNFLFLSHA1H0a50xRcKOyXnd+R+fF+euYrhKpApTXKMkhbMHTvSZb3 sd7G8JXTYwj7HTbsALkLTSdhwDV9AKJ999PKk2WFSDBZl04m6dtxl9TOE/n/jHEfs1QDU/2G7 os4u0JJhkqrMX57H44grIPmDMFzUdT1AkCWtzUKg5lekRNFWdXrwcSsVwGtjmAml5wPmAN4gM JKzVBW+0TIH/Wq3RmsjHb2hvD3j79/KOvM2NeqjP+whhLdr4TohvsgHn++In2flRrkbw= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As found by gcc -Wmaybe-uninitialized, having a storage_bytes value other than 2 or 4 will result in undefined behavior: drivers/iio/temperature/maxim_thermocouple.c: In function 'maxim_thermocouple_read': drivers/iio/temperature/maxim_thermocouple.c:141:5: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized] This probably cannot happen, but returning -EINVAL here is appropriate and makes gcc happy and the code more robust. Fixes: 231147ee77f3 ("iio: maxim_thermocouple: Align 16 bit big endian value of raw reads") Signed-off-by: Arnd Bergmann --- drivers/iio/temperature/maxim_thermocouple.c | 2 ++ 1 file changed, 2 insertions(+) -- 2.9.0 diff --git a/drivers/iio/temperature/maxim_thermocouple.c b/drivers/iio/temperature/maxim_thermocouple.c index 066161a4bccd..f962f31a5eb2 100644 --- a/drivers/iio/temperature/maxim_thermocouple.c +++ b/drivers/iio/temperature/maxim_thermocouple.c @@ -136,6 +136,8 @@ static int maxim_thermocouple_read(struct maxim_thermocouple_data *data, ret = spi_read(data->spi, (void *)&buf32, storage_bytes); *val = be32_to_cpu(buf32); break; + default: + ret = -EINVAL; } if (ret)