From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afWhX-00033a-1T for qemu-devel@nongnu.org; Mon, 14 Mar 2016 13:54:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1afWhT-0005AC-S7 for qemu-devel@nongnu.org; Mon, 14 Mar 2016 13:54:42 -0400 Received: from mail-pf0-x243.google.com ([2607:f8b0:400e:c00::243]:35383) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1afWhT-00059n-MK for qemu-devel@nongnu.org; Mon, 14 Mar 2016 13:54:39 -0400 Received: by mail-pf0-x243.google.com with SMTP id u190so10431894pfb.2 for ; Mon, 14 Mar 2016 10:54:39 -0700 (PDT) Received: from localhost.localdomain ([183.87.60.98]) by smtp.gmail.com with ESMTPSA id h19sm33669025pfh.43.2016.03.14.10.54.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 14 Mar 2016 10:54:38 -0700 (PDT) From: Pooja Dhannawat Date: Mon, 14 Mar 2016 23:22:33 +0530 Message-Id: <1457977953-28278-1-git-send-email-dhannawatpooja1@gmail.com> In-Reply-To: <1457753338-22089-1-git-send-email-dhannawatpooja1@gmail.com> References: <1457753338-22089-1-git-send-email-dhannawatpooja1@gmail.com> Subject: [Qemu-devel] [PATCH v3] socket: Allocating Large sized arrays to heap List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org net_socket_send has a huge stack usage of 69712 bytes approx. Moving large arrays to heap to reduce stack usage. Signed-off-by: Pooja Dhannawat --- net/socket.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/net/socket.c b/net/socket.c index e32e3cb..d7fa8ce 100644 --- a/net/socket.c +++ b/net/socket.c @@ -147,10 +147,10 @@ static void net_socket_send(void *opaque) NetSocketState *s = opaque; int size, err; unsigned l; - uint8_t buf1[NET_BUFSIZE]; + uint8_t *buf1 = g_new(uint8_t, NET_BUFSIZE); const uint8_t *buf; - size = qemu_recv(s->fd, buf1, sizeof(buf1), 0); + size = qemu_recv(s->fd, (uint8_t *)buf1, NET_BUFSIZE, 0); if (size < 0) { err = socket_error(); if (err != EWOULDBLOCK) @@ -170,8 +170,8 @@ static void net_socket_send(void *opaque) s->index = 0; s->packet_len = 0; s->nc.link_down = true; - memset(s->buf, 0, sizeof(s->buf)); memset(s->nc.info_str, 0, sizeof(s->nc.info_str)); + g_free(buf1); return; } @@ -222,6 +222,8 @@ static void net_socket_send(void *opaque) break; } } + + g_free(buf1); } static void net_socket_send_dgram(void *opaque) -- 2.5.0