summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlrich Ölmann <u.oelmann@pengutronix.de>2016-04-29 19:36:21 +0200
committerSteffen Trumtrar <s.trumtrar@pengutronix.de>2020-06-22 08:13:13 +0200
commitc98507f40d39633e345230caa00f78c9065da845 (patch)
tree97a79cbc2ceb27bfb3ee327a2c57b4a1296c042c
parent7c70e8e153012ca743ffb3b967bdb112fd6ecfd5 (diff)
downloadbarebox-c98507f40d39633e345230caa00f78c9065da845.tar.gz
barebox-c98507f40d39633e345230caa00f78c9065da845.tar.xz
bootstrap_read_disk(): optionally inform the caller of the buffer size
The size of the buffer allocated in the function is needed if it shall be inspected more closely later. Therefore optionally return it via a new pointer argument. Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
-rw-r--r--arch/arm/mach-at91/bootstrap.c2
-rw-r--r--arch/arm/mach-socfpga/xload.c2
-rw-r--r--include/bootstrap.h4
-rw-r--r--lib/bootstrap/disk.c5
4 files changed, 8 insertions, 5 deletions
diff --git a/arch/arm/mach-at91/bootstrap.c b/arch/arm/mach-at91/bootstrap.c
index 90b7b33fc9..0b1567cd23 100644
--- a/arch/arm/mach-at91/bootstrap.c
+++ b/arch/arm/mach-at91/bootstrap.c
@@ -89,7 +89,7 @@ static void at91bootstrap_boot_mmc(void)
kernel_entry_func func = NULL;
printf("Boot from mmc\n");
- func = bootstrap_read_disk("disk0.0", NULL);
+ func = bootstrap_read_disk("disk0.0", NULL, NULL);
bootstrap_boot(func, false);
bootstrap_err("... failed\n");
free(func);
diff --git a/arch/arm/mach-socfpga/xload.c b/arch/arm/mach-socfpga/xload.c
index 8be2827e62..1131cfee41 100644
--- a/arch/arm/mach-socfpga/xload.c
+++ b/arch/arm/mach-socfpga/xload.c
@@ -37,7 +37,7 @@ static __noreturn int socfpga_xload(void)
socfpga_cyclone5_mmc_init();
for (part = barebox_parts; part->mmc_disk; part++) {
- buf = bootstrap_read_disk(barebox_parts->mmc_disk, "fat");
+ buf = bootstrap_read_disk(barebox_parts->mmc_disk, "fat", NULL);
if (!buf) {
pr_info("failed to load barebox from MMC %s\n",
part->mmc_disk);
diff --git a/include/bootstrap.h b/include/bootstrap.h
index 8b3bb34a03..3e006d3cc9 100644
--- a/include/bootstrap.h
+++ b/include/bootstrap.h
@@ -25,9 +25,9 @@ static inline void* bootstrap_read_devfs(char *devname, bool use_bb, int offset,
#endif
#ifdef CONFIG_BOOTSTRAP_DISK
-void* bootstrap_read_disk(const char *devname, const char *fstype);
+void* bootstrap_read_disk(const char *devname, char *fstype, size_t *bufsize);
#else
-static inline void* bootstrap_read_disk(const char *devname, const char *fstype)
+static inline void* bootstrap_read_disk(const char *devname, char *fstype, size_t *bufsize)
{
return NULL;
}
diff --git a/lib/bootstrap/disk.c b/lib/bootstrap/disk.c
index fd016166e6..ed8b1aa407 100644
--- a/lib/bootstrap/disk.c
+++ b/lib/bootstrap/disk.c
@@ -14,7 +14,7 @@
#include <libfile.h>
#include <bootstrap.h>
-void* bootstrap_read_disk(const char *dev, const char *fstype)
+void* bootstrap_read_disk(const char *dev, char *fstype, size_t *bufsize)
{
int ret;
void *buf;
@@ -34,5 +34,8 @@ void* bootstrap_read_disk(const char *dev, const char *fstype)
return NULL;
}
+ if (bufsize)
+ *bufsize = len;
+
return buf;
}