qemu-trivial
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] hw/net: move allocation to the heap due to very large stack


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH] hw/net: move allocation to the heap due to very large stack frame
Date: Mon, 12 Oct 2020 13:09:22 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1

On 10/10/20 8:07 AM, David Gibson wrote:
On Fri, Oct 09, 2020 at 07:02:56AM -0700, Elena Afanasova wrote:
>From 09905773a00e417d3a37c12350d9e55466fdce8a Mon Sep 17 00:00:00 2001
From: Elena Afanasova <eafanasova@gmail.com>
Date: Fri, 9 Oct 2020 06:41:36 -0700
Subject: [PATCH] hw/net: move allocation to the heap due to very large stack
  frame

Patch looks fine, but some more details of the motivation would be
nice.  I wouldn't have thought that the size of a network packet
counted as a "very large" stack frame by userspace standards.

Maybe academia doing research on "super jumbo frames"?

"Super jumbo frames ... increase the path MTU of high-performance
national research and education networks from 1500 bytes to 9000
bytes or so, a subsequent increase, possibly to 64,000 bytes"

(https://en.wikipedia.org/wiki/Jumbo_frame#Super_jumbo_frames)


Signed-off-by: Elena Afanasova <eafanasova@gmail.com>
---
  hw/net/spapr_llan.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c
index 2093f1bad0..581320a0e7 100644
--- a/hw/net/spapr_llan.c
+++ b/hw/net/spapr_llan.c
@@ -688,7 +688,8 @@ static target_ulong h_send_logical_lan(PowerPCCPU *cpu,
      SpaprVioDevice *sdev = spapr_vio_find_by_reg(spapr->vio_bus, reg);
      SpaprVioVlan *dev = VIO_SPAPR_VLAN_DEVICE(sdev);
      unsigned total_len;
-    uint8_t *lbuf, *p;
+    uint8_t *p;
+    g_autofree uint8_t *lbuf = NULL;
      int i, nbufs;
      int ret;
@@ -729,7 +730,7 @@ static target_ulong h_send_logical_lan(PowerPCCPU *cpu,
          return H_RESOURCE;
      }
- lbuf = alloca(total_len);
+    lbuf = g_malloc(total_len);
      p = lbuf;
      for (i = 0; i < nbufs; i++) {
          ret = spapr_vio_dma_read(sdev, VLAN_BD_ADDR(bufs[i]),





reply via email to

[Prev in Thread] Current Thread [Next in Thread]