diff --git a/core.c b/core.c
index 7b84d5a..c5ded9d 100644
--- a/core.c
+++ b/core.c
@@ -8,6 +8,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdalign.h>
 
 #undef pr_fmt
 #define pr_fmt(fmt) "core: " fmt
@@ -65,6 +66,8 @@
 struct mctp_pktbuf *mctp_pktbuf_init(struct mctp_binding *binding,
 				     void *storage)
 {
+	assert((size_t)storage % alignof(struct mctp_pktbuf) == 0);
+
 	size_t size =
 		binding->pkt_size + binding->pkt_header + binding->pkt_trailer;
 	struct mctp_pktbuf *buf = (struct mctp_pktbuf *)storage;
diff --git a/i2c-internal.h b/i2c-internal.h
index 95ab81d..eed788e 100644
--- a/i2c-internal.h
+++ b/i2c-internal.h
@@ -35,10 +35,8 @@
 
 	uint8_t own_addr;
 
-	uint8_t tx_storage[sizeof(struct mctp_i2c_hdr) +
-			   MCTP_PKTBUF_SIZE(I2C_BTU)] __attribute((aligned(8)));
-	uint8_t rx_storage[sizeof(struct mctp_i2c_hdr) +
-			   MCTP_PKTBUF_SIZE(I2C_BTU)] __attribute((aligned(8)));
+	uint8_t tx_storage[MCTP_PKTBUF_SIZE(I2C_BTU)] PKTBUF_STORAGE_ALIGN;
+	uint8_t rx_storage[MCTP_PKTBUF_SIZE(I2C_BTU)] PKTBUF_STORAGE_ALIGN;
 
 	mctp_i2c_tx_fn tx_fn;
 	void *tx_ctx;
diff --git a/libmctp.h b/libmctp.h
index 2fdd812..96ee975 100644
--- a/libmctp.h
+++ b/libmctp.h
@@ -11,6 +11,7 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <stddef.h>
+#include <stdalign.h>
 
 typedef uint8_t mctp_eid_t;
 
@@ -58,6 +59,7 @@
 
 #define MCTP_PKTBUF_SIZE(payload)                                              \
 	(MCTP_PACKET_SIZE(payload) + sizeof(struct mctp_pktbuf))
+#define PKTBUF_STORAGE_ALIGN __attribute((aligned(alignof(struct mctp_pktbuf))))
 
 struct mctp;
 struct mctp_bus;
@@ -65,7 +67,9 @@
 
 /* Initialise a mctp_pktbuf in static storage. Should not be freed.
  * Storage must be sized to fit the binding,
- * MCTP_PKTBUF_SIZE(binding->pkt_size + binding->pkt_header + binding->pkt_trailer) */
+ * MCTP_PKTBUF_SIZE(binding->pkt_size + binding->pkt_header + binding->pkt_trailer).
+ * storage must be aligned to alignof(struct mctp_pktbuf), 
+ * use PKTBUF_STORAGE_ALIGN macro */
 struct mctp_pktbuf *mctp_pktbuf_init(struct mctp_binding *binding,
 				     void *storage);
 /* Allocate and initialise a mctp_pktbuf. Should be freed with
@@ -175,7 +179,7 @@
 /**
  * @tx: Binding function to transmit one packet on the interface
  * @tx_storage: A buffer for transmitting packets. Must be sized
- * as MCTP_PKTBUF_SIZE(mtu).
+ * as MCTP_PKTBUF_SIZE(mtu) and 8 byte aligned.
  *      Return:
  *      * 0 - Success, pktbuf can be released
  *	* -EMSGSIZE - Packet exceeds binding MTU, pktbuf must be dropped
diff --git a/serial.c b/serial.c
index d79c99c..b61991a 100644
--- a/serial.c
+++ b/serial.c
@@ -44,7 +44,7 @@
 	/* receive buffer and state */
 	uint8_t rxbuf[1024];
 	struct mctp_pktbuf *rx_pkt;
-	uint8_t rx_storage[MCTP_PKTBUF_SIZE(SERIAL_BTU)];
+	uint8_t rx_storage[MCTP_PKTBUF_SIZE(SERIAL_BTU)] PKTBUF_STORAGE_ALIGN;
 	uint8_t rx_exp_len;
 	uint16_t rx_fcs;
 	uint16_t rx_fcs_calc;
@@ -62,7 +62,7 @@
 	/* temporary transmit buffer */
 	uint8_t txbuf[256];
 	/* used by the MCTP stack */
-	uint8_t tx_storage[MCTP_PKTBUF_SIZE(SERIAL_BTU)];
+	uint8_t tx_storage[MCTP_PKTBUF_SIZE(SERIAL_BTU)] PKTBUF_STORAGE_ALIGN;
 };
 
 #define binding_to_serial(b)                                                   \
diff --git a/tests/test-utils.c b/tests/test-utils.c
index 5e78474..2a346fa 100644
--- a/tests/test-utils.c
+++ b/tests/test-utils.c
@@ -16,7 +16,7 @@
  * the local EID as the destination */
 struct mctp_binding_test {
 	struct mctp_binding binding;
-	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)];
+	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)] PKTBUF_STORAGE_ALIGN;
 };
 
 static int mctp_binding_test_tx(struct mctp_binding *b, struct mctp_pktbuf *pkt)
diff --git a/tests/test_bridge.c b/tests/test_bridge.c
index 73705ba..40d5fb6 100644
--- a/tests/test_bridge.c
+++ b/tests/test_bridge.c
@@ -19,7 +19,7 @@
 	int rx_count;
 	int tx_count;
 	uint8_t last_pkt_data;
-	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)];
+	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)] PKTBUF_STORAGE_ALIGN;
 };
 
 struct test_ctx {
diff --git a/tests/test_cmds.c b/tests/test_cmds.c
index 2646b8c..b4bf913 100644
--- a/tests/test_cmds.c
+++ b/tests/test_cmds.c
@@ -60,7 +60,7 @@
 	assert(test_endpoint != NULL);
 	assert(callback_ctx != NULL);
 
-	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)];
+	uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_BTU)] PKTBUF_STORAGE_ALIGN;
 	memset(test_binding, 0, sizeof(*test_binding));
 	test_binding->name = "test";
 	test_binding->version = 1;
diff --git a/tests/test_i2c.c b/tests/test_i2c.c
index 067d551..89e7744 100644
--- a/tests/test_i2c.c
+++ b/tests/test_i2c.c
@@ -259,5 +259,10 @@
 
 	test_neigh_expiry(tx_test, rx_test);
 
+	free(tx_test->i2c);
+	free(rx_test->i2c);
+	mctp_destroy(tx_test->mctp);
+	mctp_destroy(rx_test->mctp);
+
 	return 0;
 }
