In o2net_init, if malloc failed, it directly returns -ENOMEM.  Then
o2quo_exit won't be called in init_o2nm.
Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Reviewed-by: joyce.xue <xuejiufei@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
        o2quo_init();
 
        if (o2net_debugfs_init())
-               return -ENOMEM;
+               goto out;
 
        o2net_hand = kzalloc(sizeof(struct o2net_handshake), GFP_KERNEL);
        o2net_keep_req = kzalloc(sizeof(struct o2net_msg), GFP_KERNEL);
        o2net_keep_resp = kzalloc(sizeof(struct o2net_msg), GFP_KERNEL);
-       if (!o2net_hand || !o2net_keep_req || !o2net_keep_resp) {
-               kfree(o2net_hand);
-               kfree(o2net_keep_req);
-               kfree(o2net_keep_resp);
-               return -ENOMEM;
-       }
+       if (!o2net_hand || !o2net_keep_req || !o2net_keep_resp)
+               goto out;
 
        o2net_hand->protocol_version = cpu_to_be64(O2NET_PROTOCOL_VERSION);
        o2net_hand->connector_id = cpu_to_be64(1);
        }
 
        return 0;
+
+out:
+       kfree(o2net_hand);
+       kfree(o2net_keep_req);
+       kfree(o2net_keep_resp);
+
+       o2quo_exit();
+       return -ENOMEM;
 }
 
 void o2net_exit(void)