From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Jeff Layton <jlayton@redhat.com>
Cc: nfsv4@linux-nfs.org, linux-nfs@vger.kernel.org,
Daniel J Blueman <daniel.blueman@gmail.com>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [2.6.26-rc4] mount.nfsv4/memory poisoning issues...
Date: Tue, 10 Jun 2008 17:37:56 -0400 [thread overview]
Message-ID: <1213133876.20459.91.camel@localhost> (raw)
In-Reply-To: <20080610170154.68e2e6fb@tleilax.poochiereds.net>
On Tue, 2008-06-10 at 17:01 -0400, Jeff Layton wrote:
> In practice, I think the thread generally runs immediately (at least
> with current scheduler behavior), so we're probably not terribly
> vulnerable to this race. Still, we shouldn't rely on that...
In the code I showed you, the 'kthread' task is put to sleep, then
kthread_run() calls wake_up_process() on it, but the current task isn't
scheduled out. Rather, it continues to run, so in almost all UP cases,
the race is not only possible, it is actually rather likely if
nfs_alloc_client() fails.
> For lockd and the nfs4 callback thread, we'll also need to deal with
> the fact that svc_exit_thread() doesn't get called if this happens. So
> we'll need to call svc_exit_thread from the *_down() functions too
> (I presume that's OK).
These *_up()/*_down() functions are getting very complex. Any chance we
could hide some of this complexity in some helpers? Looking at the NFSv4
callback code and lockd, it seems that there might be a couple of
opportunities for merging code.
> nfsd is a bigger problem since it exits on a signal. For that, perhaps
> we should declare a completion variable and have svc_set_num_threads()
> wait until nfsd() has actually run before continuing.
nfsd doesn't use kthreads, does it?
WARNING: multiple messages have this Message-ID (diff)
From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Jeff Layton <jlayton@redhat.com>
Cc: Daniel J Blueman <daniel.blueman@gmail.com>,
linux-nfs@vger.kernel.org, nfsv4@linux-nfs.org,
Linux Kernel <linux-kernel@vger.kernel.org>,
bfields@fieldses.org
Subject: Re: [2.6.26-rc4] mount.nfsv4/memory poisoning issues...
Date: Tue, 10 Jun 2008 17:37:56 -0400 [thread overview]
Message-ID: <1213133876.20459.91.camel@localhost> (raw)
In-Reply-To: <20080610170154.68e2e6fb@tleilax.poochiereds.net>
On Tue, 2008-06-10 at 17:01 -0400, Jeff Layton wrote:
> In practice, I think the thread generally runs immediately (at least
> with current scheduler behavior), so we're probably not terribly
> vulnerable to this race. Still, we shouldn't rely on that...
In the code I showed you, the 'kthread' task is put to sleep, then
kthread_run() calls wake_up_process() on it, but the current task isn't
scheduled out. Rather, it continues to run, so in almost all UP cases,
the race is not only possible, it is actually rather likely if
nfs_alloc_client() fails.
> For lockd and the nfs4 callback thread, we'll also need to deal with
> the fact that svc_exit_thread() doesn't get called if this happens. So
> we'll need to call svc_exit_thread from the *_down() functions too
> (I presume that's OK).
These *_up()/*_down() functions are getting very complex. Any chance we
could hide some of this complexity in some helpers? Looking at the NFSv4
callback code and lockd, it seems that there might be a couple of
opportunities for merging code.
> nfsd is a bigger problem since it exits on a signal. For that, perhaps
> we should declare a completion variable and have svc_set_num_threads()
> wait until nfsd() has actually run before continuing.
nfsd doesn't use kthreads, does it?
next prev parent reply other threads:[~2008-06-10 21:37 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-04 23:33 [2.6.26-rc4] mount.nfsv4/memory poisoning issues Daniel J Blueman
2008-06-04 23:33 ` Daniel J Blueman
[not found] ` <6278d2220806041633n3bfe3dd2ke9602697697228b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-04 23:43 ` Chuck Lever
2008-06-04 23:43 ` Chuck Lever
[not found] ` <76bd70e30806041643j4d632a6exf64b29c34173d40f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-15 18:10 ` Daniel J Blueman
2008-06-15 18:10 ` Daniel J Blueman
2008-06-16 16:17 ` Chuck Lever
2008-06-16 16:17 ` Chuck Lever
[not found] ` <6278d2220806151110x68ee91fej8cf8e6b591ce1319-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-19 12:14 ` Jeff Layton
2008-06-19 12:14 ` Jeff Layton
[not found] ` <20080619081420.24645bc4-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-06-19 12:37 ` Daniel J Blueman
2008-06-19 12:37 ` Daniel J Blueman
[not found] ` <6278d2220806190537u7b781309q415f904390e02f3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-19 17:32 ` Chuck Lever
2008-06-19 17:32 ` Chuck Lever
2008-06-05 0:35 ` Jeff Layton
2008-06-05 8:28 ` Daniel J Blueman
[not found] ` <6278d2220806050128x6e892df3p1632d6ae6b40b55b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 10:32 ` Jeff Layton
2008-06-05 10:32 ` Jeff Layton
[not found] ` <20080604203504.62730951-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-06-10 18:54 ` Trond Myklebust
2008-06-10 18:54 ` Trond Myklebust
2008-06-10 19:13 ` Jeff Layton
[not found] ` <20080610151357.150b6f69-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-06-10 19:18 ` Jeff Layton
2008-06-10 19:18 ` Jeff Layton
[not found] ` <20080610151829.3c4d6c1e-RtJpwOs3+0O+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2008-06-10 20:27 ` Daniel J Blueman
2008-06-10 20:27 ` Daniel J Blueman
2008-06-18 12:07 ` Jeff Layton
2008-06-18 12:07 ` Jeff Layton
2008-06-21 17:52 ` Daniel J Blueman
2008-06-21 17:52 ` Daniel J Blueman
2008-06-10 19:58 ` Trond Myklebust
2008-06-10 19:58 ` Trond Myklebust
2008-06-10 20:13 ` Jeff Layton
2008-06-10 20:33 ` Trond Myklebust
2008-06-10 20:33 ` Trond Myklebust
2008-06-10 20:41 ` Jeff Layton
2008-06-10 20:41 ` Jeff Layton
2008-06-10 21:01 ` Jeff Layton
2008-06-10 21:01 ` Jeff Layton
2008-06-10 21:37 ` Trond Myklebust [this message]
2008-06-10 21:37 ` Trond Myklebust
2008-06-10 22:04 ` Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1213133876.20459.91.camel@localhost \
--to=trond.myklebust@fys.uio.no \
--cc=daniel.blueman@gmail.com \
--cc=jlayton@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=nfsv4@linux-nfs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.