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;