From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752379AbdECXlC (ORCPT ); Wed, 3 May 2017 19:41:02 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:54993 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751233AbdECXkx (ORCPT ); Wed, 3 May 2017 19:40:53 -0400 Subject: Re: [PATCH v2 3/3] tpm: vtpm_proxy: Add ioctl to request locality prepended to command To: Jarkko Sakkinen References: <1493384538-27883-1-git-send-email-stefanb@linux.vnet.ibm.com> <1493384538-27883-4-git-send-email-stefanb@linux.vnet.ibm.com> <20170503223747.zefh76m4youqlgje@intel.com> Cc: tpmdd-devel@lists.sourceforge.net, linux-security-module@vger.kernel.org, jgunthorpe@obsidianresearch.com, linux-kernel@vger.kernel.org From: Stefan Berger Date: Wed, 3 May 2017 19:40:48 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20170503223747.zefh76m4youqlgje@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 17050323-0008-0000-0000-0000020FD5A6 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00007019; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000208; SDB=6.00855875; UDB=6.00423630; IPR=6.00635038; BA=6.00005323; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00015289; XFM=3.00000014; UTC=2017-05-03 23:40:51 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17050323-0009-0000-0000-0000351DE95E Message-Id: <40cd7d48-f6d1-39f4-99a3-916c7cdbb636@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-05-03_17:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1705030406 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/03/2017 06:37 PM, Jarkko Sakkinen wrote: > On Fri, Apr 28, 2017 at 09:02:18AM -0400, Stefan Berger wrote: >> Add an ioctl to request that the locality be prepended to every TPM >> command. > Don't really understand this change. Why locality is prenpended? Commands can be executed under locality 0-3 and for some commands it is important to know which locality a user may have chosen. How else should we convey that locality to the TPM emulator ? > Where is the ioctl declaration in this commit? My bad, it's a flag that's being added here. > >> Signed-off-by: Stefan Berger >> --- >> drivers/char/tpm/tpm_vtpm_proxy.c | 18 +++++++++++++----- >> include/uapi/linux/vtpm_proxy.h | 4 +++- >> 2 files changed, 16 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/char/tpm/tpm_vtpm_proxy.c b/drivers/char/tpm/tpm_vtpm_proxy.c >> index 48b9818..6c90e02 100644 >> --- a/drivers/char/tpm/tpm_vtpm_proxy.c >> +++ b/drivers/char/tpm/tpm_vtpm_proxy.c >> @@ -52,7 +52,8 @@ struct proxy_dev { >> }; >> >> /* all supported flags */ >> -#define VTPM_PROXY_FLAGS_ALL (VTPM_PROXY_FLAG_TPM2) >> +#define VTPM_PROXY_FLAGS_ALL (VTPM_PROXY_FLAG_TPM2 | \ >> + VTPM_PROXY_FLAG_PREPEND_LOCALITY) >> >> static struct workqueue_struct *workqueue; >> >> @@ -77,8 +78,9 @@ static ssize_t vtpm_proxy_fops_read(struct file *filp, char __user *buf, >> size_t count, loff_t *off) >> { >> struct proxy_dev *proxy_dev = filp->private_data; >> - size_t len; >> - int sig, rc; >> + size_t len, offset = 0; >> + int sig, rc = 0; > One line per declaration: > > size_t len; > size_t offset = 0; > int sig; > int rc = 0; > >> + uint8_t locality; >> >> sig = wait_event_interruptible(proxy_dev->wq, >> proxy_dev->req_len != 0 || >> @@ -102,7 +104,13 @@ static ssize_t vtpm_proxy_fops_read(struct file *filp, char __user *buf, >> return -EIO; >> } >> >> - rc = copy_to_user(buf, proxy_dev->buffer, len); >> + if (proxy_dev->flags & VTPM_PROXY_FLAG_PREPEND_LOCALITY) { >> + locality = proxy_dev->chip->locality; >> + offset = sizeof(locality); >> + rc = copy_to_user(buf, &locality, offset); >> + } >> + if (!rc) >> + rc = copy_to_user(&buf[offset], proxy_dev->buffer, len); >> memset(proxy_dev->buffer, 0, len); >> proxy_dev->req_len = 0; >> >> @@ -114,7 +122,7 @@ static ssize_t vtpm_proxy_fops_read(struct file *filp, char __user *buf, >> if (rc) >> return -EFAULT; >> >> - return len; >> + return offset + len; >> } >> >> /** >> diff --git a/include/uapi/linux/vtpm_proxy.h b/include/uapi/linux/vtpm_proxy.h >> index 83e64e7..512a29e 100644 >> --- a/include/uapi/linux/vtpm_proxy.h >> +++ b/include/uapi/linux/vtpm_proxy.h >> @@ -22,9 +22,11 @@ >> /** >> * enum vtpm_proxy_flags - flags for the proxy TPM >> * @VTPM_PROXY_FLAG_TPM2: the proxy TPM uses TPM 2.0 protocol >> + * @VTPM_PROXY_PREPEND_LOCALITY:locality byte prepended on each command >> */ >> enum vtpm_proxy_flags { >> - VTPM_PROXY_FLAG_TPM2 = 1, >> + VTPM_PROXY_FLAG_TPM2 = 1, >> + VTPM_PROXY_FLAG_PREPEND_LOCALITY = 2, >> }; >> >> /** >> -- >> 2.4.3 >> > /Jarkko >