From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758913AbZBBXns (ORCPT ); Mon, 2 Feb 2009 18:43:48 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753308AbZBBXni (ORCPT ); Mon, 2 Feb 2009 18:43:38 -0500 Received: from hrndva-omtalb.mail.rr.com ([71.74.56.122]:33728 "EHLO hrndva-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752970AbZBBXnh (ORCPT ); Mon, 2 Feb 2009 18:43:37 -0500 Date: Mon, 2 Feb 2009 17:47:02 -0600 From: "Serge E. Hallyn" To: Mimi Zohar Cc: linux-kernel@vger.kernel.org, Andrew Morton , James Morris , Christoph Hellwig , Dave Hansen , ", Serge Hallyn , Mimi Zohar Subject: Re: [PATCH 6/6] Integrity: IMA file free imbalance Message-ID: <20090202234702.GD18452@hallyn.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.15+20070412 (2007-04-11) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Mimi Zohar (zohar@linux.vnet.ibm.com): > The number of calls to ima_path_check()/ima_file_free() > should be balanced. An extra call to fput(), indicates > the file could have been accessed without first being > measured. > > Although f_count is incremented/decremented in places other > than fget/fput, like fget_light/fput_light and get_file, the > current task must already hold a file refcnt. The call to > __fput() is delayed until the refcnt becomes 0, resulting > in ima_file_free() flagging any changes. > > - add hook to increment opencount for IPC shared memory(SYSV) > and shmat files > > Signed-off-by: Mimi Zohar ... > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c ... > +static void opencount_get(struct file *file) > +{ > + struct inode *inode = file->f_dentry->d_inode; > + struct ima_iint_cache *iint; > + > + if (!ima_initialized || !S_ISREG(inode->i_mode)) > + return; > + iint = ima_iint_find_insert_get(inode); > + mutex_lock(&iint->mutex); > + if (iint) Hey, I think you've got those two lines above mixed up a bit :) Very neat, though. Acked-by: Serge Hallyn once that's fixed up. thanks, -serge