Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp6156905ybi; Sun, 21 Jul 2019 10:34:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqwc383iAyLDW4UtC8Av7i6g3zzaPIENABiFoBjOnvdqgPaU+bcfacVFmypMG21BzGlr/OYt X-Received: by 2002:a17:902:be12:: with SMTP id r18mr67379121pls.341.1563730484472; Sun, 21 Jul 2019 10:34:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563730484; cv=none; d=google.com; s=arc-20160816; b=diLRt/aD4LM+lP96mr8Wefe8AM0Lr/IMQGYhEetYnfF63IyWAZ/jum7MB8gwQtROCk cHj3+9oxA+Ai6gt4JF5LZCLFsGdYNxc6+ZFRG1Q9ZqvaqGa5T+jM5Z2Qz5VgJsbkpCQ8 C1jDugUbKubll62vZvfB1/QQ958QZUx5EjLBbcjtQzoTRDnEJvue6+K2hExeM7kYOt+E stXuKfyloQtwWU+vCBfCu6BU0j3sjR/g5kOkjHhDP0cC3pkxNaSUZtN8eeiJ31bgj7Ez SMU6vjNfg1mKxHCfexUoRbDZxsL2vPaj2Ekm81AWKjHHvfrRE7ZN+4SAsc/9pTLRiiVF feGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=swxeLFC8gcPIIKAe6wvytV7EVBre7w1P0ZOHeNQPbn8=; b=T6e+O+YTG5eUUOUYatxzy9Yv9iEYNYnOBLiY9HtsPdxh5/warK90L3VXEZlxreyLjq y/S1XvFjaQxYGTnc2zYlJMhqQ4I9KhGRcllvMIFUlbvgfjBi7AHgocPkaqzyxcpa+7LL u237k9laYhhuoek9mzLIkKaC/0xzFull+PLGD/GdEK0qi1P0zzlYpxQkhancdlHJgsEL zb30yctGrLDz/7Xl+WfVmwSWWRofcZAcSNt+UHFfJGJuxyMEmCrchBXKN6JG5FWmqTZy 4ATIlCRy2Y23JgkFKN5K2eO6PTM4XdcGrUEGTud60c0R6mWyyi4JQOeCpEI2q9Rc/ANi N6YQ== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id em9si6662388pjb.37.2019.07.21.10.34.27; Sun, 21 Jul 2019 10:34:44 -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 S1726945AbfGUR2C (ORCPT + 99 others); Sun, 21 Jul 2019 13:28:02 -0400 Received: from saturn.retrosnub.co.uk ([46.235.226.198]:40978 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725828AbfGUR2C (ORCPT ); Sun, 21 Jul 2019 13:28:02 -0400 Received: from archlinux (cpc149474-cmbg20-2-0-cust94.5-4.cable.virginm.net [82.4.196.95]) by saturn.retrosnub.co.uk (Postfix; Retrosnub mail submission) with ESMTPSA id AABFF9E7484; Sun, 21 Jul 2019 18:27:59 +0100 (BST) Date: Sun, 21 Jul 2019 18:27:58 +0100 From: Jonathan Cameron To: Sasha Levin Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, Bastien Nocera , Jonathan Cameron , linux-iio@vger.kernel.org Subject: Re: [PATCH AUTOSEL 4.4 18/35] iio: iio-utils: Fix possible incorrect mask calculation Message-ID: <20190721182758.1707edab@archlinux> In-Reply-To: <20190719041423.19322-18-sashal@kernel.org> References: <20190719041423.19322-1-sashal@kernel.org> <20190719041423.19322-18-sashal@kernel.org> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 19 Jul 2019 00:14:06 -0400 Sasha Levin wrote: > From: Bastien Nocera > > [ Upstream commit 208a68c8393d6041a90862992222f3d7943d44d6 ] > > On some machines, iio-sensor-proxy was returning all 0's for IIO sensor > values. It turns out that the bits_used for this sensor is 32, which makes > the mask calculation: > > *mask = (1 << 32) - 1; > > If the compiler interprets the 1 literals as 32-bit ints, it generates > undefined behavior depending on compiler version and optimization level. > On my system, it optimizes out the shift, so the mask value becomes > > *mask = (1) - 1; > > With a mask value of 0, iio-sensor-proxy will always return 0 for every axis. > > Avoid incorrect 0 values caused by compiler optimization. > > See original fix by Brett Dutro in > iio-sensor-proxy: > https://github.com/hadess/iio-sensor-proxy/commit/9615ceac7c134d838660e209726cd86aa2064fd3 > > Signed-off-by: Bastien Nocera > Signed-off-by: Jonathan Cameron > Signed-off-by: Sasha Levin Good catch, I should have cc'd stable on this one. Thanks, Jonathan > --- > tools/iio/iio_utils.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c > index 5eb6793f3972..2d0dcd6fc64c 100644 > --- a/tools/iio/iio_utils.c > +++ b/tools/iio/iio_utils.c > @@ -163,9 +163,9 @@ int iioutils_get_type(unsigned *is_signed, unsigned *bytes, unsigned *bits_used, > *be = (endianchar == 'b'); > *bytes = padint / 8; > if (*bits_used == 64) > - *mask = ~0; > + *mask = ~(0ULL); > else > - *mask = (1ULL << *bits_used) - 1; > + *mask = (1ULL << *bits_used) - 1ULL; > > *is_signed = (signchar == 's'); > if (fclose(sysfsfp)) {