On 28 May 2025, at 7:31, Dev Jain wrote: > Suppose xas is pointing somewhere near the end of the multi-entry batch. > Then it may happen that the computed slot already falls beyond the batch, > thus breaking the loop due to !xa_is_sibling(), and computing the wrong > order. Thus ensure that the caller is aware of this by triggering a BUG > when the entry is a sibling entry. Is it possible to add a test case in lib/test_xarray.c for this? You can compile the tests with “make -C tools/testing/radix-tree” and run “./tools/testing/radix-tree/xarray”. > > This patch is motivated by code inspection and not a real bug report. > > Signed-off-by: Dev Jain <dev.jain@xxxxxxx> > --- > The patch applies on 6.15 kernel. > > lib/xarray.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/xarray.c b/lib/xarray.c > index 9644b18af18d..0f699766c24f 100644 > --- a/lib/xarray.c > +++ b/lib/xarray.c > @@ -1917,6 +1917,8 @@ int xas_get_order(struct xa_state *xas) > if (!xas->xa_node) > return 0; > > + XA_NODE_BUG_ON(xas->xa_node, xa_is_sibling(xa_entry(xas->xa, > + xas->xa_node, xas->xa_offset))); > for (;;) { > unsigned int slot = xas->xa_offset + (1 << order); > > -- > 2.30.2 Best Regards, Yan, Zi