• Trond Myklebust's avatar
    SUNRPC: Tighten up the task locking rules in __rpc_execute() · eb9b55ab
    Trond Myklebust authored
    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: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    eb9b55ab
sched.c 25.6 KB