diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2007-06-07 12:19:32 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2007-10-21 02:37:18 -0400 |
| commit | 5a190ae69766da9a34bf31200c5cea4c0667cf94 (patch) | |
| tree | 340c500fe42518abe6d1159a00619b1bd02f07fc /include/linux | |
| parent | cfa76f024f7c9e65169425804e5b32e71f66d0ee (diff) | |
[PATCH] pass dentry to audit_inode()/audit_inode_child()
makes caller simpler *and* allows to scan ancestors
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/audit.h | 16 | ||||
| -rw-r--r-- | include/linux/fsnotify.h | 9 |
2 files changed, 13 insertions, 12 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index 9ae740936a65..133b81be60a3 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -366,8 +366,8 @@ extern void audit_syscall_entry(int arch, | |||
| 366 | extern void audit_syscall_exit(int failed, long return_code); | 366 | extern void audit_syscall_exit(int failed, long return_code); |
| 367 | extern void __audit_getname(const char *name); | 367 | extern void __audit_getname(const char *name); |
| 368 | extern void audit_putname(const char *name); | 368 | extern void audit_putname(const char *name); |
| 369 | extern void __audit_inode(const char *name, const struct inode *inode); | 369 | extern void __audit_inode(const char *name, const struct dentry *dentry); |
| 370 | extern void __audit_inode_child(const char *dname, const struct inode *inode, | 370 | extern void __audit_inode_child(const char *dname, const struct dentry *dentry, |
| 371 | const struct inode *parent); | 371 | const struct inode *parent); |
| 372 | extern void __audit_ptrace(struct task_struct *t); | 372 | extern void __audit_ptrace(struct task_struct *t); |
| 373 | 373 | ||
| @@ -381,15 +381,15 @@ static inline void audit_getname(const char *name) | |||
| 381 | if (unlikely(!audit_dummy_context())) | 381 | if (unlikely(!audit_dummy_context())) |
| 382 | __audit_getname(name); | 382 | __audit_getname(name); |
| 383 | } | 383 | } |
| 384 | static inline void audit_inode(const char *name, const struct inode *inode) { | 384 | static inline void audit_inode(const char *name, const struct dentry *dentry) { |
| 385 | if (unlikely(!audit_dummy_context())) | 385 | if (unlikely(!audit_dummy_context())) |
| 386 | __audit_inode(name, inode); | 386 | __audit_inode(name, dentry); |
| 387 | } | 387 | } |
| 388 | static inline void audit_inode_child(const char *dname, | 388 | static inline void audit_inode_child(const char *dname, |
| 389 | const struct inode *inode, | 389 | const struct dentry *dentry, |
| 390 | const struct inode *parent) { | 390 | const struct inode *parent) { |
| 391 | if (unlikely(!audit_dummy_context())) | 391 | if (unlikely(!audit_dummy_context())) |
| 392 | __audit_inode_child(dname, inode, parent); | 392 | __audit_inode_child(dname, dentry, parent); |
| 393 | } | 393 | } |
| 394 | void audit_core_dumps(long signr); | 394 | void audit_core_dumps(long signr); |
| 395 | 395 | ||
| @@ -477,9 +477,9 @@ extern int audit_signals; | |||
| 477 | #define audit_dummy_context() 1 | 477 | #define audit_dummy_context() 1 |
| 478 | #define audit_getname(n) do { ; } while (0) | 478 | #define audit_getname(n) do { ; } while (0) |
| 479 | #define audit_putname(n) do { ; } while (0) | 479 | #define audit_putname(n) do { ; } while (0) |
| 480 | #define __audit_inode(n,i) do { ; } while (0) | 480 | #define __audit_inode(n,d) do { ; } while (0) |
| 481 | #define __audit_inode_child(d,i,p) do { ; } while (0) | 481 | #define __audit_inode_child(d,i,p) do { ; } while (0) |
| 482 | #define audit_inode(n,i) do { ; } while (0) | 482 | #define audit_inode(n,d) do { ; } while (0) |
| 483 | #define audit_inode_child(d,i,p) do { ; } while (0) | 483 | #define audit_inode_child(d,i,p) do { ; } while (0) |
| 484 | #define audit_core_dumps(i) do { ; } while (0) | 484 | #define audit_core_dumps(i) do { ; } while (0) |
| 485 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) | 485 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) |
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index dfc4e4f68da4..2bd31fa623b6 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h | |||
| @@ -41,8 +41,9 @@ static inline void fsnotify_d_move(struct dentry *entry) | |||
| 41 | */ | 41 | */ |
| 42 | static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, | 42 | static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, |
| 43 | const char *old_name, const char *new_name, | 43 | const char *old_name, const char *new_name, |
| 44 | int isdir, struct inode *target, struct inode *source) | 44 | int isdir, struct inode *target, struct dentry *moved) |
| 45 | { | 45 | { |
| 46 | struct inode *source = moved->d_inode; | ||
| 46 | u32 cookie = inotify_get_cookie(); | 47 | u32 cookie = inotify_get_cookie(); |
| 47 | 48 | ||
| 48 | if (old_dir == new_dir) | 49 | if (old_dir == new_dir) |
| @@ -67,7 +68,7 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, | |||
| 67 | if (source) { | 68 | if (source) { |
| 68 | inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL, NULL); | 69 | inotify_inode_queue_event(source, IN_MOVE_SELF, 0, NULL, NULL); |
| 69 | } | 70 | } |
| 70 | audit_inode_child(new_name, source, new_dir); | 71 | audit_inode_child(new_name, moved, new_dir); |
| 71 | } | 72 | } |
| 72 | 73 | ||
| 73 | /* | 74 | /* |
| @@ -98,7 +99,7 @@ static inline void fsnotify_create(struct inode *inode, struct dentry *dentry) | |||
| 98 | inode_dir_notify(inode, DN_CREATE); | 99 | inode_dir_notify(inode, DN_CREATE); |
| 99 | inotify_inode_queue_event(inode, IN_CREATE, 0, dentry->d_name.name, | 100 | inotify_inode_queue_event(inode, IN_CREATE, 0, dentry->d_name.name, |
| 100 | dentry->d_inode); | 101 | dentry->d_inode); |
| 101 | audit_inode_child(dentry->d_name.name, dentry->d_inode, inode); | 102 | audit_inode_child(dentry->d_name.name, dentry, inode); |
| 102 | } | 103 | } |
| 103 | 104 | ||
| 104 | /* | 105 | /* |
| @@ -109,7 +110,7 @@ static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry) | |||
| 109 | inode_dir_notify(inode, DN_CREATE); | 110 | inode_dir_notify(inode, DN_CREATE); |
| 110 | inotify_inode_queue_event(inode, IN_CREATE | IN_ISDIR, 0, | 111 | inotify_inode_queue_event(inode, IN_CREATE | IN_ISDIR, 0, |
| 111 | dentry->d_name.name, dentry->d_inode); | 112 | dentry->d_name.name, dentry->d_inode); |
| 112 | audit_inode_child(dentry->d_name.name, dentry->d_inode, inode); | 113 | audit_inode_child(dentry->d_name.name, dentry, inode); |
| 113 | } | 114 | } |
| 114 | 115 | ||
| 115 | /* | 116 | /* |
