Hi Ilias, On Wed, 27 Dec 2023 at 03:33, Ilias Apalodimas <ilias.apalodi...@linaro.org> wrote:
> Hi Raymond > > On Fri, 22 Dec 2023 at 23:31, Raymond Mao <raymond....@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....@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? > > Yes. This should be checked as well here. Will update in v4. [...] Regards, Raymond