summaryrefslogtreecommitdiffstats
path: root/fs/inotify.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2005-10-23 12:57:18 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-23 16:38:39 -0700
commit8d3b35914aa54232b27e6a2b57d84092aadc5e86 (patch)
tree809be8fad6743a751964677e68c5c01af3198e4b /fs/inotify.c
parentc0fef676bbd75e711711ed3ff5bebb7bfd1bdb00 (diff)
downloadlinux-8d3b35914aa54232b27e6a2b57d84092aadc5e86.tar.gz
linux-8d3b35914aa54232b27e6a2b57d84092aadc5e86.tar.bz2
linux-8d3b35914aa54232b27e6a2b57d84092aadc5e86.zip
[PATCH] inotify/idr leak fix
Fix a bug which was reported and diagnosed by Stefan Jones <stefan.jones@churchillrandoms.co.uk> IDR trees include a cache of idr_layer objects. There's no way to destroy this cache, so when we discard an overall idr tree we end up leaking some memory. Add and use idr_destroy() for this. v9fs and infiniband also need to use idr_destroy() to avoid leaks. Or, we make the cache global, like radix_tree_preload(). Which is probably better. Later. Cc: Eric Van Hensbergen <ericvh@ericvh.myip.org> Cc: Roland Dreier <rolandd@cisco.com> Cc: Robert Love <rml@novell.com> Cc: John McCutchan <ttb@tentacle.dhs.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/inotify.c')
-rw-r--r--fs/inotify.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/inotify.c b/fs/inotify.c
index a37e9fb1da58..9fbaebfdf40b 100644
--- a/fs/inotify.c
+++ b/fs/inotify.c
@@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev)
if (atomic_dec_and_test(&dev->count)) {
atomic_dec(&dev->user->inotify_devs);
free_uid(dev->user);
+ idr_destroy(&dev->idr);
kfree(dev);
}
}