<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/kernel/audit_tree.c, branch v3.6</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.6</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.6'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2012-08-15T10:55:22Z</updated>
<entry>
<title>audit: clean up refcounting in audit-tree</title>
<updated>2012-08-15T10:55:22Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2012-08-15T10:55:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=b3e8692b4dde5cf5fc60e4b95385229a72623182'/>
<id>urn:sha1:b3e8692b4dde5cf5fc60e4b95385229a72623182</id>
<content type='text'>
Drop the initial reference by fsnotify_init_mark early instead of
audit_tree_freeing_mark() at destroy time.

In the cases we destroy the mark before we drop the initial reference we need to
get rid of the get_mark that balances the put_mark in audit_tree_freeing_mark().

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>audit: fix refcounting in audit-tree</title>
<updated>2012-08-15T10:55:22Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2012-08-15T10:55:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a2140fc0cb0325bb6384e788edd27b9a568714e2'/>
<id>urn:sha1:a2140fc0cb0325bb6384e788edd27b9a568714e2</id>
<content type='text'>
Refcounting of fsnotify_mark in audit tree is broken.  E.g:

                              refcount
create_chunk
  alloc_chunk                 1
  fsnotify_add_mark           2

untag_chunk
  fsnotify_get_mark           3
  fsnotify_destroy_mark
    audit_tree_freeing_mark   2
  fsnotify_put_mark           1
  fsnotify_put_mark           0
  via destroy_list
    fsnotify_mark_destroy    -1

This was reported by various people as triggering Oops when stopping auditd.

We could just remove the put_mark from audit_tree_freeing_mark() but that would
break freeing via inode destruction.  So this patch simply omits a put_mark
after calling destroy_mark or adds a get_mark before.

The additional get_mark is necessary where there's no other put_mark after
fsnotify_destroy_mark() since it assumes that the caller is holding a reference
(or the inode is keeping the mark pinned, not the case here AFAICS).

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Reported-by: Valentin Avram &lt;aval13@gmail.com&gt;
Reported-by: Peter Moody &lt;pmoody@google.com&gt;
Acked-by: Eric Paris &lt;eparis@redhat.com&gt;
CC: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>audit: don't free_chunk() after fsnotify_add_mark()</title>
<updated>2012-08-15T10:55:22Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2012-08-15T10:55:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0fe33aae0e94b4097dd433c9399e16e17d638cd8'/>
<id>urn:sha1:0fe33aae0e94b4097dd433c9399e16e17d638cd8</id>
<content type='text'>
Don't do free_chunk() after fsnotify_add_mark().  That one does a delayed unref
via the destroy list and this results in use-after-free.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Acked-by: Eric Paris &lt;eparis@redhat.com&gt;
CC: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors</title>
<updated>2012-07-14T12:37:27Z</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2012-06-25T11:55:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=be34d1a3bc4b6f357a49acb55ae870c81337e4f0'/>
<id>urn:sha1:be34d1a3bc4b6f357a49acb55ae870c81337e4f0</id>
<content type='text'>
copy_tree() can theoretically fail in a case other than ENOMEM, but always
returns NULL which is interpreted by callers as -ENOMEM.  Change it to return
an explicit error.

Also change clone_mnt() for consistency and because union mounts will add new
error cases.

Thanks to Andreas Gruenbacher &lt;agruen@suse.de&gt; for a bug fix.
[AV: folded braino fix by Dan Carpenter]

Original-author: Valerie Aurora &lt;vaurora@redhat.com&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Cc: Valerie Aurora &lt;valerie.aurora@gmail.com&gt;
Cc: Andreas Gruenbacher &lt;agruen@suse.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>audit_tree,rcu: Convert call_rcu(__put_tree) to kfree_rcu()</title>
<updated>2011-07-20T21:10:11Z</updated>
<author>
<name>Lai Jiangshan</name>
<email>laijs@cn.fujitsu.com</email>
</author>
<published>2011-03-15T10:03:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3b097c46964b07479855b01056c61540b8cadd50'/>
<id>urn:sha1:3b097c46964b07479855b01056c61540b8cadd50</id>
<content type='text'>
The rcu callback __put_tree() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(__put_tree).

Signed-off-by: Lai Jiangshan &lt;laijs@cn.fujitsu.com&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Cc: Eric Paris &lt;eparis@redhat.com&gt;
Reviewed-by: Josh Triplett &lt;josh@joshtriplett.org&gt;
</content>
</entry>
<entry>
<title>Fix common misspellings</title>
<updated>2011-03-31T14:26:23Z</updated>
<author>
<name>Lucas De Marchi</name>
<email>lucas.demarchi@profusion.mobi</email>
</author>
<published>2011-03-31T01:57:33Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=25985edcedea6396277003854657b5f3cb31a628'/>
<id>urn:sha1:25985edcedea6396277003854657b5f3cb31a628</id>
<content type='text'>
Fixes generated by 'codespell' and manually reviewed.

Signed-off-by: Lucas De Marchi &lt;lucas.demarchi@profusion.mobi&gt;
</content>
</entry>
<entry>
<title>in untag_chunk() we need to do alloc_chunk() a bit earlier</title>
<updated>2010-10-30T06:18:32Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2010-10-30T06:18:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f7a998a9491f2da1d3e44d150aa611d10093da4f'/>
<id>urn:sha1:f7a998a9491f2da1d3e44d150aa611d10093da4f</id>
<content type='text'>
... while we are not holding spinlocks.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fanotify: use both marks when possible</title>
<updated>2010-07-28T14:18:55Z</updated>
<author>
<name>Eric Paris</name>
<email>eparis@redhat.com</email>
</author>
<published>2010-07-28T14:18:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1968f5eed54ce47bde488fd9a450912e4a2d7138'/>
<id>urn:sha1:1968f5eed54ce47bde488fd9a450912e4a2d7138</id>
<content type='text'>
fanotify currently, when given a vfsmount_mark will look up (if it exists)
the corresponding inode mark.  This patch drops that lookup and uses the
mark provided.

Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
</content>
</entry>
<entry>
<title>fsnotify: pass both the vfsmount mark and inode mark</title>
<updated>2010-07-28T14:18:54Z</updated>
<author>
<name>Eric Paris</name>
<email>eparis@redhat.com</email>
</author>
<published>2010-07-28T14:18:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0'/>
<id>urn:sha1:ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0</id>
<content type='text'>
should_send_event() and handle_event() will both need to look up the inode
event if they get a vfsmount event.  Lets just pass both at the same time
since we have them both after walking the lists in lockstep.

Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
</content>
</entry>
<entry>
<title>fsnotify: cleanup should_send_event</title>
<updated>2010-07-28T14:18:53Z</updated>
<author>
<name>Eric Paris</name>
<email>eparis@redhat.com</email>
</author>
<published>2010-07-28T14:18:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2612abb51b11ffd2d75c472b11178115f5808909'/>
<id>urn:sha1:2612abb51b11ffd2d75c472b11178115f5808909</id>
<content type='text'>
The change to use srcu and walk the object list rather than the global
fsnotify_group list means that should_send_event is no longer needed for a
number of groups and can be simplified for others.  Do that.

Signed-off-by: Eric Paris &lt;eparis@redhat.com&gt;
</content>
</entry>
</feed>
