From 9eb9cf14ee78a858b095967be2068051ee68faa6 Mon Sep 17 00:00:00 2001
From: eeb <eeb>
Date: Wed, 9 Feb 2005 12:33:10 +0000
Subject: [PATCH] *   Bug 5676 fix: keep extra ref on peer until all done in   
  ksocknal_del_peer_locked CVS:

---
 lnet/klnds/socklnd/socklnd.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c
index 07078ca59a..6a71d07e6b 100644
--- a/lnet/klnds/socklnd/socklnd.c
+++ b/lnet/klnds/socklnd/socklnd.c
@@ -499,6 +499,9 @@ ksocknal_del_peer_locked (ksock_peer_t *peer, __u32 ip, int single_share)
 
         LASSERT (!peer->ksnp_closing);
 
+        /* Extra ref prevents peer disappearing until I'm done with it */
+        atomic_inc(&peer->ksnp_refcount);
+
         list_for_each_safe (tmp, nxt, &peer->ksnp_routes) {
                 route = list_entry(tmp, ksock_route_t, ksnr_list);
 
@@ -548,6 +551,7 @@ ksocknal_del_peer_locked (ksock_peer_t *peer, __u32 ip, int single_share)
                 }
         }
 
+        ksocknal_put_peer(peer);
         /* NB peer unlinks itself when last conn/route is removed */
 }
 
-- 
GitLab