From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752111AbdHGVLl (ORCPT ); Mon, 7 Aug 2017 17:11:41 -0400 Received: from mail-he1eur01on0102.outbound.protection.outlook.com ([104.47.0.102]:13680 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751826AbdHGVLg (ORCPT ); Mon, 7 Aug 2017 17:11:36 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=stephend@adiengineering.com; From: Stephen Douthit To: seth.heasley@intel.com, nhorman@tuxdriver.com Cc: wsa@the-dreams.de, danp@adiengineering.com, stephend@adiengineering.com, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] i2c: ismt: Don't duplicate the receive length for block reads Date: Mon, 7 Aug 2017 17:10:59 -0400 Message-Id: <1502140260-13789-2-git-send-email-stephend@adiengineering.com> X-Mailer: git-send-email 2.7.5 In-Reply-To: <1502140260-13789-1-git-send-email-stephend@adiengineering.com> References: <1502140260-13789-1-git-send-email-stephend@adiengineering.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [96.82.2.57] X-ClientProxiedBy: DM5PR06CA0048.namprd06.prod.outlook.com (2603:10b6:3:5d::34) To VI1PR04MB1360.eurprd04.prod.outlook.com (2a01:111:e400:5348::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48440d83-6d97-4b34-f38d-08d4ddd8e097 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:VI1PR04MB1360; X-Microsoft-Exchange-Diagnostics: 1;VI1PR04MB1360;3:9yTjxVbN3ARhs8VIzP1OVDXBgltu0pLfX/upQFWwOD9kx2yqtyen4Gz9Sc9zmgEtr6G003kIFl08iaQ48G3QH/NeEYoYPgUvh/4LM40Bn8Bt5H9JN3Gb7Ex6QijeORCJcSrSI+hmxJ+BkYfMJZEq0sa7UcrLdnOI7i4qSilP9AeCiXpKAZWQXIiZKQBYRd+94vB/IM0MQxBTIqSSEHuvzwhfVHOaKZVJvhKIfIwoFXRzAJ5/pFJikO3TNP6Pb+Sb;25:d+wavcGgh+Bwbv5Z7uFKrKomTqAWC0+PBWOapkV0brRTkFxkQmPFj5zaBBPC5vjnaaOasV5nb7k8jPUERurclyuAqP+toFEFkvHMBx+/HTTZ9quimWMvRf/Jrd60oHvfVTkBqKti10DRHzFCByzImD1XB/BkJmMcqiIv98KVjEEcqfdZ3MzDC8XZuc6O1/oq8W/EZW1aIG0JF6L/JJayPiQ+9WTcMdvbfJVnU5C9koPeNPcW1oKS9ky80qpTjESRBGennwI54MtD1Ov+uF+/pp1tYF+uSkBu306oMV7I760P2+8dFBzWOtGEfEH1jBF99L2X1wVW+Z8/1nChWn3gnw==;31:PY3VhlGSc6TAl+SP6K7xW3Pk+WbkrK2TNkqHTGYDdeAMq63KGqSdYm98TB1iQFxCOuFvrU+hdG/pJh4i0ItMeJlriI9jPoHPEV779RaqTFHXoQQpCbpsDr8vVYNG7eZ6Lv4zvmBQPyOVM6hBQk4GkvfhE1a9TFe7em85U0nc2p8h0qS+LJEKqkahB+cZcDmexG9yBGFY1pKtq8Ft+EF2z9/bd3l98fvaGiYarm7MDB8= X-MS-TrafficTypeDiagnostic: VI1PR04MB1360: X-Microsoft-Exchange-Diagnostics: 1;VI1PR04MB1360;20:+P3H4g3MaN4Nb9cHw4kZx3BAe4JaVysc2sPSoAxPVw5csx85H0ohTQyEqBY3sXjNh7yCGSko215wDRZTKJWporbGGBOPhNFovKqrBaLXfRyVGHV5Ih14I5G1ppMp0H6twxNKYjiwOC79e9Pb4KUkg2P53DzknisRCiETV0TPtJHJr+/e3ez72pEHhLcedcT2VziQnEGv0BjDjT8GIo9EaLl61bt8ZTlnraJaR4FcpFRghvlBJfIemjoEQ0edhEgJFgzNCPRU0F6egImhL0UNYkhs128/HleOd0gjmK6QsUt+784pAyUQaDF/ecDSmF1EazYDi3L5Mr4PrueA3ehMhkUwyWcpIcx0hGHtqjiH0AzSdiY3JBARsBuwH6fssP+cZOtkpB1pjLcYhMw+NNbnZ6E4Hr5JN5Iz3rqu1XKCAqE=;4:1EwhcQIGstM5Sl+r/r2jMbwCBOHohxxelrhXHujZ2HF+wXMl/0TL1BrxJVBt5tz5UaXp0w0QNAdffkiwbb3gHt331v0MeeC70P+kGC7PHCb8fTlqc7dnjTqoNngoEqp6d+iSXD8ZiTU6gDXehdlWhCB57cNHJ6DrKi2/aPvsZhAmTNmU0KZtPNdQQrvfaNXcPbBLWYYu5hzofJoWBaSrdOdKYD0kUGp4DmTuMxptMaiXzX36k7QrCtmdcuknwAH+Hu6DHkfQWl5ppWDJBItcKCd0qBJczlpS0r0R24stHCA= X-Exchange-Antispam-Report-Test: UriScan:(20558992708506); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR04MB1360;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR04MB1360; X-Forefront-PRVS: 0392679D18 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(7370300001)(4630300001)(6069001)(6009001)(39400400002)(39410400002)(39450400003)(39830400002)(199003)(189002)(6116002)(25786009)(6512007)(53936002)(68736007)(110136004)(38730400002)(478600001)(4326008)(305945005)(5660300001)(6506006)(6486002)(7736002)(50226002)(48376002)(8676002)(2950100002)(81166006)(5003940100001)(81156014)(50466002)(7350300001)(86362001)(189998001)(105586002)(2906002)(106356001)(66066001)(76176999)(6666003)(50986999)(47776003)(97736004)(3846002)(101416001)(42186005)(33646002)(36756003);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR04MB1360;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR04MB1360;23:ufo0b70E7FKm2AoJ9SnPX4xl1RGrhMXmLErrhxaba?= =?us-ascii?Q?J19vPPc9GxlcmHLAXfgnXBo9+YmbK6c73uZnEfE2ZJk51d7UDVyOIzURPeI4?= =?us-ascii?Q?jCwASvIOfnfxKksYHSK5216BTheyfDv09EdAQY56kCHkso5NaXuQgGBFbFN9?= =?us-ascii?Q?zr61HHIcNIsfpgrPiTJjM0KLZxZQjjpsPmvB6OTfIUgvEklILvmzy7FNIGo0?= =?us-ascii?Q?8Ynkq9NsFaFeV6mbsc10wW53ILp2tZUiJ9r1paGQ0BrCnWtFF7gyBg1DZa8h?= =?us-ascii?Q?GNCECo57kUoId+QLcq62JESiiszRAfMyi1Tt38EKP7yYfOhs1ev3K6jSPkqd?= =?us-ascii?Q?tSkirfasD9y5QQszTNOZcA/p8V3MJMXh9KoxPeyo5tGz0NUuWL8KTuWD9Yco?= =?us-ascii?Q?kEiGW6mlRlobQmeYEkdko7E1w3aZ/vCQRkQ43pnQe1Qb/0e4zYPmVQRTq96V?= =?us-ascii?Q?cbfEM+n7+E9unImVvIx3HzuYdl66/4vOAYVvWpvn+lQkL6JfDFGrRqr5Tlhd?= =?us-ascii?Q?lRfkqY7letGVh95IzbaqGCS1AF/myi50zxOv/ajaElQDJ1kuJRHEW2p4k8sP?= =?us-ascii?Q?weJklJ+4tn6RJVmxjGs85qB3WRxbOKTfXhNBUmE/bACEYoCFn8cCdjEn2nvF?= =?us-ascii?Q?3k0+mBBTFaQok7KMIK1eFNmk0h6RZGrhIkt/IahNn+agfPKggQ0ufwTpRq2r?= =?us-ascii?Q?k6bSGkVvgiIJz6Aah+9RVz30kWuN8gOaj+/z3DE6sw/HLEby6Qbx7LKZrk9e?= =?us-ascii?Q?2xaz0v8XbnjgZzEX1oeKBZMG0SAFpLSPVsnxwN7L6X8S0ECIau5YiVeGB4v5?= =?us-ascii?Q?a0TjKn8CdCTZGF6Ao6fIH9FDhSwPKBH14uIbHiUoxC1O3H+jTsIblyOYYC/z?= =?us-ascii?Q?ERgE20rpZN7QIQL+jLCuvjJCTy4nURP699GU022w02z+UI+Fsq8Gba+yc+cK?= =?us-ascii?Q?2eYjBPHu7DZCxUUz32umD1EUZIXCCY9neCtlBp/dM0RGrLIp9QRlLiRaLS7/?= =?us-ascii?Q?aVFItqtYw48G/fADdOWEQYIcrzm1MbKcQlGha05Sp6+FlT1gchu6F0jH6fNk?= =?us-ascii?Q?Ss5W3ZIIiys4dt0qdEtTO226LXEvR9h6zfUxl0kKAR/U05c/JobgpILvBCrR?= =?us-ascii?Q?CFVereCBOQN8Y4BOahgFP50hcNTBpV+WJ5q0b4ByePBDg8CwS91oWGEHm3VK?= =?us-ascii?Q?9JWQM/zZ3O1vMOABYaKEouKvZTwOwoPF1AI?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR04MB1360;6:plgHLKNherk6avaCPw7crjzj4DIni83OiqBjclPXAg4AhgFIJfLOccvtfaZIIs1t0zlzm2j9GGHcLjKvSrY5IY/5BYgj3ERplJCzB4YdVfCyGWuruNjL1lntgQ6DId02bWKqNLVI6Kyxu2yK4oE01wlNETr1NSzZgC4Wn5h/JBbiyJrjKwAWq3QHM3GxWqZBPjqZRyfmyUnoB+FzmjC2bv4EuDrFe9UcRzk2DUjZD9Yuk63qwh4r5fly/jRAzOa83UemTSyJnLocxetZl1jDYs8IA2xe+bzx/+ZPMzExcbG8rXWsL/376fIfKIjWdZ6/7GdYig39A61IbL6DVxh8rQ==;5:6xhohf8ps2EyXn7SMjpgl2cc6083xgvwj1v2qx2smBdRS4d4AszbHzmbBq1U6wa//q0AaJHA3TZ2hfLQXNrKwJnZ70weVthnc75bFPZ8X9eWZv3C60wvQ8hAzresEj6dWWqLumfFVe14l92ZO90B/w==;24:UxrIpMnuY+R/kkrsVCLJLwspBQQqipLAF/BA4k9Gccnv84eIg6TrvyGwzapsCeu6avL0/ANyiLuA0SnSzEuOVtdkzyH8Qgo8vWK0dj7/5So=;7:83u3LunYWlieuRY/9yycostRZObJz66CaqMZuJ2N7RVPFwuuvuwL9Cb9FAJHipca191tXU0UstyApt8YWngt7hsk6KYWafKWWoBZQv8gsPXjAZRZc27+vYjL9dpXkQOMfDoTzQlFwiUkLIy+17dcj5MC+9vmfqEcMJVILs2/7nvnXrSeto6GXe1tAAuAL3gx7L58kKJ/Ch6f9beQYavIOkEERUGOkgHidQQQYQY+WeI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: adiengineering.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 21:11:29.8529 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB1360 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org According to Table 15-14 of the C2000 EDS (Intel doc #510524) the rx data pointed to by the descriptor dptr contains the byte count. desc->rxbytes reports all bytes read on the wire, including the "byte count" byte. So if a device sends 4 bytes in response to a block read, on the wire and in the DMA buffer we see: count data1 data2 data3 data4 0x04 0xde 0xad 0xbe 0xef That's what we want to return in data->block to the next level. Instead we were actually prefixing that with desc->rxbytes: bad count count data1 data2 data3 data4 0x05 0x04 0xde 0xad 0xbe 0xef This was discovered while developing a BMC solution relying on the ipmi_ssif.c driver which was trying to interpret the bogus length field as part of the IPMI response. Signed-off-by: Stephen Douthit Tested-by: Dan Priamo --- drivers/i2c/busses/i2c-ismt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/busses/i2c-ismt.c b/drivers/i2c/busses/i2c-ismt.c index e98e44e..9af2337 100644 --- a/drivers/i2c/busses/i2c-ismt.c +++ b/drivers/i2c/busses/i2c-ismt.c @@ -341,8 +341,8 @@ static int ismt_process_desc(const struct ismt_desc *desc, break; case I2C_SMBUS_BLOCK_DATA: case I2C_SMBUS_I2C_BLOCK_DATA: - memcpy(&data->block[1], dma_buffer, desc->rxbytes); - data->block[0] = desc->rxbytes; + memcpy(data->block, dma_buffer, desc->rxbytes); + data->block[0] = desc->rxbytes - 1; break; } return 0; -- 2.7.5