diff options
Diffstat (limited to 'net/sunrpc/sched.c')
| -rw-r--r-- | net/sunrpc/sched.c | 13 | 
1 files changed, 5 insertions, 8 deletions
| diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 802d4fe0f55..e838d042f7f 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c @@ -515,16 +515,14 @@ struct rpc_task * rpc_wake_up_next(struct rpc_wait_queue *queue)   */  void rpc_wake_up(struct rpc_wait_queue *queue)  { -	struct rpc_task *task; - +	struct rpc_task *task, *next;  	struct list_head *head; +  	spin_lock_bh(&queue->lock);  	head = &queue->tasks[queue->maxpriority];  	for (;;) { -		while (!list_empty(head)) { -			task = list_entry(head->next, struct rpc_task, u.tk_wait.list); +		list_for_each_entry_safe(task, next, head, u.tk_wait.list)  			__rpc_wake_up_task(task); -		}  		if (head == &queue->tasks[0])  			break;  		head--; @@ -541,14 +539,13 @@ void rpc_wake_up(struct rpc_wait_queue *queue)   */  void rpc_wake_up_status(struct rpc_wait_queue *queue, int status)  { +	struct rpc_task *task, *next;  	struct list_head *head; -	struct rpc_task *task;  	spin_lock_bh(&queue->lock);  	head = &queue->tasks[queue->maxpriority];  	for (;;) { -		while (!list_empty(head)) { -			task = list_entry(head->next, struct rpc_task, u.tk_wait.list); +		list_for_each_entry_safe(task, next, head, u.tk_wait.list) {  			task->tk_status = status;  			__rpc_wake_up_task(task);  		} | 
