aboutsummaryrefslogtreecommitdiff
path: root/fw_cfg.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2015-05-21 10:31:09 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2015-05-21 11:44:57 +0200
commit25aa128050881068db3ca3212550024214bfad34 (patch)
tree65a338ad31341b48b78e95a064e111d7d1ca313b /fw_cfg.c
parentfa9ea2e622eb105fb77f1f09e3194bfc05db7c5e (diff)
downloadqboot-25aa128050881068db3ca3212550024214bfad34.zip
qboot-25aa128050881068db3ca3212550024214bfad34.tar.gz
qboot-25aa128050881068db3ca3212550024214bfad34.tar.bz2
malloc fw_cfg files
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'fw_cfg.c')
-rw-r--r--fw_cfg.c9
1 files changed, 5 insertions, 4 deletions
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 @@ struct fw_cfg_file {
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 @@ void fw_cfg_setup(void)
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 fw_cfg_file_id(char *name)
{
int i;
- for (i = 0; i < ARRAY_SIZE(files); i++)
+ for (i = 0; i < filecnt; i++)
if (!strcmp(name, files[i].name))
return i;