linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] audit_tree: keep inode pinned
@ 2014-11-04 10:27 Miklos Szeredi
  2014-11-04 15:17 ` Eric Paris
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Miklos Szeredi @ 2014-11-04 10:27 UTC (permalink / raw)
  To: Eric Paris, Al Viro; +Cc: Linux Kernel Mailing List

From: Miklos Szeredi <mszeredi@suse.cz>

Audit rules disappear when an inode they watch is evicted from the cache.
This is likely not what we want.

The guilty commit is "fsnotify: allow marks to not pin inodes in core",
which didn't take into account that audit_tree adds watches with a zero
mask.

Adding any mask should fix this.

Fixes: 90b1e7a57880 ("fsnotify: allow marks to not pin inodes in core")
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: stable@vger.kernel.org # 2.6.36+
---
 kernel/audit_tree.c |    1 +
 1 file changed, 1 insertion(+)

--- a/kernel/audit_tree.c
+++ b/kernel/audit_tree.c
@@ -154,6 +154,7 @@ static struct audit_chunk *alloc_chunk(i
 		chunk->owners[i].index = i;
 	}
 	fsnotify_init_mark(&chunk->mark, audit_tree_destroy_watch);
+	chunk->mark.mask = FS_IN_IGNORED;
 	return chunk;
 }
 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] audit_tree: keep inode pinned
  2014-11-04 10:27 [PATCH] audit_tree: keep inode pinned Miklos Szeredi
@ 2014-11-04 15:17 ` Eric Paris
  2014-11-05 16:58 ` Richard Guy Briggs
  2014-11-11 19:47 ` Paul Moore
  2 siblings, 0 replies; 6+ messages in thread
From: Eric Paris @ 2014-11-04 15:17 UTC (permalink / raw)
  To: Miklos Szeredi, pmoore, rgb; +Cc: Al Viro, Linux Kernel Mailing List

[adding paul and richard]

On Tue, 2014-11-04 at 11:27 +0100, Miklos Szeredi wrote:
> From: Miklos Szeredi <mszeredi@suse.cz>
> 
> Audit rules disappear when an inode they watch is evicted from the cache.
> This is likely not what we want.
> 
> The guilty commit is "fsnotify: allow marks to not pin inodes in core",
> which didn't take into account that audit_tree adds watches with a zero
> mask.
> 
> Adding any mask should fix this.
> 
> Fixes: 90b1e7a57880 ("fsnotify: allow marks to not pin inodes in core")
> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
> Cc: stable@vger.kernel.org # 2.6.36+
> ---
>  kernel/audit_tree.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> --- a/kernel/audit_tree.c
> +++ b/kernel/audit_tree.c
> @@ -154,6 +154,7 @@ static struct audit_chunk *alloc_chunk(i
>  		chunk->owners[i].index = i;
>  	}
>  	fsnotify_init_mark(&chunk->mark, audit_tree_destroy_watch);
> +	chunk->mark.mask = FS_IN_IGNORED;
>  	return chunk;
>  }
>  



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] audit_tree: keep inode pinned
  2014-11-04 10:27 [PATCH] audit_tree: keep inode pinned Miklos Szeredi
  2014-11-04 15:17 ` Eric Paris
@ 2014-11-05 16:58 ` Richard Guy Briggs
  2014-11-05 19:36   ` Miklos Szeredi
  2014-11-11 19:47 ` Paul Moore
  2 siblings, 1 reply; 6+ messages in thread
From: Richard Guy Briggs @ 2014-11-05 16:58 UTC (permalink / raw)
  To: Miklos Szeredi
  Cc: Eric Paris, Al Viro, Linux Kernel Mailing List, linux-audit

On 14/11/04, Miklos Szeredi wrote:
> From: Miklos Szeredi <mszeredi@suse.cz>

Hi Miklos,

> Audit rules disappear when an inode they watch is evicted from the cache.
> This is likely not what we want.
> 
> The guilty commit is "fsnotify: allow marks to not pin inodes in core",
> which didn't take into account that audit_tree adds watches with a zero
> mask.
> 
> Adding any mask should fix this.

Nice find!  Do you have a quick reproducer to detect this?

> Fixes: 90b1e7a57880 ("fsnotify: allow marks to not pin inodes in core")
> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
> Cc: stable@vger.kernel.org # 2.6.36+
> ---
>  kernel/audit_tree.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> --- a/kernel/audit_tree.c
> +++ b/kernel/audit_tree.c
> @@ -154,6 +154,7 @@ static struct audit_chunk *alloc_chunk(i
>  		chunk->owners[i].index = i;
>  	}
>  	fsnotify_init_mark(&chunk->mark, audit_tree_destroy_watch);
> +	chunk->mark.mask = FS_IN_IGNORED;
>  	return chunk;
>  }
>  

- RGB

--
Richard Guy Briggs <rbriggs@redhat.com>
Senior Software Engineer, Kernel Security, AMER ENG Base Operating Systems, Red Hat
Remote, Ottawa, Canada
Voice: +1.647.777.2635, Internal: (81) 32635, Alt: +1.613.693.0684x3545

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] audit_tree: keep inode pinned
  2014-11-05 16:58 ` Richard Guy Briggs
@ 2014-11-05 19:36   ` Miklos Szeredi
  2014-11-12 17:30     ` Richard Guy Briggs
  0 siblings, 1 reply; 6+ messages in thread
From: Miklos Szeredi @ 2014-11-05 19:36 UTC (permalink / raw)
  To: Richard Guy Briggs
  Cc: Eric Paris, Al Viro, Linux Kernel Mailing List, linux-audit

On Wed, Nov 5, 2014 at 5:58 PM, Richard Guy Briggs <rgb@redhat.com> wrote:
> On 14/11/04, Miklos Szeredi wrote:
>> From: Miklos Szeredi <mszeredi@suse.cz>
>
> Hi Miklos,
>
>> Audit rules disappear when an inode they watch is evicted from the cache.
>> This is likely not what we want.
>>
>> The guilty commit is "fsnotify: allow marks to not pin inodes in core",
>> which didn't take into account that audit_tree adds watches with a zero
>> mask.
>>
>> Adding any mask should fix this.
>
> Nice find!  Do you have a quick reproducer to detect this?


- reboot
- add tree rule
- echo 2 > /proc/sys/vm/drop_caches

drop_caches doesn't guarantee dropping the inode from the cache, but
after a reboot it usually does.

Thanks,
Miklos

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] audit_tree: keep inode pinned
  2014-11-04 10:27 [PATCH] audit_tree: keep inode pinned Miklos Szeredi
  2014-11-04 15:17 ` Eric Paris
  2014-11-05 16:58 ` Richard Guy Briggs
@ 2014-11-11 19:47 ` Paul Moore
  2 siblings, 0 replies; 6+ messages in thread
From: Paul Moore @ 2014-11-11 19:47 UTC (permalink / raw)
  To: Miklos Szeredi
  Cc: Eric Paris, Al Viro, Linux Kernel Mailing List, linux-audit, rgb

On Tue, Nov 4, 2014 at 5:27 AM, Miklos Szeredi <miklos@szeredi.hu> wrote:
> From: Miklos Szeredi <mszeredi@suse.cz>
>
> Audit rules disappear when an inode they watch is evicted from the cache.
> This is likely not what we want.
>
> The guilty commit is "fsnotify: allow marks to not pin inodes in core",
> which didn't take into account that audit_tree adds watches with a zero
> mask.
>
> Adding any mask should fix this.
>
> Fixes: 90b1e7a57880 ("fsnotify: allow marks to not pin inodes in core")
> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
> Cc: stable@vger.kernel.org # 2.6.36+
> ---
>  kernel/audit_tree.c |    1 +
>  1 file changed, 1 insertion(+)

Thanks for your help on this, I've merged this into the audit
stable-3.18 branch; I plan on pushing this to Linus later this week.

 * git://git.infradead.org/users/pcmoore/audit stable-3.18

> --- a/kernel/audit_tree.c
> +++ b/kernel/audit_tree.c
> @@ -154,6 +154,7 @@ static struct audit_chunk *alloc_chunk(i
>                 chunk->owners[i].index = i;
>         }
>         fsnotify_init_mark(&chunk->mark, audit_tree_destroy_watch);
> +       chunk->mark.mask = FS_IN_IGNORED;
>         return chunk;
>  }

-- 
paul moore
www.paul-moore.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] audit_tree: keep inode pinned
  2014-11-05 19:36   ` Miklos Szeredi
@ 2014-11-12 17:30     ` Richard Guy Briggs
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Guy Briggs @ 2014-11-12 17:30 UTC (permalink / raw)
  To: Miklos Szeredi
  Cc: Eric Paris, Al Viro, Linux Kernel Mailing List, linux-audit

On 14/11/05, Miklos Szeredi wrote:
> On Wed, Nov 5, 2014 at 5:58 PM, Richard Guy Briggs <rgb@redhat.com> wrote:
> > On 14/11/04, Miklos Szeredi wrote:
> >> From: Miklos Szeredi <mszeredi@suse.cz>
> >
> > Hi Miklos,
> >
> >> Audit rules disappear when an inode they watch is evicted from the cache.
> >> This is likely not what we want.
> >>
> >> The guilty commit is "fsnotify: allow marks to not pin inodes in core",
> >> which didn't take into account that audit_tree adds watches with a zero
> >> mask.
> >>
> >> Adding any mask should fix this.
> >
> > Nice find!  Do you have a quick reproducer to detect this?
> 
> - reboot
> - add tree rule
> - echo 2 > /proc/sys/vm/drop_caches
> 
> drop_caches doesn't guarantee dropping the inode from the cache, but
> after a reboot it usually does.

Perfect, thanks!  That works as expected.  While I was at it, I checked
the audit_watch code and the pending "filter on process name" patches to
make sure they didn't have the same problem.

> Thanks,
> Miklos

- RGB

--
Richard Guy Briggs <rbriggs@redhat.com>
Senior Software Engineer, Kernel Security, AMER ENG Base Operating Systems, Red Hat
Remote, Ottawa, Canada
Voice: +1.647.777.2635, Internal: (81) 32635, Alt: +1.613.693.0684x3545

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-11-12 17:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-04 10:27 [PATCH] audit_tree: keep inode pinned Miklos Szeredi
2014-11-04 15:17 ` Eric Paris
2014-11-05 16:58 ` Richard Guy Briggs
2014-11-05 19:36   ` Miklos Szeredi
2014-11-12 17:30     ` Richard Guy Briggs
2014-11-11 19:47 ` Paul Moore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).