diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/audit_watch.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c index 27ef8dcf7cd8..359035caac88 100644 --- a/kernel/audit_watch.c +++ b/kernel/audit_watch.c | |||
@@ -540,8 +540,14 @@ int audit_dupe_exe(struct audit_krule *new, struct audit_krule *old) | |||
540 | 540 | ||
541 | int audit_exe_compare(struct task_struct *tsk, struct audit_fsnotify_mark *mark) | 541 | int audit_exe_compare(struct task_struct *tsk, struct audit_fsnotify_mark *mark) |
542 | { | 542 | { |
543 | unsigned long ino = tsk->mm->exe_file->f_inode->i_ino; | 543 | struct file *exe_file; |
544 | dev_t dev = tsk->mm->exe_file->f_inode->i_sb->s_dev; | 544 | unsigned long ino; |
545 | 545 | dev_t dev; | |
546 | |||
547 | rcu_read_lock(); | ||
548 | exe_file = rcu_dereference(tsk->mm->exe_file); | ||
549 | ino = exe_file->f_inode->i_ino; | ||
550 | dev = exe_file->f_inode->i_sb->s_dev; | ||
551 | rcu_read_unlock(); | ||
546 | return audit_mark_compare(mark, ino, dev); | 552 | return audit_mark_compare(mark, ino, dev); |
547 | } | 553 | } |