summaryrefslogtreecommitdiffstats
path: root/physmap.c
diff options
context:
space:
mode:
authorNiklas Söderlund <niso@kth.se>2013-09-14 09:02:27 +0000
committerStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>2013-09-14 09:02:27 +0000
commit5d3072030ac6ad017a25ff0fa4bc451fa8b65ed8 (patch)
tree1d4a18ad60037ced5824c9f509dd77997f56054a /physmap.c
parent2d8b7ef4a84e4946619fa8e4d1b9fcaa15208440 (diff)
downloadast2050-flashrom-5d3072030ac6ad017a25ff0fa4bc451fa8b65ed8.zip
ast2050-flashrom-5d3072030ac6ad017a25ff0fa4bc451fa8b65ed8.tar.gz
Remove exit call and mayfail parameter from physmap_common()
The only call path where exit was reached was from physmap functions. Callers of physmap() et al. which were not prepared to handle ERROR_PTR return values have been adjusted. physmap_try_ro() has been renamed to physmap_ro() and physmap_common() slightly refactored due to the now removed *FAIL parameters. Corresponding to flashrom svn r1745. Signed-off-by: Niklas Söderlund <niso@kth.se> Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Diffstat (limited to 'physmap.c')
-rw-r--r--physmap.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/physmap.c b/physmap.c
index caad1ca..9638c78 100644
--- a/physmap.c
+++ b/physmap.c
@@ -203,8 +203,6 @@ void physunmap(void *virt_addr, size_t len)
}
#endif
-#define PHYSM_NOFAIL 0
-#define PHYSM_MAYFAIL 1
#define PHYSM_RW 0
#define PHYSM_RO 1
#define PHYSM_NOCLEANUP 0
@@ -249,8 +247,8 @@ static int undo_physmap(void *data)
return 0;
}
-static void *physmap_common(const char *descr, uintptr_t phys_addr, size_t len, bool mayfail,
- bool readonly, bool autocleanup, bool round)
+static void *physmap_common(const char *descr, uintptr_t phys_addr, size_t len, bool readonly, bool autocleanup,
+ bool round)
{
void *virt_addr;
uintptr_t offset = 0;
@@ -287,53 +285,47 @@ static void *physmap_common(const char *descr, uintptr_t phys_addr, size_t len,
"and reboot, or reboot into\n"
"single user mode.\n");
#endif
- if (mayfail)
- return ERROR_PTR;
- else
- exit(3);
+ return ERROR_PTR;
}
if (autocleanup) {
struct undo_physmap_data *d = malloc(sizeof(struct undo_physmap_data));
if (d == NULL) {
msg_perr("%s: Out of memory!\n", __func__);
- goto unmap_out;
+ physunmap(virt_addr, len);
+ return ERROR_PTR;
}
d->virt_addr = virt_addr;
d->len = len;
if (register_shutdown(undo_physmap, d) != 0) {
msg_perr("%s: Could not register shutdown function!\n", __func__);
- goto unmap_out;
+ physunmap(virt_addr, len);
+ return ERROR_PTR;
}
}
return virt_addr + offset;
-unmap_out:
- physunmap(virt_addr, len);
- if (!mayfail)
- exit(3);
- return ERROR_PTR;
}
void *physmap(const char *descr, uintptr_t phys_addr, size_t len)
{
- return physmap_common(descr, phys_addr, len, PHYSM_NOFAIL, PHYSM_RW, PHYSM_NOCLEANUP, PHYSM_EXACT);
+ return physmap_common(descr, phys_addr, len, PHYSM_RW, PHYSM_NOCLEANUP, PHYSM_EXACT);
}
void *rphysmap(const char *descr, uintptr_t phys_addr, size_t len)
{
- return physmap_common(descr, phys_addr, len, PHYSM_NOFAIL, PHYSM_RW, PHYSM_CLEANUP, PHYSM_ROUND);
+ return physmap_common(descr, phys_addr, len, PHYSM_RW, PHYSM_CLEANUP, PHYSM_ROUND);
}
void *physmap_round(const char *descr, uintptr_t phys_addr, size_t len)
{
- return physmap_common(descr, phys_addr, len, PHYSM_NOFAIL, PHYSM_RW, PHYSM_NOCLEANUP, PHYSM_ROUND);
+ return physmap_common(descr, phys_addr, len, PHYSM_RW, PHYSM_NOCLEANUP, PHYSM_ROUND);
}
-void *physmap_try_ro(const char *descr, uintptr_t phys_addr, size_t len)
+void *physmap_ro(const char *descr, uintptr_t phys_addr, size_t len)
{
- return physmap_common(descr, phys_addr, len, PHYSM_MAYFAIL, PHYSM_RO, PHYSM_NOCLEANUP, PHYSM_EXACT);
+ return physmap_common(descr, phys_addr, len, PHYSM_RO, PHYSM_NOCLEANUP, PHYSM_EXACT);
}
/* MSR abstraction implementations for Linux, OpenBSD, FreeBSD/Dragonfly, OSX, libpayload
OpenPOWER on IntegriCloud