From ba19acd822011a97a72da7eb71215329774f0977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= Date: Mon, 8 Aug 2022 21:10:58 +0200 Subject: [PATCH] MINOR: quic: Replace pool_zalloc() by pool_malloc() for fake datagrams These fake datagrams are only used by the low level I/O handler. They are not provided to the "by connection" datagram handlers. This is why they are not MT_LIST_APPEND()ed to the listner RX buffer list (see &quic_dghdlrs[cid_tid].dgrams in quic_lstnr_dgram_dispatch(). Replace the call to pool_zalloc() to by the lighter call to pool_malloc() and initialize only the ->buf and ->length members. This is safe because only these fields are inspected by the low level I/O handler. --- src/quic_sock.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/quic_sock.c b/src/quic_sock.c index b7cffc9d2..e74e8893d 100644 --- a/src/quic_sock.c +++ b/src/quic_sock.c @@ -317,7 +317,7 @@ void quic_sock_fd_iocb(int fd) struct quic_dgram *dgram; /* Do no mark as full, and do not try to consume it - * if the contiguous remmaining space is not at the end + * if the contiguous remaining space is not at the end */ if (b_tail(buf) + cspace < b_wrap(buf)) goto out; @@ -325,11 +325,16 @@ void quic_sock_fd_iocb(int fd) /* Allocate a fake datagram, without data to locate * the end of the RX buffer (required during purging). */ - dgram = pool_zalloc(pool_head_quic_dgram); + dgram = pool_alloc(pool_head_quic_dgram); if (!dgram) goto out; + /* Initialize only the useful members of this fake datagram. */ + dgram->buf = NULL; dgram->len = cspace; + /* Append this datagram only to the RX buffer list. It will + * not be treated by any datagram handler. + */ LIST_APPEND(&rxbuf->dgrams, &dgram->list); /* Consume the remaining space */