Whamcloud - gitweb
LU-10656 ldlm: fix export reference 36/31636/4
authorHongchao Zhang <hongchao.zhang@intel.com>
Sun, 28 Jan 2018 19:25:42 +0000 (03:25 +0800)
committerJohn L. Hammond <john.hammond@intel.com>
Thu, 3 May 2018 18:16:53 +0000 (18:16 +0000)
In ptlrpc_connect_interpert, the export reference could be
leaked if there is error before the following class_exp_put.

Lustre-change: https://review.whamcloud.com/31139
Lustre-commit: e52f2ea40e55d13b2f14fccd04959584c9022dbd

Change-Id: I9ddd82fa1bbf8e17079e9746202be63e6233c052
Signed-off-by: Hongchao Zhang <hongchao.zhang@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/31636
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
lustre/ptlrpc/import.c

index 65938cc..8338095 100644 (file)
@@ -985,7 +985,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
         __u64 old_connect_flags;
         int msg_flags;
        struct obd_connect_data *ocd;
-       struct obd_export *exp;
+       struct obd_export *exp = NULL;
        int ret;
        ENTRY;
 
@@ -1110,6 +1110,8 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
        rc = ptlrpc_connect_set_flags(imp, ocd, old_connect_flags, exp,
                                      aa->pcaa_initial_connect);
        class_export_put(exp);
+       exp = NULL;
+
        if (rc != 0)
                GOTO(out, rc);
 
@@ -1281,6 +1283,9 @@ out:
        imp->imp_connect_tried = 1;
        spin_unlock(&imp->imp_lock);
 
+       if (exp != NULL)
+               class_export_put(exp);
+
         if (rc != 0) {
                 IMPORT_SET_STATE(imp, LUSTRE_IMP_DISCON);
                 if (rc == -EACCES) {