Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp3652135ybf; Tue, 3 Mar 2020 09:49:51 -0800 (PST) X-Google-Smtp-Source: ADFU+vuqtVj8hxhu3/ydjA8ofEJLPsCvq0nf5CpaCLLusxiJ7zNhihqZCO91AQVNn8UeCTHdOMRZ X-Received: by 2002:aca:4cd0:: with SMTP id z199mr3064461oia.123.1583257791142; Tue, 03 Mar 2020 09:49:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583257791; cv=none; d=google.com; s=arc-20160816; b=JBX6ZqFaMkcF9PWKg8zy/imd2Hsd21ZG/U0C7kYMIOdzyNlIKSD7diKK/XPz0qGMNq zwGbj/vsem4thgbfkADcOj7cp/MXFFm6ldeNA9mrME4xMe9IQz1UlaIzSMSXZvfumdiu bGMBAISErFH9SKBHDM9HEBdsRtSM1D5tCsOCnw24I17pxEanE2jhFATXNyx8cAgMosMT TjZpuS9ujZFlE+E0VjN1VjBh67h/J3Fe+mzlpI2NyBnGgMTlBp8g0SLOHkdE0iiMUjSW 3XTdDVKWmJ1Ve1V+dCevWvUDkS7TGfMbetzpsb+3pEtKJ/ZagKLjQAUn5kk/NDs/p3OZ CxlA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=uLfThaCTN0ct8EUucSc0iDUMvs+yDkVX7EHnimwJ6zw=; b=l8fS33Nu2cMX49dny2WEBTQSf7KDrJEi1/kqh3YAYIFh6Q+fBONlT5kLVr4ZoXUq0r XgnIXc5HW6/AWhtls/TslquGKg5QK4PKC0tPhfMnYQWhzY3u5FxO2Xz4KgKWpSgLXqe1 xqgdQn7+QUI73ckIuibveoKrrsLp6gzk1EexMjkCblbQNfyPMGznt+BAbAs+o/hdUHZ/ 6tW+GdBKFevDYp3Bmc4xL9FV50LtNSopWo/r+Uov3lWH4upA2wHYZlVcujBK6Eyrp+uL maiHbXtJ8UtrF92UuBn6c9Lo0ylT/hs5U0BEQJ/JKNTYuj1pupZHAxHmG8VDlekqkx2Y 9rcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SqHlIjlQ; 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 o1si8483049otk.154.2020.03.03.09.49.39; Tue, 03 Mar 2020 09:49:51 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=SqHlIjlQ; 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 S1731428AbgCCRrs (ORCPT + 99 others); Tue, 3 Mar 2020 12:47:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:54702 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731418AbgCCRro (ORCPT ); Tue, 3 Mar 2020 12:47:44 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D43CD208C3; Tue, 3 Mar 2020 17:47:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583257664; bh=RHF07HH/10+qbB+CsSVVFZKfwr43HSrnCB+OSo7B0FI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SqHlIjlQhTyq0Fd+Nxyqi7k7rx8DvAzcWlBS6TFEvaI3HXGGzzaRGgbpot4Kn6hW6 k8m8qne9RF5wo8rNhFiH6ailIl5Daj5tEzx3YdH1BcuH8KnhzTPsrkP+QvH3tpbxwT ook123pWKbqD0UPC26YJc7R/FUtWChMAMyJpXmco= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jens Remus , Fedor Loshakov , Steffen Maier , Benjamin Block , "Martin K. Petersen" Subject: [PATCH 5.5 082/176] scsi: zfcp: fix wrong data and display format of SFP+ temperature Date: Tue, 3 Mar 2020 18:42:26 +0100 Message-Id: <20200303174314.133709004@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200303174304.593872177@linuxfoundation.org> References: <20200303174304.593872177@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Benjamin Block commit a3fd4bfe85fbb67cf4ec1232d0af625ece3c508b upstream. When implementing support for retrieval of local diagnostic data from the FCP channel, the wrong data format was assumed for the temperature of the local SFP+ connector. The Fibre Channel Link Services (FC-LS-3) specification is not clear on the format of the stored integer, and only after consulting the SNIA specification SFF-8472 did we realize it is stored as two's complement. Thus, the used data and display format is wrong, and highly misleading for users when the temperature should drop below 0°C (however unlikely that may be). To fix this, change the data format in `struct fsf_qtcb_bottom_port` from unsigned to signed, and change the printf format string used to generate `zfcp_sysfs_adapter_diag_sfp_temperature_show()` from `%hu` to `%hd`. Link: https://lore.kernel.org/r/d6e3be5428da5c9490cfff4df7cae868bc9f1a7e.1582039501.git.bblock@linux.ibm.com Fixes: a10a61e807b0 ("scsi: zfcp: support retrieval of SFP Data via Exchange Port Data") Fixes: 6028f7c4cd87 ("scsi: zfcp: introduce sysfs interface for diagnostics of local SFP transceiver") Cc: # 5.5+ Reviewed-by: Jens Remus Reviewed-by: Fedor Loshakov Reviewed-by: Steffen Maier Signed-off-by: Benjamin Block Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- drivers/s390/scsi/zfcp_fsf.h | 2 +- drivers/s390/scsi/zfcp_sysfs.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) --- a/drivers/s390/scsi/zfcp_fsf.h +++ b/drivers/s390/scsi/zfcp_fsf.h @@ -410,7 +410,7 @@ struct fsf_qtcb_bottom_port { u8 cb_util; u8 a_util; u8 res2; - u16 temperature; + s16 temperature; u16 vcc; u16 tx_bias; u16 tx_power; --- a/drivers/s390/scsi/zfcp_sysfs.c +++ b/drivers/s390/scsi/zfcp_sysfs.c @@ -800,7 +800,7 @@ static ZFCP_DEV_ATTR(adapter_diag, b2b_c static ZFCP_DEV_ATTR(adapter_diag_sfp, _name, 0400, \ zfcp_sysfs_adapter_diag_sfp_##_name##_show, NULL) -ZFCP_DEFINE_DIAG_SFP_ATTR(temperature, temperature, 5, "%hu"); +ZFCP_DEFINE_DIAG_SFP_ATTR(temperature, temperature, 6, "%hd"); ZFCP_DEFINE_DIAG_SFP_ATTR(vcc, vcc, 5, "%hu"); ZFCP_DEFINE_DIAG_SFP_ATTR(tx_bias, tx_bias, 5, "%hu"); ZFCP_DEFINE_DIAG_SFP_ATTR(tx_power, tx_power, 5, "%hu");