Re: [PATCH 2/3] integrity: Linux Integrity Module(LIM)

Serge E. Hallyn
2008-10-14T16:10:30Z

Quoting david safford (safford@watson.ibm.com):
> On Tue, 2008-10-14 at 09:28 -0400, Christoph Hellwig wrote:
> > > int vfs_permission(struct nameidata *nd, int mask)
> > > {
> > > - return inode_permission(nd->path.dentry->d_inode, mask);
> > > + int retval;
> > > +
> > > + retval = inode_permission(nd->path.dentry->d_inode, mask);
> > > + if (retval)
> > > + return retval;
> > > + return integrity_inode_permission(NULL, &nd->path,
> > > + mask & (MAY_READ | MAY_WRITE |
> > > + MAY_EXEC));
> > > }
> > >
> > > /**
> > > @@ -306,7 +314,14 @@ int vfs_permission(struct nameidata *nd, int mask)
> > > */
> > > int file_permission(struct file *file, int mask)
> > > {
> > > - return inode_permission(file->f_path.dentry->d_inode, mask);
> > > + int retval;
> > > +
> > > + retval = inode_permission(file->f_path.dentry->d_inode, mask);
> > > + if (retval)
> > > + return retval;
> > > + return integrity_inode_permission(file, NULL,
> > > + mask & (MAY_READ | MAY_WRITE |
> > > + MAY_EXEC));
> >
> > Please don't add anything here as these two wrappers will go away.
> > Please only make decisions based on what you get in inode_permission().
>
> Hmm... As Mimi mentioned in the last review, we really need access
> to a path, which is not available in inode_permission. (Note the
> path is not used to make any integrity decision, but is recorded along
> with the measurement to help with the integrity analysis by a third
> party verifier.) Yes, there are other callers without path information,
> but getting a path here covers the bulk of the measurements.
>
> Is there some other alternative, other than this, or passing the
> dentry into inode_permission, which was also rejected?

Whatever happened to the patch Mimi had floated to use the audit
subsystem to output a pathname? I thought that was pretty neat,
and it made particularly clear the the pathname was purely
informational.

-serge