On Sun, Jul 28, 2019 at 02:50:03PM -0400, Theodore Y. Ts'o wrote: > On Fri, Jul 26, 2019 at 03:41:31PM -0700, Eric Biggers wrote: > > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > > > Add a new fscrypt ioctl, FS_IOC_ADD_ENCRYPTION_KEY. This ioctl adds an > > encryption key to the filesystem's fscrypt keyring ->s_master_keys, > > making any files encrypted with that key appear "unlocked". > > Note: it think it's going to be useful to make the keyring id > available someplace like /sys/fs/<fs>/<blkdev>/keyring, or preferably > in the new fsinfo system call. Yes, the system administrator can paw > through /proc/keys and try to figure it out, but it will be nicer if > there's a direct way to do that. > > For that matter, we could just add a new ioctl which returns the file > system's keyring id. That way an application program won't have to > try to figure out what a file's underlying sb->s_id happens to be. > (Especially if things like overlayfs are involved.) Keep in mind that the new ioctls (FS_IOC_ADD_ENCRYPTION_KEY, FS_IOC_REMOVE_ENCRYPTION_KEY, FS_IOC_GET_ENCRYPTION_KEY_STATUS) don't take the keyring ID as a parameter, since it's already known from the filesystem the ioctl is executed on. So there actually isn't much that can be done with the keyring ID. But sure, if it's needed later we can add an API to get it. > > > diff --git a/include/uapi/linux/fscrypt.h b/include/uapi/linux/fscrypt.h > > index 29a945d165def..93d6eabaa7de4 100644 > > --- a/include/uapi/linux/fscrypt.h > > +++ b/include/uapi/linux/fscrypt.h > > + > > +struct fscrypt_key_specifier { > > +#define FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR 1 > > + __u32 type; > > + __u32 __reserved; > > Can you move the definition of FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR > outside of the structure definition, and then add a comment about what > is a "descriptor" key spec? (And then in a later patch, please add a > comment about what is an "identifier" key type.) There's an > explanation in Documentation/filesystems/fscrypt.rst, I know, but a > one or two line comment plus a pointer to > Documentation/filesystems/fscrypt.rst in the header file would be > really helpful. I'll add a brief comment that explains the key specifier. I've already added a pointer to Documentation/filesystems/fscrypt.rst at the top of the header (this was one of the cleanups in v6 => v7): /* * fscrypt user API * * These ioctls can be used on filesystems that support fscrypt. See the * "User API" section of Documentation/filesystems/fscrypt.rst. */ - Eric