From: huanghua Date: Thu, 7 Aug 2008 03:05:34 +0000 (+0000) Subject: Branch HEAD X-Git-Tag: v1_9_50~60 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=ee76a126ac1e5c91acb84fc90b83d504d4e38942;p=fs%2Flustre-release.git Branch HEAD b=16575 i=tappro i=nikita.danilov correct error handling in cmm_add_mdc() --- diff --git a/lustre/cmm/cmm_device.c b/lustre/cmm/cmm_device.c index 8ecd3e4..9154dfc 100644 --- a/lustre/cmm/cmm_device.c +++ b/lustre/cmm/cmm_device.c @@ -190,17 +190,23 @@ static int cmm_add_mdc(const struct lu_env *env, } spin_unlock(&cm->cmm_tgt_guard); ld = ldt->ldt_ops->ldto_device_alloc(env, ldt, cfg); + if (IS_ERR(ld)) + RETURN(PTR_ERR(ld)); + ld->ld_site = cmm2lu_dev(cm)->ld_site; rc = ldt->ldt_ops->ldto_device_init(env, ld, NULL, NULL); if (rc) { ldt->ldt_ops->ldto_device_free(env, ld); - RETURN (rc); + RETURN(rc); } /* pass config to the just created MDC */ rc = ld->ld_ops->ldo_process_config(env, ld, cfg); - if (rc) + if (rc) { + ldt->ldt_ops->ldto_device_fini(env, ld); + ldt->ldt_ops->ldto_device_free(env, ld); RETURN(rc); + } spin_lock(&cm->cmm_tgt_guard); list_for_each_entry_safe(mc, tmp, &cm->cmm_targets,