diff options
Diffstat (limited to 'fs/lockd')
| -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 |
4 files changed, 16 insertions, 1 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 = { |
