Fw: [PATCH] namei: add audit_inode to all branches in path_lookup

David Woodhouse dwmw2 at infradead.org
Wed Mar 23 11:24:15 UTC 2005


On Tue, 2005-03-22 at 19:10 -0800, Andrew Morton wrote:
> There's a patch for you over on linux-mm.

Looks sane; added to the BK tree. Thanks.

> Is there an audit mailing list?

There is. linux-audit at redhat.com

> Begin forwarded message:
> 
> Date: Tue, 22 Mar 2005 19:15:02 -0800
> From: pmeda at akamai.com
> To: akpm at osdl.org
> Cc: linux-mm at kvack.org
> Subject: [PATCH] namei: add audit_inode to all branches in path_lookup
> 
> 
> 
> Main change is in path_lookup: added a goto to do audit_inode
> instead of return statement, when emul_lookup_dentry for root
> is successful.  The existing code does audit_inode only when
> lookup is done in normal root or cwd.
> 
> Other changes: Some lookup routines are returning zero on success,
> and some are returning zero on failure. I documented the related
> function signatures in this code path, so that one can glance over
> abstract functions without understanding the entire code.
> 
> Signed-off-by: Prasanna Meda <pmeda at akamai.com>
> 
> 
> --- linux/fs/namei.c	Tue Mar 22 01:29:37 2005
> +++ Linux/fs/namei.c	Tue Mar 22 01:48:24 2005
> @@ -675,11 +675,11 @@
>  
>  /*
>   * Name resolution.
> + * This is the basic name resolution function, turning a pathname into
> + * the final dentry. We expect 'base' to be positive and a directory.
>   *
> - * This is the basic name resolution function, turning a pathname
> - * into the final dentry.
> - *
> - * We expect 'base' to be positive and a directory.
> + * Returns 0 and nd will have valid dentry and mnt on success.
> + * Returns error and drops reference to input namei data on failure.
>   */
>  int fastcall link_path_walk(const char * name, struct nameidata *nd)
>  {
> @@ -887,8 +887,10 @@
>  	return link_path_walk(name, nd);
>  }
>  
> -/* SMP-safe */
> -/* returns 1 if everything is done */
> +/* 
> + * SMP-safe: Returns 1 and nd will have valid dentry and mnt, if
> + * everything is done. Returns 0 and drops input nd, if lookup failed;
> + */
>  static int __emul_lookup_dentry(const char *name, struct nameidata *nd)
>  {
>  	if (path_walk(name, nd))
> @@ -952,9 +954,10 @@
>  	}
>  }
>  
> +/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
>  int fastcall path_lookup(const char *name, unsigned int flags, struct nameidata *nd)
>  {
> -	int retval;
> +	int retval = 0;
>  
>  	nd->last_type = LAST_ROOT; /* if there are only slashes... */
>  	nd->flags = flags;
> @@ -967,7 +970,7 @@
>  			nd->dentry = dget(current->fs->altroot);
>  			read_unlock(&current->fs->lock);
>  			if (__emul_lookup_dentry(name,nd))
> -				return 0;
> +				goto out; /* found in altroot */
>  			read_lock(&current->fs->lock);
>  		}
>  		nd->mnt = mntget(current->fs->rootmnt);
> @@ -979,6 +982,7 @@
>  	read_unlock(&current->fs->lock);
>  	current->total_link_count = 0;
>  	retval = link_path_walk(name, nd);
> +out:
>  	if (unlikely(current->audit_context
>  		     && nd && nd->dentry && nd->dentry->d_inode))
>  		audit_inode(name,
-- 
dwmw2




More information about the Linux-audit mailing list