diff --git a/lnet/klnds/iiblnd/iiblnd_cb.c b/lnet/klnds/iiblnd/iiblnd_cb.c
index c3142a1de6e4c30de6c8d3e1e2c64131b20e1949..b9ca6778d76f29ede2488e843a1871b7711861c8 100644
--- a/lnet/klnds/iiblnd/iiblnd_cb.c
+++ b/lnet/klnds/iiblnd/iiblnd_cb.c
@@ -1777,9 +1777,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error)
                 atomic_inc (&conn->ibc_refcount);
         }
         
-        if (list_empty (&peer->ibp_conns) &&
-            peer->ibp_persistence == 0) {
-                /* Non-persistent peer with no more conns... */
+        if (list_empty (&peer->ibp_conns) &&    /* no more conns */
+            peer->ibp_persistence == 0 &&       /* non-persistent peer */
+            kibnal_peer_active(peer)) {         /* still in peer table */
                 kibnal_unlink_peer_locked (peer);
         }
 
diff --git a/lnet/klnds/openiblnd/openiblnd_cb.c b/lnet/klnds/openiblnd/openiblnd_cb.c
index c2929ba7074a0b81197fa944624d86e9b31df73b..0f7a37132078d8e2bcf0f00e681d6809d2f29905 100644
--- a/lnet/klnds/openiblnd/openiblnd_cb.c
+++ b/lnet/klnds/openiblnd/openiblnd_cb.c
@@ -1484,9 +1484,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error)
                 atomic_inc (&conn->ibc_refcount);
         }
         
-        if (list_empty (&peer->ibp_conns) &&
-            peer->ibp_persistence == 0) {
-                /* Non-persistent peer with no more conns... */
+        if (list_empty (&peer->ibp_conns) &&    /* no more conns */
+            peer->ibp_persistence == 0 &&       /* non-persistent peer */
+            kibnal_peer_active(peer)) {         /* still in peer table */
                 kibnal_unlink_peer_locked (peer);
         }
 
diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c
index c3f496ca6f7a01a55e10f4f99a8cd1e3e60a1293..ba021bf58e00868d63d3d552a5f3e28b2caa6994 100644
--- a/lnet/klnds/viblnd/viblnd_cb.c
+++ b/lnet/klnds/viblnd/viblnd_cb.c
@@ -1772,9 +1772,9 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error)
         /* connd takes ibc_list's ref */
         list_del (&conn->ibc_list);
         
-        if (list_empty (&peer->ibp_conns) &&
-            peer->ibp_persistence == 0) {
-                /* Non-persistent peer with no more conns... */
+        if (list_empty (&peer->ibp_conns) &&    /* no more conns */
+            peer->ibp_persistence == 0 &&       /* non-persistent peer */
+            kibnal_peer_active(peer)) {         /* still in peer table */
                 kibnal_unlink_peer_locked (peer);
         }