diff --git a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
index 020f67edd25c6727d39159069f92ffa3cab640de..f120e7cf8d6c57bf549ed3718507fef1924e087f 100644
--- a/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
+++ b/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c
@@ -57,8 +57,12 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server *server,
   char *name;
   gpr_asprintf(&name, "fd:%d", fd);
 
-  grpc_endpoint *server_endpoint = grpc_tcp_create(
-      grpc_fd_create(fd, name), NULL, GRPC_TCP_DEFAULT_READ_SLICE_SIZE, name);
+  grpc_buffer_pool *buffer_pool =
+      grpc_buffer_pool_from_channel_args(grpc_server_get_channel_args(server));
+  grpc_endpoint *server_endpoint =
+      grpc_tcp_create(grpc_fd_create(fd, name), buffer_pool,
+                      GRPC_TCP_DEFAULT_READ_SLICE_SIZE, name);
+  grpc_buffer_pool_internal_unref(&exec_ctx, buffer_pool);
 
   gpr_free(name);
 
diff --git a/src/core/lib/iomgr/buffer_pool.c b/src/core/lib/iomgr/buffer_pool.c
index 78a98027f572889eeceb413166d990a4c5913b6e..766de44bf47e23dd59bca052adadb3df50b76ce7 100644
--- a/src/core/lib/iomgr/buffer_pool.c
+++ b/src/core/lib/iomgr/buffer_pool.c
@@ -372,7 +372,7 @@ void grpc_buffer_pool_resize(grpc_buffer_pool *buffer_pool, size_t size) {
  */
 
 grpc_buffer_pool *grpc_buffer_pool_from_channel_args(
-    grpc_channel_args *channel_args) {
+    const grpc_channel_args *channel_args) {
   for (size_t i = 0; i < channel_args->num_args; i++) {
     if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_BUFFER_POOL)) {
       if (channel_args->args[i].type == GRPC_ARG_POINTER) {
diff --git a/src/core/lib/iomgr/buffer_pool.h b/src/core/lib/iomgr/buffer_pool.h
index 2ffc5b6b75b139696f297e51890dd78b69158930..8b202de5cd35eba49db4f8ea781e82fe830909a5 100644
--- a/src/core/lib/iomgr/buffer_pool.h
+++ b/src/core/lib/iomgr/buffer_pool.h
@@ -42,7 +42,7 @@ grpc_buffer_pool *grpc_buffer_pool_internal_ref(grpc_buffer_pool *buffer_pool);
 void grpc_buffer_pool_internal_unref(grpc_exec_ctx *exec_ctx,
                                      grpc_buffer_pool *buffer_pool);
 grpc_buffer_pool *grpc_buffer_pool_from_channel_args(
-    grpc_channel_args *channel_args);
+    const grpc_channel_args *channel_args);
 
 typedef enum {
   GRPC_BULIST_AWAITING_ALLOCATION,
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 6d676dd02e64f5b303a0e1d0d94210ccb8dbc3cd..2d46989d1160e26d72f9ff0681015a9738411a87 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -232,8 +232,8 @@ void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
 // defined in tcp_client_posix.c
 extern void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
-    grpc_pollset_set *interested_parties, const struct sockaddr *addr,
-    size_t addr_len, gpr_timespec deadline);
+    grpc_pollset_set *interested_parties, const grpc_channel_args *channel_args,
+    const struct sockaddr *addr, size_t addr_len, gpr_timespec deadline);
 
 static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                           grpc_endpoint **ep, gpr_timespec deadline);
@@ -290,6 +290,7 @@ static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
 static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
                                   grpc_closure *closure, grpc_endpoint **ep,
                                   grpc_pollset_set *interested_parties,
+                                  const grpc_channel_args *channel_args,
                                   const struct sockaddr *addr, size_t addr_len,
                                   gpr_timespec deadline) {
   sched_connect(exec_ctx, closure, ep, deadline);