* It already exists.
         */
        mutex_unlock(&dir->d_inode->i_mutex);
-       audit_inode_update(path.dentry->d_inode);
+       audit_inode(pathname, path.dentry->d_inode);
 
        error = -EEXIST;
        if (flag & O_EXCL)
 
 extern void __audit_inode(const char *name, const struct inode *inode);
 extern void __audit_inode_child(const char *dname, const struct inode *inode,
                                const struct inode *parent);
-extern void __audit_inode_update(const struct inode *inode);
 extern void __audit_ptrace(struct task_struct *t);
 
 static inline int audit_dummy_context(void)
        if (unlikely(!audit_dummy_context()))
                __audit_inode_child(dname, inode, parent);
 }
-static inline void audit_inode_update(const struct inode *inode) {
-       if (unlikely(!audit_dummy_context()))
-               __audit_inode_update(inode);
-}
 
 static inline void audit_ptrace(struct task_struct *t)
 {
 #define audit_putname(n) do { ; } while (0)
 #define __audit_inode(n,i) do { ; } while (0)
 #define __audit_inode_child(d,i,p) do { ; } while (0)
-#define __audit_inode_update(i) do { ; } while (0)
 #define audit_inode(n,i) do { ; } while (0)
 #define audit_inode_child(d,i,p) do { ; } while (0)
-#define audit_inode_update(i) do { ; } while (0)
 #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0)
 #define audit_get_loginuid(c) ({ -1; })
 #define audit_log_task_context(b) do { ; } while (0)
 
 
        if (oflag & O_CREAT) {
                if (dentry->d_inode) {  /* entry already exists */
+                       audit_inode(name, dentry->d_inode);
                        error = -EEXIST;
                        if (oflag & O_EXCL)
                                goto out;
                error = -ENOENT;
                if (!dentry->d_inode)
                        goto out;
+               audit_inode(name, dentry->d_inode);
                filp = do_open(dentry, oflag);
        }
 
        if (unlikely(filp->f_op != &mqueue_file_operations))
                goto out_fput;
        info = MQUEUE_I(inode);
+       audit_inode(NULL, inode);
 
        if (unlikely(!(filp->f_mode & FMODE_WRITE)))
                goto out_fput;
        if (unlikely(filp->f_op != &mqueue_file_operations))
                goto out_fput;
        info = MQUEUE_I(inode);
+       audit_inode(NULL, inode);
 
        if (unlikely(!(filp->f_mode & FMODE_READ)))
                goto out_fput;
 
        }
 }
 
-/**
- * audit_inode_update - update inode info for last collected name
- * @inode: inode being audited
- *
- * When open() is called on an existing object with the O_CREAT flag, the inode
- * data audit initially collects is incorrect.  This additional hook ensures
- * audit has the inode data for the actual object to be opened.
- */
-void __audit_inode_update(const struct inode *inode)
-{
-       struct audit_context *context = current->audit_context;
-       int idx;
-
-       if (!context->in_syscall || !inode)
-               return;
-
-       if (context->name_count == 0) {
-               context->name_count++;
-#if AUDIT_DEBUG
-               context->ino_count++;
-#endif
-       }
-       idx = context->name_count - 1;
-
-       audit_copy_inode(&context->names[idx], inode);
-}
-
 /**
  * auditsc_get_stamp - get local copies of audit_context values
  * @ctx: audit_context for the task