Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp517275rwb; Fri, 18 Nov 2022 04:55:53 -0800 (PST) X-Google-Smtp-Source: AA0mqf7vq+h3bq3K0GbAUPZWdGxksCCgB4fdPP8+P3/Tzy4U1THYPDPcTd88K7u77VQJHvYlfglh X-Received: by 2002:a17:906:8419:b0:7a3:28c7:5835 with SMTP id n25-20020a170906841900b007a328c75835mr6148073ejx.32.1668776152981; Fri, 18 Nov 2022 04:55:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668776152; cv=none; d=google.com; s=arc-20160816; b=fyQFIk4E4qEvZGcMRf4xu/Uj3x1M5ydIade8LXk9uSApdLNHkUOxL9u0mlQcnxluPp fk2LX3+ViTULhJLfd8j10CKgtEkX6qKK2MzrlkzQeX66nzKos89pqwvCDp6CaWfEGeyO +B0tUQavMlo8Q58Y9R3zvw98DRDnK3zQLzUHARYie4uwD+VE2N3VXWYwxj4kzPrwNwnA prc6Tt33Yn8CrCot4WNjdrTM4xZbeX1mDNvapjb5XBBQshmkAPaWeGXTR8trlWiO+ti/ yrDp1dXBYuhQ7oSTZsKVsCR7eDKlmx1tx6W9gaozkB2I5DTQFunWRGLMl7pjd30jGpKZ aWVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=8HEJJXAKUVernzz9Wo79oEymNliom5Q3VVumNx+M1W8=; b=oy1sN0/rPQlB11u4GbDepJHm7oMZR6UyQE6JM9/ueZhz1IyLuBy00PydzTj8uT1yEa QwVVVokGJy+mgS+lVKZv8EnC02OC3f7eiMK/uDVcw6j8oTEp81Ed23FGnp2nNIzToBv8 0ikWkuvP2OBMenfZUtVn9R/xqvwc3iRPAw1MRMcL0OG/Wd/lYIchWML7nkirjEPOO97S miLsmUuJNvZGNomPgf5GG8Mjmoy/kYRmkiGN06UKIzD4KBnh2XNulkMdxQynd4nTbdSN hMbMhg0AtM1wNoueBpRzClLraIEhAsStS7KE6daakbadBdPWEirRLRa5veFEZUIgI8hq FQYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@rasmusvillemoes.dk header.s=google header.b=ZHAsgUaI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t6-20020a056402524600b00461c531d8casi3337178edd.305.2022.11.18.04.55.29; Fri, 18 Nov 2022 04:55:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@rasmusvillemoes.dk header.s=google header.b=ZHAsgUaI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235185AbiKRMdK (ORCPT + 91 others); Fri, 18 Nov 2022 07:33:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241920AbiKRMcx (ORCPT ); Fri, 18 Nov 2022 07:32:53 -0500 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 092596151C for ; Fri, 18 Nov 2022 04:32:40 -0800 (PST) Received: by mail-lj1-x235.google.com with SMTP id d3so6632298ljl.1 for ; Fri, 18 Nov 2022 04:32:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rasmusvillemoes.dk; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8HEJJXAKUVernzz9Wo79oEymNliom5Q3VVumNx+M1W8=; b=ZHAsgUaIWQPKb7iP/4IhX7MSK56qD1Nu3eXRxrAMUGG2t6iZTKCtKcePZEEZ74Ix9P cj8eDHhW7tDMWCJozEgA2J9epPPJ/7RZ+6edwoM0qIWSXQkvMSaQrMTIrNM9pvrBlArr 2H+Sns5tB+WlXbcHzNE9V5XCKY1D4BeOUREWs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8HEJJXAKUVernzz9Wo79oEymNliom5Q3VVumNx+M1W8=; b=7mXNJdXhNUr55BRPE77pXZcZhHMGzCB5gce1AGGzpfcBHO7Z8WGfM0VwYMlJx8dCK7 lRYbdwo/rlp/hLvjO/PfTX5dDn30FWhHE9rLzVSussYX7uliz5yZc72GGelgmgsgxFgU tYq3OsEZJ9fzpm7xQX6pPTBaOw/z/O4/USIV+FQNMEnpbEDTl8VD65xCpcd9oSGPgKFX NOcFEx4M6At7QcqOD9Q1TQfjpyo2/UZItbsfB/wCoy9Wq8T+q5P1MgoslAZGXs89jIpo 094F9WpsUwYd4pjtZygtkBcfXTwrMCr25M0fiJGYcbvT4jaqss+sEy4ocRoj0To7nZfz 9hLw== X-Gm-Message-State: ANoB5pn413OBfGtxZWBPvEt8eduPTqFL+2dxC3FY6TPHrP92vOROhHxG D9egfTvwSsxremRN32NFCXqu09kspY6ElSW5 X-Received: by 2002:a05:651c:12c1:b0:277:2fd5:482 with SMTP id 1-20020a05651c12c100b002772fd50482mr2619130lje.194.1668774758200; Fri, 18 Nov 2022 04:32:38 -0800 (PST) Received: from prevas-ravi.prevas.se ([81.216.59.226]) by smtp.gmail.com with ESMTPSA id u3-20020a05651220c300b00496d3e6b131sm639484lfr.234.2022.11.18.04.32.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Nov 2022 04:32:37 -0800 (PST) From: Rasmus Villemoes To: Cosmin Tanislav , Lars-Peter Clausen , Michael Hennerich , Jonathan Cameron Cc: Rasmus Villemoes , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] iio: addac: ad74413r: fix integer promotion bug in ad74413_get_input_current_offset() Date: Fri, 18 Nov 2022 13:32:08 +0100 Message-Id: <20221118123209.1658420-1-linux@rasmusvillemoes.dk> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The constant AD74413R_ADC_RESULT_MAX is defined via GENMASK, so its type is "unsigned long". Hence in the expression voltage_offset * AD74413R_ADC_RESULT_MAX, voltage_offset is first promoted to unsigned long, and since it may be negative, that results in a garbage value. For example, when range is AD74413R_ADC_RANGE_5V_BI_DIR, voltage_offset is -2500 and voltage_range is 5000, so the RHS of this assignment is, depending on sizeof(long), either 826225UL or 3689348814709142UL, which after truncation to int then results in either 826225 or 1972216214 being the output from in_currentX_offset. Casting to int avoids that promotion and results in the correct -32767 output. Signed-off-by: Rasmus Villemoes --- drivers/iio/addac/ad74413r.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iio/addac/ad74413r.c b/drivers/iio/addac/ad74413r.c index 899bcd83f40b..e0e130ba9d3e 100644 --- a/drivers/iio/addac/ad74413r.c +++ b/drivers/iio/addac/ad74413r.c @@ -691,7 +691,7 @@ static int ad74413_get_input_current_offset(struct ad74413r_state *st, if (ret) return ret; - *val = voltage_offset * AD74413R_ADC_RESULT_MAX / voltage_range; + *val = voltage_offset * (int)AD74413R_ADC_RESULT_MAX / voltage_range; return IIO_VAL_INT; } -- 2.37.2