浏览代码

target/ppc/kvm: Replace variable length array in kvmppc_read_hptes()

HPTES_PER_GROUP is 8 and HASH_PTE_SIZE_64 is 16, so we don't waste
too many bytes by always allocating the maximum amount of bytes on
the stack here to get rid of the variable length array.

Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Message-ID: <20240221162636.173136-3-thuth@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Thomas Huth 1 年之前
父节点
当前提交
97c2fc5076
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      target/ppc/kvm.c

+ 2 - 2
target/ppc/kvm.c

@@ -2770,9 +2770,9 @@ void kvmppc_read_hptes(ppc_hash_pte64_t *hptes, hwaddr ptex, int n)
     while (i < n) {
     while (i < n) {
         struct kvm_get_htab_header *hdr;
         struct kvm_get_htab_header *hdr;
         int m = n < HPTES_PER_GROUP ? n : HPTES_PER_GROUP;
         int m = n < HPTES_PER_GROUP ? n : HPTES_PER_GROUP;
-        char buf[sizeof(*hdr) + m * HASH_PTE_SIZE_64];
+        char buf[sizeof(*hdr) + HPTES_PER_GROUP * HASH_PTE_SIZE_64];
 
 
-        rc = read(fd, buf, sizeof(buf));
+        rc = read(fd, buf, sizeof(*hdr) + m * HASH_PTE_SIZE_64);
         if (rc < 0) {
         if (rc < 0) {
             hw_error("kvmppc_read_hptes: Unable to read HPTEs");
             hw_error("kvmppc_read_hptes: Unable to read HPTEs");
         }
         }