diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 2b5bcc2f52d58309090d47b03f1df22de8df8afa..11b65be8711b18efbb725e42490f82955abccd61 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -896,7 +896,7 @@ void grpc_call_initial_metadata_complete(grpc_call_element *surface_element) {
 }
 
 static void finish_read_event(void *p, grpc_op_error error) {
-  grpc_byte_buffer_destroy(p);
+  if (p) grpc_byte_buffer_destroy(p);
 }
 
 static void finish_read(grpc_call *call, grpc_op_error error, void *tag) {