Edward O'Callaghan has submitted this change. ( https://review.coreboot.org/c/flashrom/+/56825 )
Change subject: opaque_master: Use new API to register shutdown function ......................................................................
opaque_master: Use new API to register shutdown function
This allows opaque masters to register shutdown function in opaque_master struct, which means there is no need to call register_shutdown in init function, since this call is now a part of register_opaque_master.
As a consequence of using new API, two things are happening here: 1) No resource leakage anymore in case register_shutdown() would fail, 2) Fixed propagation of register_opaque_master() return values.
BUG=b:185191942 TEST=1) builds and ninja test including CB:56413 2) on ARMv7 device flashrom -p linux_mtd -V -> using linux_mtd, chip found
Change-Id: Id8471a117556edcbf9694752fabe05cf4501ce70 Signed-off-by: Anastasia Klimchuk aklm@chromium.org Reviewed-on: https://review.coreboot.org/c/flashrom/+/56825 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Edward O'Callaghan quasisec@chromium.org --- M linux_mtd.c M nicintel_eeprom.c 2 files changed, 5 insertions(+), 15 deletions(-)
Approvals: build bot (Jenkins): Verified Edward O'Callaghan: Looks good to me, approved
diff --git a/linux_mtd.c b/linux_mtd.c index 42d569d..04eccde 100644 --- a/linux_mtd.c +++ b/linux_mtd.c @@ -314,6 +314,7 @@ .read = linux_mtd_read, .write = linux_mtd_write, .erase = linux_mtd_erase, + .shutdown = linux_mtd_shutdown, };
/* Returns 0 if setup is successful, non-zero to indicate error */ @@ -418,14 +419,7 @@ return 1; }
- if (register_shutdown(linux_mtd_shutdown, (void *)data)) { - free(data); - return 1; - } - - register_opaque_master(&linux_mtd_opaque_master, data); - - return 0; + return register_opaque_master(&linux_mtd_opaque_master, data);
linux_mtd_init_exit: free(param); diff --git a/nicintel_eeprom.c b/nicintel_eeprom.c index fd90250..5887073 100644 --- a/nicintel_eeprom.c +++ b/nicintel_eeprom.c @@ -446,6 +446,7 @@ .read = nicintel_ee_read, .write = nicintel_ee_write_82580, .erase = nicintel_ee_erase_82580, + .shutdown = nicintel_ee_shutdown_82580, };
static const struct opaque_master opaque_master_nicintel_ee_i210 = { @@ -453,6 +454,7 @@ .read = nicintel_ee_read, .write = nicintel_ee_write_i210, .erase = nicintel_ee_erase_i210, + .shutdown = nicintel_ee_shutdown_i210, };
static int nicintel_ee_init(void) @@ -493,19 +495,13 @@ *eecp = eec; }
- if (register_shutdown(nicintel_ee_shutdown_82580, eecp)) - return 1; - - return register_opaque_master(&opaque_master_nicintel_ee_82580, NULL); + return register_opaque_master(&opaque_master_nicintel_ee_82580, eecp); } else { nicintel_eebar = rphysmap("Intel i210 NIC w/ emulated EEPROM", io_base_addr + 0x12000, MEMMAP_SIZE); if (!nicintel_eebar) return 1;
- if (register_shutdown(nicintel_ee_shutdown_i210, NULL)) - return 1; - return register_opaque_master(&opaque_master_nicintel_ee_i210, NULL); }