*/
 static int vmballoon_vmci_init(struct vmballoon *b)
 {
-       int error = 0;
+       unsigned long error, dummy;
 
-       if ((b->capabilities & VMW_BALLOON_SIGNALLED_WAKEUP_CMD) != 0) {
-               error = vmci_doorbell_create(&b->vmci_doorbell,
-                               VMCI_FLAG_DELAYED_CB,
-                               VMCI_PRIVILEGE_FLAG_RESTRICTED,
-                               vmballoon_doorbell, b);
-
-               if (error == VMCI_SUCCESS) {
-                       VMWARE_BALLOON_CMD(VMCI_DOORBELL_SET,
-                                       b->vmci_doorbell.context,
-                                       b->vmci_doorbell.resource, error);
-                       STATS_INC(b->stats.doorbell_set);
-               }
-       }
+       if ((b->capabilities & VMW_BALLOON_SIGNALLED_WAKEUP_CMD) == 0)
+               return 0;
 
-       if (error != 0) {
-               vmballoon_vmci_cleanup(b);
+       error = vmci_doorbell_create(&b->vmci_doorbell, VMCI_FLAG_DELAYED_CB,
+                                    VMCI_PRIVILEGE_FLAG_RESTRICTED,
+                                    vmballoon_doorbell, b);
 
-               return -EIO;
-       }
+       if (error != VMCI_SUCCESS)
+               goto fail;
+
+       error = VMWARE_BALLOON_CMD(VMCI_DOORBELL_SET, b->vmci_doorbell.context,
+                                  b->vmci_doorbell.resource, dummy);
+
+       STATS_INC(b->stats.doorbell_set);
+
+       if (error != VMW_BALLOON_SUCCESS)
+               goto fail;
 
        return 0;
+fail:
+       vmballoon_vmci_cleanup(b);
+       return -EIO;
 }
 
 /*