diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c
index 427b0318e303c56e9a556ca5ccde8314901cd0cf..dfb3a7e28280469416826a264414960cd10648f7 100644
--- a/kernel/watch_queue.c
+++ b/kernel/watch_queue.c
@@ -54,6 +54,7 @@ static void watch_queue_pipe_buf_release(struct pipe_inode_info *pipe,
 	bit += page->index;
 
 	set_bit(bit, wqueue->notes_bitmap);
+	generic_pipe_buf_release(pipe, buf);
 }
 
 // No try_steal function => no stealing