On Wed, Jul 25, 2018 at 11:53:15PM -0700, Hugh Dickins wrote: > Now I've learnt that an oops on 0xffffffffffffffbe points to EEXIST, > not to EREMOTE, it's easy: patch below fixes those four xfstests > (and no doubt a similar oops I've seen occasionally under swapping > load): so gives clean xfstests runs for non-huge and huge tmpfs. Excellent! I'm adding this: +++ b/lib/test_xarray.c @@ -741,6 +741,13 @@ static noinline void check_create_range_2(struct xarray *xa , unsigned order) XA_BUG_ON(xa, !xa_empty(xa)); } +static noinline void check_create_range_3(void) +{ + XA_STATE(xas, NULL, 0); + xas_set_err(&xas, -EEXIST); + xas_create_range(&xas); +} + static noinline void check_create_range(struct xarray *xa) { unsigned int order; @@ -755,6 +762,8 @@ static noinline void check_create_range(struct xarray *xa) if (order < 10) check_create_range_2(xa, order); } + + check_create_range_3(); } static LIST_HEAD(shadow_nodes); and fixing the bug differently ;-) But many thanks for spotting it! I'll look into the next bug you reported ...