From: Andrew Goodbody Date: Wed, 16 Jul 2025 09:03:30 +0000 (+0100) Subject: abuf: Remove code that prevented test code running X-Git-Tag: v2025.10-rc1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d29c1092ebe113d31bc95792644350592d1211ff;p=thirdparty%2Fu-boot.git abuf: Remove code that prevented test code running When abuf was introduced some test code was prevented from running using a 'return 0' early in the functions. A comment said it crashed on sandbox due to a 'bug' in realloc. Some time later a bug in abuf_realloc was fixed but this test code was never enabled. Remove the early 'return 0' instances so that the test code can run. Also remove some checks that relied on the implementation details of the U-Boot memory code as these can fail on sandbox which uses system memory code. Besides that this code should be testing abuf implementation not the underlying memory code which has its own tests. Finally use a new #define for the allocs that are meant to fail to ensure they do fail on all CI platforms. This issue found by Smatch. Signed-off-by: Andrew Goodbody --- diff --git a/test/lib/abuf.c b/test/lib/abuf.c index 97b128c01c0..3dced1ddb11 100644 --- a/test/lib/abuf.c +++ b/test/lib/abuf.c @@ -12,6 +12,7 @@ static char test_data[] = "1234"; #define TEST_DATA_LEN sizeof(test_data) +#define HUGE_ALLOC_SIZE 0x60000000 /* Test abuf_set() */ static int lib_test_abuf_set(struct unit_test_state *uts) @@ -93,13 +94,6 @@ static int lib_test_abuf_realloc(struct unit_test_state *uts) { struct abuf buf; ulong start; - void *ptr; - - /* - * TODO: crashes on sandbox sometimes due to an apparent bug in - * realloc(). - */ - return 0; start = ut_check_free(); @@ -116,23 +110,18 @@ static int lib_test_abuf_realloc(struct unit_test_state *uts) ut_assertnonnull(buf.data); ut_asserteq(TEST_DATA_LEN, buf.size); ut_asserteq(true, buf.alloced); - ptr = buf.data; /* - * Make it smaller; the pointer should remain the same. Note this relies - * on knowledge of how U-Boot's realloc() works + * Make it smaller. */ ut_asserteq(true, abuf_realloc(&buf, TEST_DATA_LEN - 1)); ut_asserteq(TEST_DATA_LEN - 1, buf.size); ut_asserteq(true, buf.alloced); - ut_asserteq_ptr(ptr, buf.data); /* - * Make it larger, forcing reallocation. Note this relies on knowledge - * of how U-Boot's realloc() works + * Make it larger. */ ut_asserteq(true, abuf_realloc(&buf, 0x1000)); - ut_assert(buf.data != ptr); ut_asserteq(0x1000, buf.size); ut_asserteq(true, buf.alloced); @@ -210,19 +199,12 @@ static int lib_test_abuf_large(struct unit_test_state *uts) ulong start; size_t size; int delta; - void *ptr; - - /* - * This crashes at present due to trying to allocate more memory than - * available, which breaks something on sandbox. - */ - return 0; start = ut_check_free(); /* Try an impossible size */ abuf_init(&buf); - ut_asserteq(false, abuf_realloc(&buf, CONFIG_SYS_MALLOC_LEN)); + ut_asserteq(false, abuf_realloc(&buf, HUGE_ALLOC_SIZE)); ut_assertnull(buf.data); ut_asserteq(0, buf.size); ut_asserteq(false, buf.alloced); @@ -237,13 +219,11 @@ static int lib_test_abuf_large(struct unit_test_state *uts) ut_assertnonnull(buf.data); ut_asserteq(TEST_DATA_LEN, buf.size); ut_asserteq(true, buf.alloced); - ptr = buf.data; delta = ut_check_delta(start); ut_assert(delta > 0); /* try to increase it */ - ut_asserteq(false, abuf_realloc(&buf, CONFIG_SYS_MALLOC_LEN)); - ut_asserteq_ptr(ptr, buf.data); + ut_asserteq(false, abuf_realloc(&buf, HUGE_ALLOC_SIZE)); ut_asserteq(TEST_DATA_LEN, buf.size); ut_asserteq(true, buf.alloced); ut_asserteq(delta, ut_check_delta(start)); @@ -254,8 +234,8 @@ static int lib_test_abuf_large(struct unit_test_state *uts) /* Start with a huge unallocated buf and try to move it */ abuf_init(&buf); - abuf_map_sysmem(&buf, 0, CONFIG_SYS_MALLOC_LEN); - ut_asserteq(CONFIG_SYS_MALLOC_LEN, buf.size); + abuf_map_sysmem(&buf, 0, HUGE_ALLOC_SIZE); + ut_asserteq(HUGE_ALLOC_SIZE, buf.size); ut_asserteq(false, buf.alloced); ut_assertnull(abuf_uninit_move(&buf, &size)); @@ -278,12 +258,6 @@ static int lib_test_abuf_uninit_move(struct unit_test_state *uts) start = ut_check_free(); - /* - * TODO: crashes on sandbox sometimes due to an apparent bug in - * realloc(). - */ - return 0; - /* Move an empty buffer */ abuf_init(&buf); ut_assertnull(abuf_uninit_move(&buf, &size)); @@ -383,12 +357,6 @@ static int lib_test_abuf_init_move(struct unit_test_state *uts) struct abuf buf; void *ptr; - /* - * TODO: crashes on sandbox sometimes due to an apparent bug in - * realloc(). - */ - return 0; - ptr = strdup(test_data); ut_assertnonnull(ptr);