diff --git a/main.c b/main.c
index e514127..9ae60c0 100644
--- a/main.c
+++ b/main.c
@@ -33,6 +33,8 @@
 #define CONFIG_HAFNIUM_MAX_VMS   16
 #define CONFIG_HAFNIUM_MAX_VCPUS 32
 
+#define FIRST_SECONDARY_VM_ID 1
+
 struct hf_vcpu {
 	struct hf_vm *vm;
 	uint32_t vcpu_index;
@@ -87,6 +89,18 @@
 static DEFINE_SPINLOCK(hf_local_port_hash_lock);
 
 /**
+ * Retrieves a VM from its ID, returning NULL if the VM doesn't exist.
+ */
+static struct hf_vm *hf_vm_from_id(uint32_t vm_id)
+{
+	if (vm_id < FIRST_SECONDARY_VM_ID ||
+	    vm_id >= FIRST_SECONDARY_VM_ID + hf_vm_count)
+		return NULL;
+
+	return &hf_vms[vm_id - FIRST_SECONDARY_VM_ID];
+}
+
+/**
  * Wakes up the kernel thread responsible for running the given vcpu.
  *
  * Returns 0 if the thread was already running, 1 otherwise.
@@ -209,14 +223,13 @@
 static void hf_handle_wake_up_request(uint32_t vm_id, uint16_t vcpu,
 				      uint64_t int_id)
 {
-	struct hf_vm *vm;
+	struct hf_vm *vm = hf_vm_from_id(vm_id);
 
-	if (vm_id < 1 || vm_id > hf_vm_count) {
+	if (!vm) {
 		pr_warn("Request to wake up non-existent VM id: %u\n", vm_id);
 		return;
 	}
 
-	vm = &hf_vms[vm_id - 1];
 	if (vcpu >= vm->vcpu_count) {
 		int64_t ret;
 
@@ -311,7 +324,7 @@
 		case HF_VCPU_RUN_WAKE_UP:
 			hf_handle_wake_up_request(ret.wake_up.vm_id,
 						  ret.wake_up.vcpu,
-						  HF_MAILBOX_READBLE_INTID);
+						  HF_MAILBOX_READABLE_INTID);
 			break;
 
 		/* Response available. */
@@ -426,11 +439,10 @@
 		return -EINVAL;
 
 	addr = (struct sockaddr_hf *)saddr;
-	if (addr->vm_id > hf_vm_count)
+	vm = hf_vm_from_id(addr->vm_id);
+	if (!vm)
 		return -ENETUNREACH;
 
-	vm = &hf_vms[addr->vm_id - 1];
-
 	/*
 	 * TODO: Once we implement access control in Hafnium, check that the
 	 * caller is allowed to contact the specified VM. Return -ECONNREFUSED
@@ -489,7 +501,7 @@
 		return -EAGAIN;
 
 	/* Wake some vcpu up to handle the new message. */
-	hf_handle_wake_up_request(vm->id, ret, HF_MAILBOX_READBLE_INTID);
+	hf_handle_wake_up_request(vm->id, ret, HF_MAILBOX_READABLE_INTID);
 
 	kfree_skb(skb);
 
@@ -792,7 +804,7 @@
 		struct hf_vm *vm = &hf_vms[i];
 
 		/* Adjust the ID as only the secondaries are tracked. */
-		vm->id = i + 1;
+		vm->id = i + FIRST_SECONDARY_VM_ID;
 
 		ret = hf_vcpu_get_count(vm->id);
 		if (ret < 0) {
