Hi Raymond I think my r-b tag got lost across versions
On Wed, 3 Jan 2024 at 00:13, Raymond Mao <raymond....@linaro.org> wrote: > > Instead of expecting the bloblist total size to be the same as the > pre-allocated buffer size, practically we are more interested in > whether the pre-allocated buffer size is bigger than the bloblist > total size. > > Signed-off-by: Raymond Mao <raymond....@linaro.org> > --- > Changes in v2 > - New patch file created for v2. > Changes in v4 > - Update function header of bloblist_check(). > > common/bloblist.c | 2 +- > include/bloblist.h | 9 +++++---- > test/bloblist.c | 2 +- > 3 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/common/bloblist.c b/common/bloblist.c > index acf67304d0..4039eb3a03 100644 > --- a/common/bloblist.c > +++ b/common/bloblist.c > @@ -384,7 +384,7 @@ int bloblist_check(ulong addr, uint size) > return log_msg_ret("Bad magic", -ENOENT); > if (hdr->version != BLOBLIST_VERSION) > return log_msg_ret("Bad version", -EPROTONOSUPPORT); > - if (!hdr->total_size || (size && hdr->total_size != size)) > + if (!hdr->total_size || (size && hdr->total_size > size)) > return log_msg_ret("Bad total size", -EFBIG); > if (hdr->used_size > hdr->total_size) > return log_msg_ret("Bad used size", -ENOENT); > diff --git a/include/bloblist.h b/include/bloblist.h > index bf9e12ebf8..1906847c15 100644 > --- a/include/bloblist.h > +++ b/include/bloblist.h > @@ -348,12 +348,13 @@ int bloblist_new(ulong addr, uint size, uint flags, > uint align_log2); > * bloblist_check() - Check if a bloblist exists > * > * @addr: Address of bloblist > - * @size: Expected size of blobsize, or 0 to detect the size > + * @size: Reserved space size for blobsize, or 0 to use the total size > * Return: 0 if OK, -ENOENT if the magic number doesn't match (indicating > that > - * there problem is no bloblist at the given address), -EPROTONOSUPPORT > + * there problem is no bloblist at the given address) or any fields for > header > + * size, used size and total size do not match, -EPROTONOSUPPORT > * if the version does not match, -EIO if the checksum does not match, > - * -EFBIG if the expected size does not match the detected size, -ENOSPC > - * if the size is not large enough to hold the headers > + * -EFBIG if the reserved space size is small than the total size or total > size > + * is 0 > */ > int bloblist_check(ulong addr, uint size); > > diff --git a/test/bloblist.c b/test/bloblist.c > index 17d9dd03d0..7dab9addf8 100644 > --- a/test/bloblist.c > +++ b/test/bloblist.c > @@ -207,7 +207,7 @@ static int bloblist_test_checksum(struct unit_test_state > *uts) > hdr->flags++; > > hdr->total_size--; > - ut_asserteq(-EFBIG, bloblist_check(TEST_ADDR, TEST_BLOBLIST_SIZE)); > + ut_asserteq(-EIO, bloblist_check(TEST_ADDR, TEST_BLOBLIST_SIZE)); > hdr->total_size++; > > hdr->spare++; > -- > 2.25.1 > Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>