|
@@ -939,6 +939,7 @@ nlmsvc_retry_blocked(void)
|
|
|
unsigned long timeout = MAX_SCHEDULE_TIMEOUT;
|
|
|
struct nlm_block *block;
|
|
|
|
|
|
+ spin_lock(&nlm_blocked_lock);
|
|
|
while (!list_empty(&nlm_blocked) && !kthread_should_stop()) {
|
|
|
block = list_entry(nlm_blocked.next, struct nlm_block, b_list);
|
|
|
|
|
@@ -948,6 +949,7 @@ nlmsvc_retry_blocked(void)
|
|
|
timeout = block->b_when - jiffies;
|
|
|
break;
|
|
|
}
|
|
|
+ spin_unlock(&nlm_blocked_lock);
|
|
|
|
|
|
dprintk("nlmsvc_retry_blocked(%p, when=%ld)\n",
|
|
|
block, block->b_when);
|
|
@@ -957,7 +959,9 @@ nlmsvc_retry_blocked(void)
|
|
|
retry_deferred_block(block);
|
|
|
} else
|
|
|
nlmsvc_grant_blocked(block);
|
|
|
+ spin_lock(&nlm_blocked_lock);
|
|
|
}
|
|
|
+ spin_unlock(&nlm_blocked_lock);
|
|
|
|
|
|
return timeout;
|
|
|
}
|