mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-19 04:33:58 +00:00
audit: reverse arguments to audit_inode_child
Most of the callers get called with an inode and dentry in the reverse order. The compiler then has to reshuffle the arg registers and/or stack in order to pass them on to audit_inode_child. Reverse those arguments for a micro-optimization. Reported-by: Eric Paris <eparis@redhat.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
9cec9d68ae
commit
c43a25abba
5 changed files with 19 additions and 19 deletions
|
@ -638,7 +638,7 @@ static int btrfs_may_delete(struct inode *dir,struct dentry *victim,int isdir)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
BUG_ON(victim->d_parent->d_inode != dir);
|
BUG_ON(victim->d_parent->d_inode != dir);
|
||||||
audit_inode_child(victim, dir);
|
audit_inode_child(dir, victim);
|
||||||
|
|
||||||
error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
|
error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
|
||||||
if (error)
|
if (error)
|
||||||
|
|
|
@ -2176,7 +2176,7 @@ static int may_delete(struct inode *dir,struct dentry *victim,int isdir)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
BUG_ON(victim->d_parent->d_inode != dir);
|
BUG_ON(victim->d_parent->d_inode != dir);
|
||||||
audit_inode_child(victim, dir);
|
audit_inode_child(dir, victim);
|
||||||
|
|
||||||
error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
|
error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
|
||||||
if (error)
|
if (error)
|
||||||
|
|
|
@ -464,8 +464,8 @@ extern void __audit_syscall_exit(int ret_success, long ret_value);
|
||||||
extern void __audit_getname(const char *name);
|
extern void __audit_getname(const char *name);
|
||||||
extern void audit_putname(const char *name);
|
extern void audit_putname(const char *name);
|
||||||
extern void __audit_inode(const char *name, const struct dentry *dentry);
|
extern void __audit_inode(const char *name, const struct dentry *dentry);
|
||||||
extern void __audit_inode_child(const struct dentry *dentry,
|
extern void __audit_inode_child(const struct inode *parent,
|
||||||
const struct inode *parent);
|
const struct dentry *dentry);
|
||||||
extern void __audit_seccomp(unsigned long syscall, long signr, int code);
|
extern void __audit_seccomp(unsigned long syscall, long signr, int code);
|
||||||
extern void __audit_ptrace(struct task_struct *t);
|
extern void __audit_ptrace(struct task_struct *t);
|
||||||
|
|
||||||
|
@ -504,10 +504,10 @@ static inline void audit_inode(const char *name, const struct dentry *dentry) {
|
||||||
if (unlikely(!audit_dummy_context()))
|
if (unlikely(!audit_dummy_context()))
|
||||||
__audit_inode(name, dentry);
|
__audit_inode(name, dentry);
|
||||||
}
|
}
|
||||||
static inline void audit_inode_child(const struct dentry *dentry,
|
static inline void audit_inode_child(const struct inode *parent,
|
||||||
const struct inode *parent) {
|
const struct dentry *dentry) {
|
||||||
if (unlikely(!audit_dummy_context()))
|
if (unlikely(!audit_dummy_context()))
|
||||||
__audit_inode_child(dentry, parent);
|
__audit_inode_child(parent, dentry);
|
||||||
}
|
}
|
||||||
void audit_core_dumps(long signr);
|
void audit_core_dumps(long signr);
|
||||||
|
|
||||||
|
@ -657,13 +657,13 @@ static inline void audit_putname(const char *name)
|
||||||
{ }
|
{ }
|
||||||
static inline void __audit_inode(const char *name, const struct dentry *dentry)
|
static inline void __audit_inode(const char *name, const struct dentry *dentry)
|
||||||
{ }
|
{ }
|
||||||
static inline void __audit_inode_child(const struct dentry *dentry,
|
static inline void __audit_inode_child(const struct inode *parent,
|
||||||
const struct inode *parent)
|
const struct dentry *dentry)
|
||||||
{ }
|
{ }
|
||||||
static inline void audit_inode(const char *name, const struct dentry *dentry)
|
static inline void audit_inode(const char *name, const struct dentry *dentry)
|
||||||
{ }
|
{ }
|
||||||
static inline void audit_inode_child(const struct dentry *dentry,
|
static inline void audit_inode_child(const struct inode *parent,
|
||||||
const struct inode *parent)
|
const struct dentry *dentry)
|
||||||
{ }
|
{ }
|
||||||
static inline void audit_core_dumps(long signr)
|
static inline void audit_core_dumps(long signr)
|
||||||
{ }
|
{ }
|
||||||
|
|
|
@ -109,7 +109,7 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir,
|
||||||
|
|
||||||
if (source)
|
if (source)
|
||||||
fsnotify(source, FS_MOVE_SELF, moved->d_inode, FSNOTIFY_EVENT_INODE, NULL, 0);
|
fsnotify(source, FS_MOVE_SELF, moved->d_inode, FSNOTIFY_EVENT_INODE, NULL, 0);
|
||||||
audit_inode_child(moved, new_dir);
|
audit_inode_child(new_dir, moved);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -155,7 +155,7 @@ static inline void fsnotify_inoderemove(struct inode *inode)
|
||||||
*/
|
*/
|
||||||
static inline void fsnotify_create(struct inode *inode, struct dentry *dentry)
|
static inline void fsnotify_create(struct inode *inode, struct dentry *dentry)
|
||||||
{
|
{
|
||||||
audit_inode_child(dentry, inode);
|
audit_inode_child(inode, dentry);
|
||||||
|
|
||||||
fsnotify(inode, FS_CREATE, dentry->d_inode, FSNOTIFY_EVENT_INODE, dentry->d_name.name, 0);
|
fsnotify(inode, FS_CREATE, dentry->d_inode, FSNOTIFY_EVENT_INODE, dentry->d_name.name, 0);
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ static inline void fsnotify_create(struct inode *inode, struct dentry *dentry)
|
||||||
static inline void fsnotify_link(struct inode *dir, struct inode *inode, struct dentry *new_dentry)
|
static inline void fsnotify_link(struct inode *dir, struct inode *inode, struct dentry *new_dentry)
|
||||||
{
|
{
|
||||||
fsnotify_link_count(inode);
|
fsnotify_link_count(inode);
|
||||||
audit_inode_child(new_dentry, dir);
|
audit_inode_child(dir, new_dentry);
|
||||||
|
|
||||||
fsnotify(dir, FS_CREATE, inode, FSNOTIFY_EVENT_INODE, new_dentry->d_name.name, 0);
|
fsnotify(dir, FS_CREATE, inode, FSNOTIFY_EVENT_INODE, new_dentry->d_name.name, 0);
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry)
|
||||||
__u32 mask = (FS_CREATE | FS_ISDIR);
|
__u32 mask = (FS_CREATE | FS_ISDIR);
|
||||||
struct inode *d_inode = dentry->d_inode;
|
struct inode *d_inode = dentry->d_inode;
|
||||||
|
|
||||||
audit_inode_child(dentry, inode);
|
audit_inode_child(inode, dentry);
|
||||||
|
|
||||||
fsnotify(inode, mask, d_inode, FSNOTIFY_EVENT_INODE, dentry->d_name.name, 0);
|
fsnotify(inode, mask, d_inode, FSNOTIFY_EVENT_INODE, dentry->d_name.name, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2166,9 +2166,9 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* audit_inode_child - collect inode info for created/removed objects
|
* __audit_inode_child - collect inode info for created/removed objects
|
||||||
* @dentry: dentry being audited
|
|
||||||
* @parent: inode of dentry parent
|
* @parent: inode of dentry parent
|
||||||
|
* @dentry: dentry being audited
|
||||||
*
|
*
|
||||||
* For syscalls that create or remove filesystem objects, audit_inode
|
* For syscalls that create or remove filesystem objects, audit_inode
|
||||||
* can only collect information for the filesystem object's parent.
|
* can only collect information for the filesystem object's parent.
|
||||||
|
@ -2178,8 +2178,8 @@ out:
|
||||||
* must be hooked prior, in order to capture the target inode during
|
* must be hooked prior, in order to capture the target inode during
|
||||||
* unsuccessful attempts.
|
* unsuccessful attempts.
|
||||||
*/
|
*/
|
||||||
void __audit_inode_child(const struct dentry *dentry,
|
void __audit_inode_child(const struct inode *parent,
|
||||||
const struct inode *parent)
|
const struct dentry *dentry)
|
||||||
{
|
{
|
||||||
struct audit_context *context = current->audit_context;
|
struct audit_context *context = current->audit_context;
|
||||||
const char *found_parent = NULL, *found_child = NULL;
|
const char *found_parent = NULL, *found_child = NULL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue