From c86706db4d0c81bd406411d1e97e3f190e04fbad Mon Sep 17 00:00:00 2001 From: shadow Date: Fri, 15 May 2009 09:18:56 +0000 Subject: [PATCH] Don't leak lov_lock at lov_add_target Branch HEAD b=18868 i=tappro i=johann --- lustre/lov/lov_obd.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index d7ce626..b3f873c 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -580,6 +580,13 @@ int lov_add_target(struct obd_device *obd, struct obd_uuid *uuidp, RETURN(-ENOMEM); } + rc = lov_ost_pool_add(&lov->lov_packed, index, lov->lov_tgt_size); + if (rc) { + mutex_up(&lov->lov_lock); + OBD_FREE_PTR(tgt); + RETURN(rc); + } + memset(tgt, 0, sizeof(*tgt)); tgt->ltd_uuid = *uuidp; tgt->ltd_obd = tgt_obd; @@ -591,10 +598,6 @@ int lov_add_target(struct obd_device *obd, struct obd_uuid *uuidp, if (index >= lov->desc.ld_tgt_count) lov->desc.ld_tgt_count = index + 1; - rc = lov_ost_pool_add(&lov->lov_packed, index, lov->lov_tgt_size); - if (rc) - RETURN(rc); - mutex_up(&lov->lov_lock); CDEBUG(D_CONFIG, "idx=%d ltd_gen=%d ld_tgt_count=%d\n", -- 1.8.3.1