diff --git a/driver/linux b/driver/linux
index 139759e..b331fa9 160000
--- a/driver/linux
+++ b/driver/linux
@@ -1 +1 @@
-Subproject commit 139759e994e7c1b782b2b1de02f6acd98917c804
+Subproject commit b331fa985153f8184530a4758ef289dd16923448
diff --git a/inc/vmapi/hf/abi.h b/inc/vmapi/hf/abi.h
index b7fd716..14c3fc6 100644
--- a/inc/vmapi/hf/abi.h
+++ b/inc/vmapi/hf/abi.h
@@ -94,6 +94,7 @@
 		} wake_up;
 		struct {
 			spci_vm_id_t vm_id;
+			uint32_t size;
 		} message;
 		struct {
 			uint64_t ns;
@@ -134,6 +135,7 @@
 		ret |= (uint64_t)res.wake_up.vcpu << 16;
 		break;
 	case HF_VCPU_RUN_MESSAGE:
+		ret |= (uint64_t)res.message.size << 32;
 		ret |= res.message.vm_id << 8;
 		break;
 	case HF_VCPU_RUN_WAIT_FOR_INTERRUPT:
@@ -163,7 +165,8 @@
 		ret.wake_up.vcpu = (res >> 16) & 0xffff;
 		break;
 	case HF_VCPU_RUN_MESSAGE:
-		ret.message.vm_id = res >> 8;
+		ret.message.size = res >> 32;
+		ret.message.vm_id = (res >> 8) & 0xffff;
 		break;
 	case HF_VCPU_RUN_WAIT_FOR_INTERRUPT:
 	case HF_VCPU_RUN_WAIT_FOR_MESSAGE:
diff --git a/src/abi_test.cc b/src/abi_test.cc
index 204472d..0668ce0 100644
--- a/src/abi_test.cc
+++ b/src/abi_test.cc
@@ -176,7 +176,8 @@
 	struct hf_vcpu_run_return res = dirty_vcpu_run_return();
 	res.code = HF_VCPU_RUN_MESSAGE;
 	res.message.vm_id = 0xf007;
-	EXPECT_THAT(hf_vcpu_run_return_encode(res), Eq(0x0000000000f00705));
+	res.message.size = 0xcafe1971;
+	EXPECT_THAT(hf_vcpu_run_return_encode(res), Eq(0xcafe197100f00705));
 }
 
 /**
@@ -188,6 +189,7 @@
 		hf_vcpu_run_return_decode(0x1123581314916205);
 	EXPECT_THAT(res.code, Eq(HF_VCPU_RUN_MESSAGE));
 	EXPECT_THAT(res.message.vm_id, Eq(0x9162));
+	EXPECT_THAT(res.message.size, Eq(0x11235813));
 }
 
 /**
diff --git a/src/api.c b/src/api.c
index e7fb9cd..2034ae9 100644
--- a/src/api.c
+++ b/src/api.c
@@ -1005,6 +1005,12 @@
 
 	/* Messages for the primary VM are delivered directly. */
 	if (to->id == HF_PRIMARY_VM_ID) {
+		/*
+		 * Only tell the primary VM the size if the message is for it,
+		 * to avoid leaking data about messages for other VMs.
+		 */
+		primary_ret.message.size = size;
+
 		to->mailbox.state = MAILBOX_STATE_READ;
 		*next = api_switch_to_primary(current, primary_ret,
 					      VCPU_STATE_READY);
diff --git a/test/linux/hftest_socket.c b/test/linux/hftest_socket.c
index 7caf1bb..ae69abb 100644
--- a/test/linux/hftest_socket.c
+++ b/test/linux/hftest_socket.c
@@ -85,6 +85,7 @@
 
 		/* Receive the packet. */
 		ret = spci_msg_wait();
+		EXPECT_EQ(ret.func, SPCI_MSG_SEND_32);
 		EXPECT_LE(spci_msg_send_size(ret), SPCI_MSG_PAYLOAD_MAX);
 
 		/* Echo the message back to the sender. */
diff --git a/test/vmapi/arch/aarch64/gicv3/timer_secondary.c b/test/vmapi/arch/aarch64/gicv3/timer_secondary.c
index 849101b..b21bd83 100644
--- a/test/vmapi/arch/aarch64/gicv3/timer_secondary.c
+++ b/test/vmapi/arch/aarch64/gicv3/timer_secondary.c
@@ -74,7 +74,7 @@
 	 */
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(recv_buffer->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(recv_buffer->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -172,7 +172,7 @@
 
 	/* Once we wake it up it should get the timer interrupt and respond. */
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(recv_buffer->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(recv_buffer->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
diff --git a/test/vmapi/primary_with_secondaries/interrupts.c b/test/vmapi/primary_with_secondaries/interrupts.c
index f5a8036..ae081d4 100644
--- a/test/vmapi/primary_with_secondaries/interrupts.c
+++ b/test/vmapi/primary_with_secondaries/interrupts.c
@@ -49,7 +49,7 @@
 	EXPECT_EQ(spci_msg_send(0), 0);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -77,7 +77,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -87,7 +87,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -115,7 +115,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -125,7 +125,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_B);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response_2));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response_2));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response_2,
 			 sizeof(expected_response_2)),
 		  0);
@@ -155,7 +155,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -173,7 +173,7 @@
 	EXPECT_EQ(spci_msg_send(0), 0);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response_2));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response_2));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response_2,
 			 sizeof(expected_response_2)),
 		  0);
@@ -211,7 +211,7 @@
 	EXPECT_EQ(spci_msg_send(0), 0);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -239,7 +239,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -267,7 +267,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response,
 			 sizeof(expected_response)),
 		  0);
@@ -298,7 +298,7 @@
 	hf_interrupt_inject(SERVICE_VM0, 0, EXTERNAL_INTERRUPT_ID_A);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)), 0);
 	EXPECT_EQ(hf_mailbox_clear(), 0);
 }
diff --git a/test/vmapi/primary_with_secondaries/mailbox.c b/test/vmapi/primary_with_secondaries/mailbox.c
index adb4ba2..ca06bff 100644
--- a/test/vmapi/primary_with_secondaries/mailbox.c
+++ b/test/vmapi/primary_with_secondaries/mailbox.c
@@ -95,7 +95,7 @@
 	EXPECT_EQ(spci_msg_send(0), 0);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.send->payload, message, sizeof(message)), 0);
 	EXPECT_EQ(hf_mailbox_clear(), 0);
 }
@@ -127,7 +127,7 @@
 		EXPECT_EQ(spci_msg_send(0), 0);
 		run_res = hf_vcpu_run(SERVICE_VM0, 0);
 		EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-		EXPECT_EQ(mb.recv->length, sizeof(message));
+		EXPECT_EQ(run_res.message.size, sizeof(message));
 		EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)),
 			  0);
 		EXPECT_EQ(hf_mailbox_clear(), 0);
@@ -176,7 +176,7 @@
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
 	EXPECT_EQ(run_res.message.vm_id, SERVICE_VM1);
-	EXPECT_EQ(mb.recv->length, 0);
+	EXPECT_EQ(run_res.message.size, 0);
 
 	/* Let SERVICE_VM1 forward the message. */
 	run_res = hf_vcpu_run(SERVICE_VM1, 0);
@@ -184,7 +184,7 @@
 
 	/* Ensure the message is intact. */
 	EXPECT_EQ(run_res.message.vm_id, HF_PRIMARY_VM_ID);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)), 0);
 	EXPECT_EQ(hf_mailbox_clear(), 0);
 }
@@ -262,7 +262,7 @@
 	EXPECT_EQ(spci_msg_send(0), 0);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)), 0);
 
 	/* Let secondary VM continue running so that it will wait again. */
@@ -299,7 +299,7 @@
 		1);
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)), 0);
 }
 
@@ -331,7 +331,7 @@
 	/* Receive a reply for the first message. */
 	run_res = hf_vcpu_run(SERVICE_VM0, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(message));
+	EXPECT_EQ(run_res.message.size, sizeof(message));
 	EXPECT_EQ(memcmp(mb.recv->payload, message, sizeof(message)), 0);
 
 	/* Run VM again so that it clears its mailbox. */
diff --git a/test/vmapi/primary_with_secondaries/run_race.c b/test/vmapi/primary_with_secondaries/run_race.c
index 63ba81d..7ba4d74 100644
--- a/test/vmapi/primary_with_secondaries/run_race.c
+++ b/test/vmapi/primary_with_secondaries/run_race.c
@@ -46,7 +46,7 @@
 
 		/* Break out if we received a message with non-zero length. */
 		if (run_res.code == HF_VCPU_RUN_MESSAGE &&
-		    mb->recv->length != 0) {
+		    run_res.message.size != 0) {
 			break;
 		}
 
@@ -55,7 +55,7 @@
 	}
 
 	/* Copies the contents of the received boolean to the return value. */
-	if (mb->recv->length == sizeof(ok)) {
+	if (run_res.message.size == sizeof(ok)) {
 		ok = *(bool *)mb->recv->payload;
 	}
 
diff --git a/test/vmapi/primary_with_secondaries/smp.c b/test/vmapi/primary_with_secondaries/smp.c
index 64e0739..de91d78 100644
--- a/test/vmapi/primary_with_secondaries/smp.c
+++ b/test/vmapi/primary_with_secondaries/smp.c
@@ -47,7 +47,7 @@
 	dlog("Run second vCPU for message\n");
 	run_res = hf_vcpu_run(SERVICE_VM2, 1);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response_1));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response_1));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response_1,
 			 sizeof(expected_response_1)),
 		  0);
@@ -57,7 +57,7 @@
 	dlog("Run first vCPU for message\n");
 	run_res = hf_vcpu_run(SERVICE_VM2, 0);
 	EXPECT_EQ(run_res.code, HF_VCPU_RUN_MESSAGE);
-	EXPECT_EQ(mb.recv->length, sizeof(expected_response_0));
+	EXPECT_EQ(run_res.message.size, sizeof(expected_response_0));
 	EXPECT_EQ(memcmp(mb.recv->payload, expected_response_0,
 			 sizeof(expected_response_0)),
 		  0);
