From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753301AbdAZW60 (ORCPT ); Thu, 26 Jan 2017 17:58:26 -0500 Received: from mail-oi0-f66.google.com ([209.85.218.66]:34653 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753188AbdAZW6X (ORCPT ); Thu, 26 Jan 2017 17:58:23 -0500 Subject: Re: ibmvtpm byteswapping inconsistency To: Jason Gunthorpe , Michal Such??nek , Nayna Jain , honclo@linux.vnet.ibm.com References: <20170126212248.3f3e9103@kitsune.suse.cz> <20170126220536.GB31937@obsidianresearch.com> Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Peter Huewe , Marcel Selhorst , Jarkko Sakkinen , tpmdd-devel@lists.sourceforge.net, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org From: Ashley Lai Message-ID: <024dadba-a75c-ab59-9d12-a9bea81f9bda@gmail.com> Date: Thu, 26 Jan 2017 16:58:15 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20170126220536.GB31937@obsidianresearch.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding Vicky from IBM. On 01/26/2017 04:05 PM, Jason Gunthorpe wrote: > On Thu, Jan 26, 2017 at 09:22:48PM +0100, Michal Such??nek wrote: > >> This is repeated a few times in the driver so I added memset to quiet >> gcc and make behavior deterministic in case the unused fields get some >> meaning in the future. > Yep, reserved certainly needs to be zeroed.. Can you send a patch? > memset is overkill... > >> However, in tpm_ibmvtpm_send the structure is initialized as >> >> struct ibmvtpm_crq crq; >> __be64 *word = (__be64 *)&crq; >> ... >> crq.valid = (u8)IBMVTPM_VALID_CMD; >> crq.msg = (u8)VTPM_TPM_COMMAND; >> crq.len = cpu_to_be16(count); >> crq.data = cpu_to_be32(ibmvtpm->rtce_dma_handle); >> >> and submitted with >> >> rc = ibmvtpm_send_crq(ibmvtpm->vdev, be64_to_cpu(word[0]), >> be64_to_cpu(word[1])); >> meaning it is swapped twice. > No idea, Nayna may know. > > My guess is that '__be64 *word' should be 'u64 *word'... > > Jason