linux-hardened/fs/notify
Eric Paris e08733446e inotify: race use after free/double free in inotify inode marks
There is a race in the inotify add/rm watch code.  A task can find and
remove a mark which doesn't have all of it's references.  This can
result in a use after free/double free situation.

Task A					Task B
------------				-----------
inotify_new_watch()
 allocate a mark (refcnt == 1)
 add it to the idr
					inotify_rm_watch()
					 inotify_remove_from_idr()
					  fsnotify_put_mark()
					      refcnt hits 0, free
 take reference because we are on idr
 [at this point it is a use after free]
 [time goes on]
 refcnt may hit 0 again, double free

The fix is to take the reference BEFORE the object can be found in the
idr.

Signed-off-by: Eric Paris <eparis@redhat.com>
Cc: <stable@kernel.org>
2010-05-14 11:52:57 -04:00
..
dnotify dnotify: ignore FS_EVENT_ON_CHILD 2009-10-20 18:02:33 -04:00
inotify inotify: race use after free/double free in inotify inode marks 2010-05-14 11:52:57 -04:00
fsnotify.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
fsnotify.h fsnotify: generic notification queue and waitq 2009-06-11 14:57:53 -04:00
group.c fsnotify: generic notification queue and waitq 2009-06-11 14:57:53 -04:00
inode_mark.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Kconfig fsnotify: use def_bool in kconfig instead of letting the user choose 2009-07-21 15:26:26 -04:00
Makefile fsnotify: add marks to inodes so groups can interpret how to handle those inodes 2009-06-11 14:57:53 -04:00
notification.c inotify: fix coalesce duplicate events into a single event in special case 2009-10-18 15:49:38 -04:00