• Luis Chamberlain's avatar
    lib/test_xarray.c: fix error assumptions on check_xa_multi_store_adv_add() · 2aaba39e
    Luis Chamberlain authored
    While testing lib/test_xarray in userspace I've noticed we can fail with:
    
    make -C tools/testing/radix-tree
    ./tools/testing/radix-tree/xarray
    
    BUG at check_xa_multi_store_adv_add:749
    xarray: 0x55905fb21a00x head 0x55905fa1d8e0x flags 0 marks 0 0 0
    0: 0x55905fa1d8e0x
    xarray: ../../../lib/test_xarray.c:749: check_xa_multi_store_adv_add: Assertion `0' failed.
    Aborted
    
    We get a failure with a BUG_ON(), and that is because we actually can
    fail due to -ENOMEM, the check in xas_nomem() will fix this for us so
    it makes no sense to expect no failure inside the loop. So modify the
    check and since this is also useful for instructional purposes clarify
    the situation.
    
    The check for XA_BUG_ON(xa, xa_load(xa, index) != p) is already done
    at the end of the loop so just remove the bogus on inside the loop.
    
    With this we now pass the test in both kernel and userspace:
    
    In userspace:
    
    ./tools/testing/radix-tree/xarray
    XArray: 149092856 of 149092856 tests passed
    
    In kernel space:
    
    XArray: 148257077 of 148257077 tests passed
    
    Link: https://lkml.kernel.org/r/20240423192221.301095-3-mcgrof@kernel.org
    Fixes: a60cc288
    
     ("test_xarray: add tests for advanced multi-index use")
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Cc: Daniel Gomez <da.gomez@samsung.com>
    Cc: Darrick J. Wong <djwong@kernel.org>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Pankaj Raghav <p.raghav@samsung.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    2aaba39e
test_xarray.c 54 KB