From: Christoph Hellwig <hch@infradead.org>
To: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
James Morris <jmorris@namei.org>,
Christoph Hellwig <hch@infradead.org>,
Al Viro <viro@ZenIV.linux.org.uk>,
David Safford <safford@watson.ibm.com>,
Serge Hallyn <serue@linux.vnet.ibm.com>,
Mimi Zohar <zohar@us.ibm.com>
Subject: Re: [PATCH 3/6] integrity: IMA as an integrity service provider
Date: Wed, 3 Dec 2008 08:03:01 -0500 [thread overview]
Message-ID: <20081203130301.GA9681@infradead.org> (raw)
In-Reply-To: <1228260925.2971.240.camel@nimitz>
On Tue, Dec 02, 2008 at 03:35:25PM -0800, Dave Hansen wrote:
> If you're looking for another way to split your patch out, you could
> just stick use inode->integrity for the first patch, then introduce your
> radix-tree in a subsequent patch. It would be functionally fine, and
> more clearly separate out the ideas.
This was done earlier and is a really bad thing for review. Just as the
breakout happening in this round.
Folks, breaking out logical changes is good, but splitting new code for
the sake of it is just a bloody stupid idea. It makes reviewing things
much harder and makes the submitter to stupid work. If a single new
driver really is large splitting the patch doesn't help.
> > + if (!ima_used_chip)
> > + ima_info("No TPM chip found(rc = %d), activating TPM-bypass!\n",
> > + rc);
>
> For the record, I think this is the kind of place that it's worth going
> over 80 chars.
Or just don't bother printing the useless and ugly rc value and you're
under it immediately..
> > + if ((file->f_mode & FMODE_WRITE) &&
> > + (atomic_read(&inode->i_writecount) == 1)) {
> > + rcu_read_lock();
> > + iint = ima_iint_lookup(inode);
> > + if (!iint) {
> > + rcu_read_unlock();
> > + return;
> > + }
> > + kref_get(&iint->refcount);
> > + rcu_read_unlock();
> > +
> > + mutex_lock(&iint->mutex);
> > + if (iint->version != inode->i_version)
> > + iint->flags &= ~IMA_MEASURED;
> > + mutex_unlock(&iint->mutex);
> > + kref_put(&iint->refcount, iint_free);
> > + }
> > +}
>
> I'm also wondering if there's a way to wrap up the mutex operations
> since this seems to be done the exact same way every time. Dunno, maybe
> it is too much locking obfuscation for just a few lines saved.
Biggest problem here is the i_version checks. i_version is only updated
for directories unless you're on ext4 and use an undocumented mount
option..
> > +
> > + /* Invalidate PCR, if a measured file is already open for read */
> > + if ((mdata.mask & (MAY_WRITE | MAY_READ)) == MAY_WRITE) {
>
> It would warm my heart to see something like this:
>
> int mdata_is_write_only(struct ima_measure_data *mdata)
> {
> if (mdata.mask & MAY_READ)
> return 0;
> return mdata.mask & MAY_WRITE;
Umm, no. The above is a perfectly fine idiom for testing flags in C.
The helper would just obsfucated it.
> I have memories of talking about this bit. I was confused and you
> explained it to me, but it still isn't explained in the code. :( Again,
> I'm not convinced that this works. Can the code convince me, or should
> I go digging in my inbox?
I also haven't seen a good explanation for it yet.
> Please take a really, really hard look at these patches, all 3000 lines
> of it, and try to rework them. Find common bits of code that are
> duplicated or copy-n-pasted around. Find functions that have gotten too
> long and break them up. I bet you can knock a couple hundred lines of
> code off this sucker, easy.
*nod* And change all the places that pass a pointer to a structure as
a void pointer instead of a few normal paramters. That part really
drives me nuts.
next prev parent reply other threads:[~2008-12-03 13:03 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 21:47 [PATCH 0/6] integrity Mimi Zohar
2008-12-02 21:47 ` [PATCH 1/6] integrity: TPM internel kernel interface Mimi Zohar
2008-12-02 22:19 ` Dave Hansen
2008-12-04 20:21 ` Rajiv Andrade
2008-12-04 22:31 ` Rajiv Andrade
2008-12-02 22:59 ` Jeff Garzik
2008-12-03 17:22 ` Serge E. Hallyn
2008-12-02 21:47 ` [PATCH 2/6] integrity: Linux Integrity Module(LIM) Mimi Zohar
2008-12-02 22:43 ` Dave Hansen
2008-12-03 18:15 ` Mimi Zohar
2008-12-03 18:25 ` Dave Hansen
2008-12-03 12:30 ` Christoph Hellwig
2008-12-03 18:18 ` Mimi Zohar
2008-12-03 18:23 ` Christoph Hellwig
2008-12-03 22:17 ` Mimi Zohar
2008-12-04 13:09 ` Christoph Hellwig
2008-12-04 19:24 ` Serge E. Hallyn
2008-12-04 20:53 ` david safford
2008-12-05 1:42 ` James Morris
2008-12-05 12:56 ` david safford
2008-12-05 15:23 ` Serge E. Hallyn
2008-12-05 17:14 ` david safford
2008-12-02 21:47 ` [PATCH 3/6] integrity: IMA as an integrity service provider Mimi Zohar
2008-12-02 23:35 ` Dave Hansen
2008-12-03 13:03 ` Christoph Hellwig [this message]
2008-12-03 16:55 ` Dave Hansen
2008-12-03 17:08 ` Christoph Hellwig
2008-12-03 18:24 ` Mimi Zohar
2008-12-03 18:50 ` Dave Hansen
2008-12-04 18:26 ` Mimi Zohar
2008-12-03 18:17 ` Mimi Zohar
2008-12-03 18:31 ` Dave Hansen
2008-12-05 22:33 ` Al Viro
2008-12-03 19:01 ` Len Brown
2008-12-04 15:57 ` Mimi Zohar
2008-12-03 21:10 ` Dave Hansen
2008-12-02 21:47 ` [PATCH 4/6] integrity: IMA display Mimi Zohar
2008-12-02 21:47 ` [PATCH 5/6] integrity: IMA policy Mimi Zohar
2008-12-02 21:48 ` [PATCH 6/6] integrity: replace task uid with cred uid Mimi Zohar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081203130301.GA9681@infradead.org \
--to=hch@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=dave@linux.vnet.ibm.com \
--cc=jmorris@namei.org \
--cc=linux-kernel@vger.kernel.org \
--cc=safford@watson.ibm.com \
--cc=serue@linux.vnet.ibm.com \
--cc=viro@ZenIV.linux.org.uk \
--cc=zohar@linux.vnet.ibm.com \
--cc=zohar@us.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox