diff --git a/kernel/relay.c b/kernel/relay.c
index 72fe443ea78f0f7cc8f2668b356ddf4c7d9f2bd8..fb4e0c530c080992ba8eeb8d84422439acc13308 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -197,6 +197,7 @@ static struct rchan_buf *relay_create_buf(struct rchan *chan)
 static void relay_destroy_channel(struct kref *kref)
 {
 	struct rchan *chan = container_of(kref, struct rchan, kref);
+	free_percpu(chan->buf);
 	kfree(chan);
 }