malloc fw_cfg files
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/fw_cfg.c b/fw_cfg.c
index c1b354e..3fb1769 100644
--- a/fw_cfg.c
+++ b/fw_cfg.c
@@ -11,7 +11,8 @@
char name[57];
};
-static struct fw_cfg_file files[32];
+static int filecnt;
+static struct fw_cfg_file *files;
void fw_cfg_setup(void)
{
@@ -19,8 +20,8 @@
fw_cfg_select(FW_CFG_FILE_DIR);
n = fw_cfg_readl_be();
- if (n > ARRAY_SIZE(files))
- n = ARRAY_SIZE(files);
+ filecnt = n;
+ files = malloc_fseg(sizeof(files[0]) * n);
for (i = 0; i < n; i++) {
files[i].size = fw_cfg_readl_be();
@@ -34,7 +35,7 @@
{
int i;
- for (i = 0; i < ARRAY_SIZE(files); i++)
+ for (i = 0; i < filecnt; i++)
if (!strcmp(name, files[i].name))
return i;