summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/rpc/clnt_cots.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/usr/src/uts/common/rpc/clnt_cots.c b/usr/src/uts/common/rpc/clnt_cots.c
index bf47961d9f..12f794bd94 100644
--- a/usr/src/uts/common/rpc/clnt_cots.c
+++ b/usr/src/uts/common/rpc/clnt_cots.c
@@ -1775,6 +1775,17 @@ use_new_conn:
*/
if ((cm_entry->x_state_flags & (X_DEAD|X_THREAD)) ==
X_DEAD) {
+ mutex_enter(&cm_entry->x_lock);
+ if (cm_entry->x_ref != 0) {
+ /*
+ * Currently in use.
+ * Cleanup later.
+ */
+ cmp = &cm_entry->x_next;
+ mutex_exit(&cm_entry->x_lock);
+ continue;
+ }
+ mutex_exit(&cm_entry->x_lock);
*cmp = cm_entry->x_next;
mutex_exit(&connmgr_lock);
connmgr_close(cm_entry);