diff options
| author | maheshvs <none@none> | 2006-10-30 15:49:38 -0800 |
|---|---|---|
| committer | maheshvs <none@none> | 2006-10-30 15:49:38 -0800 |
| commit | 8f7c43ea4fce8efe0ba29f7acf163c28339d8d06 (patch) | |
| tree | 6db52ba47d5e481a6beb926bcf59153e652545f7 /usr/src | |
| parent | 68a5ac4d8bc02069d3928cb7cb89af02ef40ddc5 (diff) | |
| download | illumos-joyent-8f7c43ea4fce8efe0ba29f7acf163c28339d8d06.tar.gz | |
6444746 connmgr_dis_and_wait() loops forever preventing zone shutdown
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/uts/common/rpc/clnt_cots.c | 11 |
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); |
