lockd_start_done is a global var that can be reused if lockd is restarted, but it's never reinitialized. On all but the first use, wait_for_completion isn't actually waiting on it since it has already completed once.
Signed-off-by: Jeff Layton <[EMAIL PROTECTED]> --- fs/lockd/svc.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index 82e2192..0f4148a 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -300,6 +300,7 @@ lockd_up(int proto) /* Maybe add a 'family' option when IPv6 is supported ?? */ /* * Create the kernel thread and wait for it to start. */ + init_completion(&lockd_start_done); error = svc_create_thread(lockd, serv); if (error) { printk(KERN_WARNING -- 1.5.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/