Nico Huber submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Angel Pons: Looks good to me, approved
layout: Kill the global layout

Change-Id: Ic302e9c5faf1368e5ca244ce461e55e14f916ab8
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/54286
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
---
M cli_classic.c
M flash.h
M layout.c
M layout.h
4 files changed, 11 insertions(+), 27 deletions(-)

diff --git a/cli_classic.c b/cli_classic.c
index fc91989..3b6fbf8 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -519,12 +519,12 @@
}
msg_gdbg("\n");

- if (layoutfile && read_romlayout(layoutfile)) {
+ if (layoutfile && layout_from_file(&layout, layoutfile)) {
ret = 1;
goto out;
}

- if (!ifd && !fmap && process_include_args(get_global_layout(), include_args)) {
+ if (!ifd && !fmap && process_include_args(layout, include_args)) {
ret = 1;
goto out;
}
@@ -716,9 +716,7 @@
goto out_shutdown;
}

- if (layoutfile) {
- layout = get_global_layout();
- } else if (ifd && (flashrom_layout_read_from_ifd(&layout, fill_flash, NULL, 0) ||
+ if (ifd && (flashrom_layout_read_from_ifd(&layout, fill_flash, NULL, 0) ||
process_include_args(layout, include_args))) {
ret = 1;
goto out_shutdown;
diff --git a/flash.h b/flash.h
index c8c0f9d..c50c892 100644
--- a/flash.h
+++ b/flash.h
@@ -419,7 +419,6 @@

/* layout.c */
int register_include_arg(struct layout_include_args **args, const char *arg);
-int read_romlayout(const char *name);
void layout_cleanup(struct layout_include_args **args);

/* spi.c */
diff --git a/layout.c b/layout.c
index e4f1681..a043d21 100644
--- a/layout.c
+++ b/layout.c
@@ -35,15 +35,6 @@
struct layout_include_args *next;
};

-static struct flashrom_layout *global_layout;
-
-struct flashrom_layout *get_global_layout(void)
-{
- if (!global_layout)
- flashrom_layout_new(&global_layout);
- return global_layout;
-}
-
const struct flashrom_layout *get_default_layout(const struct flashrom_flashctx *const flashctx)
{
return flashctx->default_layout;
@@ -75,13 +66,15 @@
}

#ifndef __LIBPAYLOAD__
-int read_romlayout(const char *name)
+int layout_from_file(struct flashrom_layout **layout, const char *name)
{
- struct flashrom_layout *const layout = get_global_layout();
FILE *romlayout;
char tempstr[256], tempname[256];
int ret = 1;

+ if (flashrom_layout_new(layout))
+ return 1;
+
romlayout = fopen(name, "r");

if (!romlayout) {
@@ -107,7 +100,7 @@
msg_gerr("Error parsing layout file. Offending string: \"%s\"\n", tempstr);
goto _close_ret;
}
- if (flashrom_layout_add_region(layout,
+ if (flashrom_layout_add_region(*layout,
strtol(tstr1, NULL, 16), strtol(tstr2, NULL, 16), tempname))
goto _close_ret;
}
@@ -219,7 +212,7 @@
return 0;

/* User has specified an include argument, but no layout is loaded. */
- if (!l->head) {
+ if (!l || !l->head) {
msg_gerr("Region requested (with -i \"%s\"), "
"but no layout data is available.\n",
args->name);
@@ -283,7 +276,6 @@

void layout_cleanup(struct layout_include_args **args)
{
- struct flashrom_layout *const layout = get_global_layout();
struct layout_include_args *tmp;

while (*args) {
@@ -293,9 +285,6 @@
free(*args);
*args = tmp;
}
-
- global_layout = NULL;
- flashrom_layout_release(layout);
}

int layout_sanity_checks(const struct flashrom_flashctx *const flash)
@@ -462,9 +451,6 @@
*/
void flashrom_layout_release(struct flashrom_layout *const layout)
{
- if (layout == global_layout)
- return;
-
if (!layout)
return;

diff --git a/layout.h b/layout.h
index f5fbc50..e62fdf9 100644
--- a/layout.h
+++ b/layout.h
@@ -50,10 +50,11 @@
struct layout_include_args;

struct flashrom_flashctx;
-struct flashrom_layout *get_global_layout(void);
const struct flashrom_layout *get_default_layout(const struct flashrom_flashctx *);
const struct flashrom_layout *get_layout(const struct flashrom_flashctx *const flashctx);

+int layout_from_file(struct flashrom_layout **, const char *name);
+
int get_region_range(struct flashrom_layout *const l, const char *name,
unsigned int *start, unsigned int *len);
int process_include_args(struct flashrom_layout *l, const struct layout_include_args *const args);

To view, visit change 54286. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Ic302e9c5faf1368e5ca244ce461e55e14f916ab8
Gerrit-Change-Number: 54286
Gerrit-PatchSet: 8
Gerrit-Owner: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Daniel Campello <campello@chromium.org>
Gerrit-Reviewer: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Peter Marheine <pmarheine@chromium.org>
Gerrit-Reviewer: Thomas Heijligen <src@posteo.de>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter@mailbox.org>
Gerrit-MessageType: merged