
Hi Raymond
On Fri, 22 Dec 2023 at 23:31, Raymond Mao raymond.mao@linaro.org wrote:
The current bloblist pointer and size can be retrieved from global data, so we don't need to pass them from the function arguments. This change also help to remove all external access of gd->bloblist outside of bloblist module.
Signed-off-by: Raymond Mao raymond.mao@linaro.org
Changes in v2
- New patch file created for v2.
Changes in v3
- Check the space size before copying the bloblist.
- Add return code of bloblist_reloc().
common/bloblist.c | 10 ++++++++-- common/board_f.c | 8 ++------ include/bloblist.h | 8 ++++---- test/bloblist.c | 6 ++---- 4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/common/bloblist.c b/common/bloblist.c index db3fbb20cf..5ad1db137a 100644 --- a/common/bloblist.c +++ b/common/bloblist.c @@ -472,13 +472,19 @@ void bloblist_show_list(void) } }
-void bloblist_reloc(void *to, uint to_size, void *from, uint from_size) +int bloblist_reloc(void *to, uint to_size) { struct bloblist_hdr *hdr;
memcpy(to, from, from_size);
if (to_size < gd->bloblist->total_size)
return -ENOSPC;
memcpy(to, gd->bloblist, gd->bloblist->total_size); hdr = to; hdr->total_size = to_size;
gd->bloblist = to;
return 0;
}
int bloblist_init(void) diff --git a/common/board_f.c b/common/board_f.c index d4d7d01f8f..00b0430889 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -676,13 +676,9 @@ static int reloc_bloblist(void) return 0; } if (gd->new_bloblist) {
int size = CONFIG_BLOBLIST_SIZE;
debug("Copying bloblist from %p to %p, size %x\n",
gd->bloblist, gd->new_bloblist, size);
bloblist_reloc(gd->new_bloblist, CONFIG_BLOBLIST_SIZE_RELOC,
gd->bloblist, size);
gd->bloblist = gd->new_bloblist;
gd->bloblist, gd->new_bloblist, gd->bloblist->total_size);
bloblist_reloc(gd->new_bloblist, CONFIG_BLOBLIST_SIZE_RELOC);
Why aren't we checking bloblist_reloc() for an error?
}
#endif
[...]
Thanks /Ilias