diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-03-10 20:33:16 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-03-10 20:33:16 -0400 |
commit | eb9b55ab4d73280597fd183b367d50452f4d7846 (patch) | |
tree | 80e0c4e5315ea5fd18bb5ba9d37ec5f77170631a /fs | |
parent | 16b71fdf97599f1b1b7f38418ee9922d9f117396 (diff) | |
download | linux-3.10-eb9b55ab4d73280597fd183b367d50452f4d7846.tar.gz linux-3.10-eb9b55ab4d73280597fd183b367d50452f4d7846.tar.bz2 linux-3.10-eb9b55ab4d73280597fd183b367d50452f4d7846.zip |
SUNRPC: Tighten up the task locking rules in __rpc_execute()
We should probably not be testing any flags after we've cleared the
RPC_TASK_RUNNING flag, since rpc_make_runnable() is then free to assign the
rpc_task to another workqueue, which may then destroy it.
We can fix any races with rpc_make_runnable() by ensuring that we only
clear the RPC_TASK_RUNNING flag while holding the rpc_wait_queue->lock that
the task is supposed to be sleeping on (and then checking whether or not
the task really is sleeping).
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
0 files changed, 0 insertions, 0 deletions