diff options
Diffstat (limited to 'lib/xarray.c')
-rw-r--r-- | lib/xarray.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/xarray.c b/lib/xarray.c index 3f10198f00b7..2cc3798672f7 100644 --- a/lib/xarray.c +++ b/lib/xarray.c | |||
@@ -800,7 +800,7 @@ void *xas_store(struct xa_state *xas, void *entry) | |||
800 | * entry is set to NULL. | 800 | * entry is set to NULL. |
801 | */ | 801 | */ |
802 | rcu_assign_pointer(*slot, entry); | 802 | rcu_assign_pointer(*slot, entry); |
803 | if (xa_is_node(next)) | 803 | if (xa_is_node(next) && (!node || node->shift)) |
804 | xas_free_nodes(xas, xa_to_node(next)); | 804 | xas_free_nodes(xas, xa_to_node(next)); |
805 | if (!node) | 805 | if (!node) |
806 | break; | 806 | break; |