diff options
Diffstat (limited to 'kernel/audit_watch.c')
-rw-r--r-- | kernel/audit_watch.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c index d6709eb70970..0d302a87f21b 100644 --- a/kernel/audit_watch.c +++ b/kernel/audit_watch.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/file.h> | ||
22 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
23 | #include <linux/audit.h> | 24 | #include <linux/audit.h> |
24 | #include <linux/kthread.h> | 25 | #include <linux/kthread.h> |
@@ -544,10 +545,11 @@ int audit_exe_compare(struct task_struct *tsk, struct audit_fsnotify_mark *mark) | |||
544 | unsigned long ino; | 545 | unsigned long ino; |
545 | dev_t dev; | 546 | dev_t dev; |
546 | 547 | ||
547 | rcu_read_lock(); | 548 | exe_file = get_task_exe_file(tsk); |
548 | exe_file = rcu_dereference(tsk->mm->exe_file); | 549 | if (!exe_file) |
550 | return 0; | ||
549 | ino = exe_file->f_inode->i_ino; | 551 | ino = exe_file->f_inode->i_ino; |
550 | dev = exe_file->f_inode->i_sb->s_dev; | 552 | dev = exe_file->f_inode->i_sb->s_dev; |
551 | rcu_read_unlock(); | 553 | fput(exe_file); |
552 | return audit_mark_compare(mark, ino, dev); | 554 | return audit_mark_compare(mark, ino, dev); |
553 | } | 555 | } |