diff options
author | agiri <none@none> | 2007-10-10 09:28:54 -0700 |
---|---|---|
committer | agiri <none@none> | 2007-10-10 09:28:54 -0700 |
commit | 2e8bde70d0141390208fe321bf3a9e4f043b5587 (patch) | |
tree | 57f82d0c76b7453b45fc5e721239165b66dbc625 /usr/src | |
parent | 1a6921e0a06eec4387aac4c955214dd83b01028d (diff) | |
download | illumos-joyent-2e8bde70d0141390208fe321bf3a9e4f043b5587.tar.gz |
6610415 fix to CR 6597119 failed (another panic in daplt)
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/io/ib/mgt/ibcm/ibcm_ti.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/ib/mgt/ibcm/ibcm_ti.c b/usr/src/uts/common/io/ib/mgt/ibcm/ibcm_ti.c index 9f212a84a0..e2853ed338 100644 --- a/usr/src/uts/common/io/ib/mgt/ibcm/ibcm_ti.c +++ b/usr/src/uts/common/io/ib/mgt/ibcm/ibcm_ti.c @@ -1243,6 +1243,21 @@ ibt_close_rc_channel(ibt_channel_hdl_t channel, ibt_execution_mode_t mode, if (ret_priv_data_len_p != NULL) *ret_priv_data_len_p = 0; + if ((mode == IBT_BLOCKING) || + (mode == IBT_NOCALLBACKS)) { + IBCM_GET_CHAN_PRIVATE(channel, statep); + if (statep == NULL) + return (IBT_SUCCESS); + mutex_enter(&statep->state_mutex); + IBCM_RELEASE_CHAN_PRIVATE(channel); + IBCM_REF_CNT_INCR(statep); + while (statep->close_done != B_TRUE) + cv_wait(&statep->block_client_cv, + &statep->state_mutex); + IBCM_REF_CNT_DECR(statep); + mutex_exit(&statep->state_mutex); + } + IBTF_DPRINTF_L3(cmlog, "ibt_close_rc_channel: chan 0x%p " "already marked for closing", channel); |