struct dlm_ctxt *dlm = NULL;
        char *local = NULL;
        int status = 0;
-       int locked = 0;
 
        qr = (struct dlm_query_region *) msg->buf;
 
 
        /* buffer used in dlm_mast_regions() */
        local = kmalloc(sizeof(qr->qr_regions), GFP_KERNEL);
-       if (!local) {
-               status = -ENOMEM;
-               goto bail;
-       }
+       if (!local)
+               return -ENOMEM;
 
        status = -EINVAL;
 
        if (!dlm) {
                mlog(ML_ERROR, "Node %d queried hb regions on domain %s "
                     "before join domain\n", qr->qr_node, qr->qr_domain);
-               goto bail;
+               goto out_domain_lock;
        }
 
        spin_lock(&dlm->spinlock);
-       locked = 1;
        if (dlm->joining_node != qr->qr_node) {
                mlog(ML_ERROR, "Node %d queried hb regions on domain %s "
                     "but joining node is %d\n", qr->qr_node, qr->qr_domain,
                     dlm->joining_node);
-               goto bail;
+               goto out_dlm_lock;
        }
 
        /* Support for global heartbeat was added in 1.1 */
                     "but active dlm protocol is %d.%d\n", qr->qr_node,
                     qr->qr_domain, dlm->dlm_locking_proto.pv_major,
                     dlm->dlm_locking_proto.pv_minor);
-               goto bail;
+               goto out_dlm_lock;
        }
 
        status = dlm_match_regions(dlm, qr, local, sizeof(qr->qr_regions));
 
-bail:
-       if (locked)
-               spin_unlock(&dlm->spinlock);
+out_dlm_lock:
+       spin_unlock(&dlm->spinlock);
+
+out_domain_lock:
        spin_unlock(&dlm_domain_lock);
 
        kfree(local);