]> git.baikalelectronics.ru Git - kernel.git/commit
SUNRPC: Prevent an rpc_task wakeup race
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 22 May 2013 16:57:24 +0000 (12:57 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 22 May 2013 18:55:32 +0000 (14:55 -0400)
commit0b73b0fb898824f6fc146a6ccf2129a2459e81e1
treee6d14d14aaed37a5bc28a8a6ebd952a7a42f9aa6
parentd906f27d55e06baec6a5646943a0dcf0489f5ee9
SUNRPC: Prevent an rpc_task wakeup race

The lockless RPC_IS_QUEUED() test in __rpc_execute means that we need to
be careful about ordering the calls to rpc_test_and_set_running(task) and
rpc_clear_queued(task). If we get the order wrong, then we may end up
testing the RPC_TASK_RUNNING flag after __rpc_execute() has looped
and changed the state of the rpc_task.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
net/sunrpc/sched.c