summaryrefslogtreecommitdiff
path: root/Kconfig
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2014-02-17 15:01:47 (GMT)
committerJiri Slaby <jslaby@suse.cz>2014-04-03 08:32:20 (GMT)
commitc8a3d3bcd7dc2893790c38695a8ecd79c4fbad99 (patch)
tree4f2e58c6ed5847fd65222ebf8da71ff947f7209f /Kconfig
parent67ea60618db0ee32fb9fb37050e467612959d060 (diff)
downloadlinux-fsl-qoriq-c8a3d3bcd7dc2893790c38695a8ecd79c4fbad99.tar.xz
FS-Cache: Handle removal of unadded object to the fscache_object_list rb tree
commit 7026f1929e18921fd67bf478f475a8fdfdff16ae upstream. When FS-Cache allocates an object, the following sequence of events can occur: -->fscache_alloc_object() -->cachefiles_alloc_object() [via cache->ops->alloc_object] <--[returns new object] -->fscache_attach_object() <--[failed] -->cachefiles_put_object() [via cache->ops->put_object] -->fscache_object_destroy() -->fscache_objlist_remove() -->rb_erase() to remove the object from fscache_object_list. resulting in a crash in the rbtree code. The problem is that the object is only added to fscache_object_list on the success path of fscache_attach_object() where it calls fscache_objlist_add(). So if fscache_attach_object() fails, the object won't have been added to the objlist rbtree. We do, however, unconditionally try to remove the object from the tree. Thanks to NeilBrown for finding this and suggesting this solution. Reported-by: NeilBrown <neilb@suse.de> Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: (a customer of) NeilBrown <neilb@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'Kconfig')
0 files changed, 0 insertions, 0 deletions