From a5502be919a8cf2fd5e1bd3da97e67c132f22318 Mon Sep 17 00:00:00 2001 From: Liang Zhen Date: Wed, 27 Feb 2013 15:54:52 +0800 Subject: [PATCH] LU-2745 lnet: fix failure handle of create reply error handler of lnet_create_reply_msg() didn't release lnet_res_lock if lnet_msg_alloc() failed. It can be fixed by moving validation check of msg out from lock. Signed-off-by: Liang Zhen Change-Id: I5a25b7e07d24f5c4f165a3266cca6e79dffc1461 Reviewed-on: http://review.whamcloud.com/7659 Tested-by: Maloo Tested-by: Hudson Reviewed-by: Doug Oucharek Reviewed-by: Isaac Huang Reviewed-by: Oleg Drokin --- lnet/lnet/lib-move.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lnet/lnet/lib-move.c b/lnet/lnet/lib-move.c index 5240aac..b2ce1f7 100644 --- a/lnet/lnet/lib-move.c +++ b/lnet/lnet/lib-move.c @@ -2207,16 +2207,16 @@ lnet_create_reply_msg (lnet_ni_t *ni, lnet_msg_t *getmsg) LASSERT(!getmsg->msg_target_is_router); LASSERT(!getmsg->msg_routing); + if (msg == NULL) { + CERROR("%s: Dropping REPLY from %s: can't allocate msg\n", + libcfs_nid2str(ni->ni_nid), libcfs_id2str(peer_id)); + goto drop; + } + cpt = lnet_cpt_of_cookie(getmd->md_lh.lh_cookie); lnet_res_lock(cpt); - LASSERT (getmd->md_refcount > 0); - - if (msg == NULL) { - CERROR ("%s: Dropping REPLY from %s: can't allocate msg\n", - libcfs_nid2str(ni->ni_nid), libcfs_id2str(peer_id)); - goto drop; - } + LASSERT(getmd->md_refcount > 0); if (getmd->md_threshold == 0) { CERROR ("%s: Dropping REPLY from %s for inactive MD %p\n", -- 1.8.3.1