diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2008-05-12 17:02:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-13 11:02:26 -0400 |
commit | 43f14d856f013a4cc63da2c765617c665274338c (patch) | |
tree | f43026859c7fb6c6d9268fb0d6ff05fecb002652 /fs | |
parent | d850a2fac11e4dd45d1d3d493a5a071b06c58c99 (diff) |
eCryptFS: fix imbalanced mutex locking
Fix imbalanced calls for mutex lock/unlock on ecryptfs_daemon_hash_mux
Revealed by Ingo Molnar: http://lkml.org/lkml/2008/5/7/260
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Michael Halcrow <mhalcrow@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ecryptfs/miscdev.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c index 788995efd1d3..6560da1a58ce 100644 --- a/fs/ecryptfs/miscdev.c +++ b/fs/ecryptfs/miscdev.c | |||
@@ -257,12 +257,14 @@ ecryptfs_miscdev_read(struct file *file, char __user *buf, size_t count, | |||
257 | mutex_lock(&daemon->mux); | 257 | mutex_lock(&daemon->mux); |
258 | if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) { | 258 | if (daemon->flags & ECRYPTFS_DAEMON_ZOMBIE) { |
259 | rc = 0; | 259 | rc = 0; |
260 | mutex_unlock(&ecryptfs_daemon_hash_mux); | ||
260 | printk(KERN_WARNING "%s: Attempt to read from zombified " | 261 | printk(KERN_WARNING "%s: Attempt to read from zombified " |
261 | "daemon\n", __func__); | 262 | "daemon\n", __func__); |
262 | goto out_unlock_daemon; | 263 | goto out_unlock_daemon; |
263 | } | 264 | } |
264 | if (daemon->flags & ECRYPTFS_DAEMON_IN_READ) { | 265 | if (daemon->flags & ECRYPTFS_DAEMON_IN_READ) { |
265 | rc = 0; | 266 | rc = 0; |
267 | mutex_unlock(&ecryptfs_daemon_hash_mux); | ||
266 | goto out_unlock_daemon; | 268 | goto out_unlock_daemon; |
267 | } | 269 | } |
268 | /* This daemon will not go away so long as this flag is set */ | 270 | /* This daemon will not go away so long as this flag is set */ |