diff options
Diffstat (limited to 'net/sunrpc')
| -rw-r--r-- | net/sunrpc/clnt.c | 3 | ||||
| -rw-r--r-- | net/sunrpc/sched.c | 13 |
2 files changed, 7 insertions, 9 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index d2f0550c4ba0..d78479782045 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
| @@ -113,7 +113,7 @@ rpc_new_client(struct rpc_xprt *xprt, char *servname, | |||
| 113 | 113 | ||
| 114 | err = -EINVAL; | 114 | err = -EINVAL; |
| 115 | if (!xprt) | 115 | if (!xprt) |
| 116 | goto out_err; | 116 | goto out_no_xprt; |
| 117 | if (vers >= program->nrvers || !(version = program->version[vers])) | 117 | if (vers >= program->nrvers || !(version = program->version[vers])) |
| 118 | goto out_err; | 118 | goto out_err; |
| 119 | 119 | ||
| @@ -182,6 +182,7 @@ out_no_path: | |||
| 182 | kfree(clnt); | 182 | kfree(clnt); |
| 183 | out_err: | 183 | out_err: |
| 184 | xprt_destroy(xprt); | 184 | xprt_destroy(xprt); |
| 185 | out_no_xprt: | ||
| 185 | return ERR_PTR(err); | 186 | return ERR_PTR(err); |
| 186 | } | 187 | } |
| 187 | 188 | ||
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 802d4fe0f55c..e838d042f7f5 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) | |||
| 515 | */ | 515 | */ |
| 516 | void rpc_wake_up(struct rpc_wait_queue *queue) | 516 | void rpc_wake_up(struct rpc_wait_queue *queue) |
| 517 | { | 517 | { |
| 518 | struct rpc_task *task; | 518 | struct rpc_task *task, *next; |
| 519 | |||
| 520 | struct list_head *head; | 519 | struct list_head *head; |
| 520 | |||
| 521 | spin_lock_bh(&queue->lock); | 521 | spin_lock_bh(&queue->lock); |
| 522 | head = &queue->tasks[queue->maxpriority]; | 522 | head = &queue->tasks[queue->maxpriority]; |
| 523 | for (;;) { | 523 | for (;;) { |
| 524 | while (!list_empty(head)) { | 524 | list_for_each_entry_safe(task, next, head, u.tk_wait.list) |
| 525 | task = list_entry(head->next, struct rpc_task, u.tk_wait.list); | ||
| 526 | __rpc_wake_up_task(task); | 525 | __rpc_wake_up_task(task); |
| 527 | } | ||
| 528 | if (head == &queue->tasks[0]) | 526 | if (head == &queue->tasks[0]) |
| 529 | break; | 527 | break; |
| 530 | head--; | 528 | head--; |
| @@ -541,14 +539,13 @@ void rpc_wake_up(struct rpc_wait_queue *queue) | |||
| 541 | */ | 539 | */ |
| 542 | void rpc_wake_up_status(struct rpc_wait_queue *queue, int status) | 540 | void rpc_wake_up_status(struct rpc_wait_queue *queue, int status) |
| 543 | { | 541 | { |
| 542 | struct rpc_task *task, *next; | ||
| 544 | struct list_head *head; | 543 | struct list_head *head; |
| 545 | struct rpc_task *task; | ||
| 546 | 544 | ||
| 547 | spin_lock_bh(&queue->lock); | 545 | spin_lock_bh(&queue->lock); |
| 548 | head = &queue->tasks[queue->maxpriority]; | 546 | head = &queue->tasks[queue->maxpriority]; |
| 549 | for (;;) { | 547 | for (;;) { |
| 550 | while (!list_empty(head)) { | 548 | list_for_each_entry_safe(task, next, head, u.tk_wait.list) { |
| 551 | task = list_entry(head->next, struct rpc_task, u.tk_wait.list); | ||
| 552 | task->tk_status = status; | 549 | task->tk_status = status; |
| 553 | __rpc_wake_up_task(task); | 550 | __rpc_wake_up_task(task); |
| 554 | } | 551 | } |
