On Thu, Dec 02, 2021 at 04:20:53PM +0530, Charan Teja Reddy wrote: > +static int shmem_fadvise_willneed(struct address_space *mapping, > + pgoff_t start, pgoff_t long end) > +{ > + XA_STATE(xas, &mapping->i_pages, start); > + struct page *page; > + > + rcu_read_lock(); > + page = xas_find(&xas, end); > + rcu_read_unlock(); > + > + while (page) { > + if (xa_is_value(page)) { > + page = shmem_read_mapping_page(mapping, xas.xa_index); > + if (!IS_ERR(page)) > + put_page(page); > + } > + > + if (need_resched()) { > + xas_pause(&xas); > + cond_resched(); > + } > + > + rcu_read_lock(); > + page = xas_next_entry(&xas, end); > + rcu_read_unlock(); > + } > + > + return 0; > +} What part of the XArray documentation led you to believe that this is a safe thing to do? Because it needs to be rewritten immediately!