u-boot/test
Sam Protsenko 8b8b35a4f5 lmb: Return -EEXIST in lmb_add_region_flags() if region already added
An attempt to add the already added LMB region using
lmb_add_region_flags() ends up in lmb_addrs_overlap() check, which
eventually leads to either returning 0 if 'flags' is LMB_NONE, or -1
otherwise. It makes it impossible for the user of this function to catch
the case when the region is already added and differentiate it from
regular errors. That in turn may lead to incorrect error handling in the
caller code, like reporting misleading errors or interrupting the normal
code path where it could be treated as the normal case. An example is
boot_fdt_reserve_region() function, which might be called twice (e.g.
during board startup in initr_lmb(), and then during 'booti' command
booting the OS), thus trying to reserve exactly the same memory regions
described in the device tree twice, which produces an error message on
second call.

Return -EEXIST error code in case when the added region exists and it's
not LMB_NONE; for LMB_NONE return 0, to conform to unit tests
(specifically test_alloc_addr() in test/lib/lmb.c) and the preferred
behavior described in commit 1d9aa4a283 ("lmb: Fix the allocation of
overlapping memory areas with !LMB_NONE"). The change of
lmb_add_region_flags() return values is described in the table below:

    Return case                        Pre-1d9   1d9    New
    -----------------------------------------------------------
    Added successfully                    0      0      0
    Failed to add                         -1     -1     -1
    Already added, flags == LMB_NONE      0      0      0
    Already added, flags != LMB_NONE      0      -1     -EEXIST

Rework all affected functions and their documentation. Also fix the
corresponding unit test which checks reserving the same region with the
same flags to account for the changed return value.

No functional change is intended (by this patch itself).

Fixes: 1d9aa4a283 ("lmb: Fix the allocation of overlapping memory areas with !LMB_NONE")
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Michal Simek <michal.simek@amd.com>
2024-12-12 09:20:32 -06:00
..
boot test: boot: Set DM|SCAN_FDT flags for bootmeth_{cros,android} 2024-11-22 14:37:21 -06:00
cmd test/cmd/wget.c: move net_test_wget() to the cmd test suite 2024-11-29 07:51:57 -06:00
common test: print_printf() must check availability of %ls 2024-11-14 18:14:06 -06:00
dm dm: Add dm_remove_devices_active() for ordered device removal 2024-11-24 15:41:28 -06:00
env test: Rename UTF_CONSOLE_REC to UTF_CONSOLE 2024-08-26 18:51:49 -06:00
fs test: fs: fs-test: Move the tests to use sha256sum 2024-01-11 21:19:25 -05:00
fuzz global: Rename SPL_ to XPL_ 2024-10-11 11:44:48 -06:00
hush test/hush: Add CONFIG_CONSOLE_RECORD where required 2024-10-29 16:17:47 -06:00
image spl: Create a function to init spl_load_info 2024-08-23 15:58:42 -06:00
lib lmb: Return -EEXIST in lmb_add_region_flags() if region already added 2024-12-12 09:20:32 -06:00
log Merge patch series "Tidy up console recording in tests" 2024-08-26 18:52:18 -06:00
optee Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"" 2024-05-19 08:16:36 -06:00
overlay test/overlay: Make this depend on SANDBOX 2024-08-23 15:59:39 -06:00
py test/py: spi: Rephrase the warning/error messages 2024-11-15 13:11:29 -06:00
stdint Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"" 2024-05-19 08:16:36 -06:00
cmd_ut.c test: Move time tests into the lib suite 2024-11-13 11:56:02 -06:00
Kconfig test: Remove ASN1 library test 2024-10-14 17:58:52 -06:00
Makefile test: Move time_ut test into lib 2024-11-13 11:56:02 -06:00
run test: Run the VPL tests with 'make check' 2023-04-03 06:53:53 +12:00
test-main.c Merge patch series "test: Tidy up the test/ directory" 2024-11-13 16:02:58 -06:00
ut.c test: Fail when an empty line is expected but not present 2024-08-26 18:51:48 -06:00