diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index b3a1790f9e055433a223da60a2f8c4675a19f9c2..ff9faf4e3cd5955bae7e2b55e23b36de54459c3f 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -351,7 +351,7 @@ static void log_store(int facility, int level,
 	else
 		msg->ts_nsec = local_clock();
 	memset(log_dict(msg) + dict_len, 0, pad_len);
-	msg->len = sizeof(struct printk_log) + text_len + dict_len + pad_len;
+	msg->len = size;
 
 	/* insert message */
 	log_next_idx += msg->len;