summaryrefslogtreecommitdiffstats
path: root/fs/autofs4/autofs_i.h
diff options
context:
space:
mode:
authorIan Kent <raven@themaw.net>2008-07-24 06:30:21 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-24 19:47:32 +0200
commit296f7bf78bc5c7a4d772aea580ce800d14040d1a (patch)
tree794e3ae197d75b1a03511fefb4f87ca89caa54ac /fs/autofs4/autofs_i.h
parentautofs4: check kernel communication pipe is valid for write (diff)
downloadlinux-296f7bf78bc5c7a4d772aea580ce800d14040d1a.tar.xz
linux-296f7bf78bc5c7a4d772aea580ce800d14040d1a.zip
autofs4: fix waitq memory leak
If an autofs mount becomes catatonic before autofs4_wait_release() is called the wait queue counter will not be decremented down to zero and the entry will never be freed. There are also races decrementing the wait counter in the wait release function. To deal with this the counter needs to be updated while holding the wait queue mutex and waiters need to be woken up unconditionally when the wait is removed from the queue to ensure we eventually free the wait. Signed-off-by: Ian Kent <raven@themaw.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/autofs4/autofs_i.h')
-rw-r--r--fs/autofs4/autofs_i.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index da8882ff31e6..058e1800caec 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -84,7 +84,7 @@ struct autofs_wait_queue {
pid_t tgid;
/* This is for status reporting upon return */
int status;
- atomic_t wait_ctr;
+ unsigned int wait_ctr;
};
#define AUTOFS_SBI_MAGIC 0x6d4a556d