Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1635813 > unrolled thread
| Started by | Stefan Berger <stefanb@linux.vnet.ibm.com> |
|---|---|
| First post | 2017-05-04 17:00 +0200 |
| Last post | 2017-05-04 19:30 +0200 |
| Articles | 7 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Stefan Berger <stefanb@linux.vnet.ibm.com> - 2017-05-04 17:00 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Jason Gunthorpe <jgunthorpe@obsidianresearch.com> - 2017-05-04 17:40 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Stefan Berger <stefanb@linux.vnet.ibm.com> - 2017-05-04 19:20 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Stefan Berger <stefanb@linux.vnet.ibm.com> - 2017-05-04 19:30 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Stefan Berger <stefanb@linux.vnet.ibm.com> - 2017-05-04 19:40 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Jason Gunthorpe <jgunthorpe@obsidianresearch.com> - 2017-05-04 19:40 +0200
Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags Jason Gunthorpe <jgunthorpe@obsidianresearch.com> - 2017-05-04 19:30 +0200
| From | Stefan Berger <stefanb@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-05-04 17:00 +0200 |
| Subject | [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDqoy-4PF-5@gated-at.bofh.it> |
Implement VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl to get the bitmask
of flags that the vtpm_proxy driver supports in the
VTPM_PROXY_IOC_NEW_DEV ioctl. This helps user space in deciding
which flags to set in that ioctl.
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
---
drivers/char/tpm/tpm_vtpm_proxy.c | 29 +++++++++++++++++++++++++++++
include/uapi/linux/vtpm_proxy.h | 11 +++++++++++
2 files changed, 40 insertions(+)
diff --git a/drivers/char/tpm/tpm_vtpm_proxy.c b/drivers/char/tpm/tpm_vtpm_proxy.c
index 751059d..fb4d207 100644
--- a/drivers/char/tpm/tpm_vtpm_proxy.c
+++ b/drivers/char/tpm/tpm_vtpm_proxy.c
@@ -592,6 +592,33 @@ static long vtpmx_ioc_new_dev(struct file *file, unsigned int ioctl,
return 0;
}
+/**
+ * vtpmx_ioc_get_supt_flags - handler for the %VTPM_PROXY_IOC_GET_SUPT_FLAGS
+ * ioctl
+ * @file: /dev/vtpmx
+ * @ioctl: the ioctl number
+ * @arg: pointer to the struct vtpmx_proxy_get_supt_flags
+ *
+ * Return the bitfield of supported flags
+ */
+static long vtpmx_ioc_get_supt_flags(struct file *file, unsigned int ioctl,
+ unsigned long arg)
+{
+ void __user *argp = (void __user *)arg;
+ struct vtpm_proxy_supt_flags __user *vtpm_supt_flags_p = argp;
+ struct vtpm_proxy_supt_flags flags = {
+ .flags = VTPM_PROXY_FLAGS_ALL,
+ };
+
+ if (!capable(CAP_SYS_ADMIN))
+ return -EPERM;
+
+ if (copy_to_user(vtpm_supt_flags_p, &flags, sizeof(flags)))
+ return -EFAULT;
+
+ return 0;
+}
+
/*
* vtpmx_fops_ioctl: ioctl on /dev/vtpmx
*
@@ -604,6 +631,8 @@ static long vtpmx_fops_ioctl(struct file *f, unsigned int ioctl,
switch (ioctl) {
case VTPM_PROXY_IOC_NEW_DEV:
return vtpmx_ioc_new_dev(f, ioctl, arg);
+ case VTPM_PROXY_IOC_GET_SUPT_FLAGS:
+ return vtpmx_ioc_get_supt_flags(f, ioctl, arg);
default:
return -ENOIOCTLCMD;
}
diff --git a/include/uapi/linux/vtpm_proxy.h b/include/uapi/linux/vtpm_proxy.h
index a69e991..83e64e7 100644
--- a/include/uapi/linux/vtpm_proxy.h
+++ b/include/uapi/linux/vtpm_proxy.h
@@ -44,6 +44,17 @@ struct vtpm_proxy_new_dev {
__u32 minor; /* output */
};
+/**
+ * struct vtpm_proxy_supt_flags - parameter structure for the
+ * %VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl
+ * @flags: flags supported by the vtpm proxy driver
+ */
+struct vtpm_proxy_supt_flags {
+ __u32 flags; /* output */
+};
+
#define VTPM_PROXY_IOC_NEW_DEV _IOWR(0xa1, 0x00, struct vtpm_proxy_new_dev)
+#define VTPM_PROXY_IOC_GET_SUPT_FLAGS \
+ _IOR(0xa1, 0x01, struct vtpm_proxy_supt_flags)
#endif /* _UAPI_LINUX_VTPM_PROXY_H */
--
2.4.3
[toc] | [next] | [standalone]
| From | Jason Gunthorpe <jgunthorpe@obsidianresearch.com> |
|---|---|
| Date | 2017-05-04 17:40 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDr1f-5lB-11@gated-at.bofh.it> |
| In reply to | #1635813 |
On Thu, May 04, 2017 at 10:56:25AM -0400, Stefan Berger wrote: > Implement VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl to get the bitmask > of flags that the vtpm_proxy driver supports in the > VTPM_PROXY_IOC_NEW_DEV ioctl. This helps user space in deciding > which flags to set in that ioctl. you might be better off just having a VTPM_PROXY_IO_ENABLE_FEATURE .feature = LOCALITY If that fails then the feature is not supported, no real need for the query in that case. Not sure about Jarkko's point on request/release locality.. Is there a scenario where the emulator should fail the request locality? Jason
[toc] | [prev] | [next] | [standalone]
| From | Stefan Berger <stefanb@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-05-04 19:20 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDsA2-6wT-9@gated-at.bofh.it> |
| In reply to | #1635850 |
On 05/04/2017 11:34 AM, Jason Gunthorpe wrote: > On Thu, May 04, 2017 at 10:56:25AM -0400, Stefan Berger wrote: >> Implement VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl to get the bitmask >> of flags that the vtpm_proxy driver supports in the >> VTPM_PROXY_IOC_NEW_DEV ioctl. This helps user space in deciding >> which flags to set in that ioctl. > you might be better off just having a VTPM_PROXY_IO_ENABLE_FEATURE > .feature = LOCALITY Do you have an example driver that shows how to do this ? Can user space query that feature? > > If that fails then the feature is not supported, no real need for the > query in that case. > > Not sure about Jarkko's point on request/release locality.. Is there a > scenario where the emulator should fail the request locality? We could filter localities 5 and higher on the level of the driver (patch 2/3) since basically there are only 5 localities (0-4) in any TPM interface today. The typical hardware locality 4 would be filtered by the emulator per policy passed via command line, but I would allow it on the level of this driver. An error message would be returned for any command executed in that locality, unless the 'policy' allows it. Localities 0-3 should just be selectable. The TPM TIS (in the hardware) implements some complicated scheme when it comes to allowing the selection of a locality and I would say we need none of that but just tell the vTPM proxy driver the locality (patch 2/3) in which the next command will be executed. > > Jason >
[toc] | [prev] | [next] | [standalone]
| From | Stefan Berger <stefanb@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-05-04 19:30 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDsJI-6Ay-7@gated-at.bofh.it> |
| In reply to | #1635908 |
On 05/04/2017 01:20 PM, Jason Gunthorpe wrote: > On Thu, May 04, 2017 at 01:13:18PM -0400, Stefan Berger wrote: >> On 05/04/2017 11:34 AM, Jason Gunthorpe wrote: >>> On Thu, May 04, 2017 at 10:56:25AM -0400, Stefan Berger wrote: >>>> Implement VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl to get the bitmask >>>> of flags that the vtpm_proxy driver supports in the >>>> VTPM_PROXY_IOC_NEW_DEV ioctl. This helps user space in deciding >>>> which flags to set in that ioctl. >>> you might be better off just having a VTPM_PROXY_IO_ENABLE_FEATURE >>> .feature = LOCALITY >> Do you have an example driver that shows how to do this ? Can user space >> query that feature? > Try and enable the feature, if it fails then there is no feature in > the kernel. > > This is the usual way to add new syscalls.. > >>> If that fails then the feature is not supported, no real need for the >>> query in that case. >>> >>> Not sure about Jarkko's point on request/release locality.. Is there a >>> scenario where the emulator should fail the request locality? >> We could filter localities 5 and higher on the level of the driver (patch >> 2/3) since basically there are only 5 localities (0-4) in any TPM interface >> today. The typical hardware locality 4 would be filtered by the emulator per >> policy passed via command line, but I would allow it on the level of this >> driver. An error message would be returned for any command executed in that >> locality, unless the 'policy' allows it. Localities 0-3 should just be >> selectable. The TPM TIS (in the hardware) implements some complicated scheme >> when it comes to allowing the selection of a locality and I would say we >> need none of that but just tell the vTPM proxy driver the locality (patch >> 2/3) in which the next command will be executed. > Well, if TIS hardware has some scheme I feel like the emulator uAPI should > have enough fidelity to ecompass existing hardware, even if your > current emulator does not need it. > > So allowing request_locality to fail from userspace seems reasonable. What's the best interface to use for this ?
[toc] | [prev] | [next] | [standalone]
| From | Stefan Berger <stefanb@linux.vnet.ibm.com> |
|---|---|
| Date | 2017-05-04 19:40 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDsTn-6G6-3@gated-at.bofh.it> |
| In reply to | #1635910 |
On 05/04/2017 01:31 PM, Jason Gunthorpe wrote: > On Thu, May 04, 2017 at 01:28:17PM -0400, Stefan Berger wrote: > >>> So allowing request_locality to fail from userspace seems reasonable. >> What's the best interface to use for this ? > If locality support is enabled then send a request locality packet to > userspace and block until return, just like command execution? We would have to invent a command for that...
[toc] | [prev] | [next] | [standalone]
| From | Jason Gunthorpe <jgunthorpe@obsidianresearch.com> |
|---|---|
| Date | 2017-05-04 19:40 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDsTn-6G6-5@gated-at.bofh.it> |
| In reply to | #1635910 |
On Thu, May 04, 2017 at 01:28:17PM -0400, Stefan Berger wrote: > >So allowing request_locality to fail from userspace seems reasonable. > > What's the best interface to use for this ? If locality support is enabled then send a request locality packet to userspace and block until return, just like command execution? Jason
[toc] | [prev] | [next] | [standalone]
| From | Jason Gunthorpe <jgunthorpe@obsidianresearch.com> |
|---|---|
| Date | 2017-05-04 19:30 +0200 |
| Subject | Re: [PATCH v3 1/3] tpm: vtpm_proxy: Implement new ioctl to get supported flags |
| Message-ID | <tDsJI-6Ay-9@gated-at.bofh.it> |
| In reply to | #1635908 |
On Thu, May 04, 2017 at 01:13:18PM -0400, Stefan Berger wrote: > On 05/04/2017 11:34 AM, Jason Gunthorpe wrote: > >On Thu, May 04, 2017 at 10:56:25AM -0400, Stefan Berger wrote: > >>Implement VTPM_PROXY_IOC_GET_SUPT_FLAGS ioctl to get the bitmask > >>of flags that the vtpm_proxy driver supports in the > >>VTPM_PROXY_IOC_NEW_DEV ioctl. This helps user space in deciding > >>which flags to set in that ioctl. > >you might be better off just having a VTPM_PROXY_IO_ENABLE_FEATURE > >.feature = LOCALITY > > Do you have an example driver that shows how to do this ? Can user space > query that feature? Try and enable the feature, if it fails then there is no feature in the kernel. This is the usual way to add new syscalls.. > >If that fails then the feature is not supported, no real need for the > >query in that case. > > > >Not sure about Jarkko's point on request/release locality.. Is there a > >scenario where the emulator should fail the request locality? > > We could filter localities 5 and higher on the level of the driver (patch > 2/3) since basically there are only 5 localities (0-4) in any TPM interface > today. The typical hardware locality 4 would be filtered by the emulator per > policy passed via command line, but I would allow it on the level of this > driver. An error message would be returned for any command executed in that > locality, unless the 'policy' allows it. Localities 0-3 should just be > selectable. The TPM TIS (in the hardware) implements some complicated scheme > when it comes to allowing the selection of a locality and I would say we > need none of that but just tell the vTPM proxy driver the locality (patch > 2/3) in which the next command will be executed. Well, if TIS hardware has some scheme I feel like the emulator uAPI should have enough fidelity to ecompass existing hardware, even if your current emulator does not need it. So allowing request_locality to fail from userspace seems reasonable. Jason
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web