diff options
| -rw-r--r-- | fs/lockd/clntproc.c | 6 | ||||
| -rw-r--r-- | fs/lockd/svc4proc.c | 2 | ||||
| -rw-r--r-- | fs/lockd/svclock.c | 7 | ||||
| -rw-r--r-- | fs/lockd/svcproc.c | 2 | ||||
| -rw-r--r-- | net/sunrpc/sched.c | 9 |
5 files changed, 17 insertions, 9 deletions
diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c index fd7d4669776e..1f6dc518505c 100644 --- a/fs/lockd/clntproc.c +++ b/fs/lockd/clntproc.c | |||
| @@ -224,7 +224,9 @@ void nlm_release_call(struct nlm_rqst *call) | |||
| 224 | 224 | ||
| 225 | static void nlmclnt_rpc_release(void *data) | 225 | static void nlmclnt_rpc_release(void *data) |
| 226 | { | 226 | { |
| 227 | lock_kernel(); | ||
| 227 | nlm_release_call(data); | 228 | nlm_release_call(data); |
| 229 | unlock_kernel(); | ||
| 228 | } | 230 | } |
| 229 | 231 | ||
| 230 | static int nlm_wait_on_grace(wait_queue_head_t *queue) | 232 | static int nlm_wait_on_grace(wait_queue_head_t *queue) |
| @@ -710,7 +712,9 @@ static void nlmclnt_unlock_callback(struct rpc_task *task, void *data) | |||
| 710 | die: | 712 | die: |
| 711 | return; | 713 | return; |
| 712 | retry_rebind: | 714 | retry_rebind: |
| 715 | lock_kernel(); | ||
| 713 | nlm_rebind_host(req->a_host); | 716 | nlm_rebind_host(req->a_host); |
| 717 | unlock_kernel(); | ||
| 714 | retry_unlock: | 718 | retry_unlock: |
| 715 | rpc_restart_call(task); | 719 | rpc_restart_call(task); |
| 716 | } | 720 | } |
| @@ -788,7 +792,9 @@ retry_cancel: | |||
| 788 | /* Don't ever retry more than 3 times */ | 792 | /* Don't ever retry more than 3 times */ |
| 789 | if (req->a_retries++ >= NLMCLNT_MAX_RETRIES) | 793 | if (req->a_retries++ >= NLMCLNT_MAX_RETRIES) |
| 790 | goto die; | 794 | goto die; |
| 795 | lock_kernel(); | ||
| 791 | nlm_rebind_host(req->a_host); | 796 | nlm_rebind_host(req->a_host); |
| 797 | unlock_kernel(); | ||
| 792 | rpc_restart_call(task); | 798 | rpc_restart_call(task); |
| 793 | rpc_delay(task, 30 * HZ); | 799 | rpc_delay(task, 30 * HZ); |
| 794 | } | 800 | } |
diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c index 385437e3387d..2e27176ff42f 100644 --- a/fs/lockd/svc4proc.c +++ b/fs/lockd/svc4proc.c | |||
| @@ -248,7 +248,9 @@ static void nlm4svc_callback_exit(struct rpc_task *task, void *data) | |||
| 248 | 248 | ||
| 249 | static void nlm4svc_callback_release(void *data) | 249 | static void nlm4svc_callback_release(void *data) |
| 250 | { | 250 | { |
| 251 | lock_kernel(); | ||
| 251 | nlm_release_call(data); | 252 | nlm_release_call(data); |
| 253 | unlock_kernel(); | ||
| 252 | } | 254 | } |
| 253 | 255 | ||
| 254 | static const struct rpc_call_ops nlm4svc_callback_ops = { | 256 | static const struct rpc_call_ops nlm4svc_callback_ops = { |
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 81aca859bfde..56a08ab9a4cb 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c | |||
| @@ -795,6 +795,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data) | |||
| 795 | 795 | ||
| 796 | dprintk("lockd: GRANT_MSG RPC callback\n"); | 796 | dprintk("lockd: GRANT_MSG RPC callback\n"); |
| 797 | 797 | ||
| 798 | lock_kernel(); | ||
| 798 | /* if the block is not on a list at this point then it has | 799 | /* if the block is not on a list at this point then it has |
| 799 | * been invalidated. Don't try to requeue it. | 800 | * been invalidated. Don't try to requeue it. |
| 800 | * | 801 | * |
| @@ -804,7 +805,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data) | |||
| 804 | * for nlm_blocked? | 805 | * for nlm_blocked? |
| 805 | */ | 806 | */ |
| 806 | if (list_empty(&block->b_list)) | 807 | if (list_empty(&block->b_list)) |
| 807 | return; | 808 | goto out; |
| 808 | 809 | ||
| 809 | /* Technically, we should down the file semaphore here. Since we | 810 | /* Technically, we should down the file semaphore here. Since we |
| 810 | * move the block towards the head of the queue only, no harm | 811 | * move the block towards the head of the queue only, no harm |
| @@ -818,13 +819,17 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data) | |||
| 818 | } | 819 | } |
| 819 | nlmsvc_insert_block(block, timeout); | 820 | nlmsvc_insert_block(block, timeout); |
| 820 | svc_wake_up(block->b_daemon); | 821 | svc_wake_up(block->b_daemon); |
| 822 | out: | ||
| 823 | unlock_kernel(); | ||
| 821 | } | 824 | } |
| 822 | 825 | ||
| 823 | static void nlmsvc_grant_release(void *data) | 826 | static void nlmsvc_grant_release(void *data) |
| 824 | { | 827 | { |
| 825 | struct nlm_rqst *call = data; | 828 | struct nlm_rqst *call = data; |
| 826 | 829 | ||
| 830 | lock_kernel(); | ||
| 827 | nlmsvc_release_block(call->a_block); | 831 | nlmsvc_release_block(call->a_block); |
| 832 | unlock_kernel(); | ||
| 828 | } | 833 | } |
| 829 | 834 | ||
| 830 | static const struct rpc_call_ops nlmsvc_grant_ops = { | 835 | static const struct rpc_call_ops nlmsvc_grant_ops = { |
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c index 88379cc6e0b1..ce6952b50a75 100644 --- a/fs/lockd/svcproc.c +++ b/fs/lockd/svcproc.c | |||
| @@ -278,7 +278,9 @@ static void nlmsvc_callback_exit(struct rpc_task *task, void *data) | |||
| 278 | 278 | ||
| 279 | static void nlmsvc_callback_release(void *data) | 279 | static void nlmsvc_callback_release(void *data) |
| 280 | { | 280 | { |
| 281 | lock_kernel(); | ||
| 281 | nlm_release_call(data); | 282 | nlm_release_call(data); |
| 283 | unlock_kernel(); | ||
| 282 | } | 284 | } |
| 283 | 285 | ||
| 284 | static const struct rpc_call_ops nlmsvc_callback_ops = { | 286 | static const struct rpc_call_ops nlmsvc_callback_ops = { |
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 6288af05c20f..385f427bedad 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
| @@ -576,9 +576,7 @@ EXPORT_SYMBOL_GPL(rpc_delay); | |||
| 576 | */ | 576 | */ |
| 577 | static void rpc_prepare_task(struct rpc_task *task) | 577 | static void rpc_prepare_task(struct rpc_task *task) |
| 578 | { | 578 | { |
| 579 | lock_kernel(); | ||
| 580 | task->tk_ops->rpc_call_prepare(task, task->tk_calldata); | 579 | task->tk_ops->rpc_call_prepare(task, task->tk_calldata); |
| 581 | unlock_kernel(); | ||
| 582 | } | 580 | } |
| 583 | 581 | ||
| 584 | /* | 582 | /* |
| @@ -588,9 +586,7 @@ void rpc_exit_task(struct rpc_task *task) | |||
| 588 | { | 586 | { |
| 589 | task->tk_action = NULL; | 587 | task->tk_action = NULL; |
| 590 | if (task->tk_ops->rpc_call_done != NULL) { | 588 | if (task->tk_ops->rpc_call_done != NULL) { |
| 591 | lock_kernel(); | ||
| 592 | task->tk_ops->rpc_call_done(task, task->tk_calldata); | 589 | task->tk_ops->rpc_call_done(task, task->tk_calldata); |
| 593 | unlock_kernel(); | ||
| 594 | if (task->tk_action != NULL) { | 590 | if (task->tk_action != NULL) { |
| 595 | WARN_ON(RPC_ASSASSINATED(task)); | 591 | WARN_ON(RPC_ASSASSINATED(task)); |
| 596 | /* Always release the RPC slot and buffer memory */ | 592 | /* Always release the RPC slot and buffer memory */ |
| @@ -602,11 +598,8 @@ EXPORT_SYMBOL_GPL(rpc_exit_task); | |||
| 602 | 598 | ||
| 603 | void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata) | 599 | void rpc_release_calldata(const struct rpc_call_ops *ops, void *calldata) |
| 604 | { | 600 | { |
| 605 | if (ops->rpc_release != NULL) { | 601 | if (ops->rpc_release != NULL) |
| 606 | lock_kernel(); | ||
| 607 | ops->rpc_release(calldata); | 602 | ops->rpc_release(calldata); |
| 608 | unlock_kernel(); | ||
| 609 | } | ||
| 610 | } | 603 | } |
| 611 | 604 | ||
| 612 | /* | 605 | /* |
