From: Anthony Brennan > Sent: 22 December 2023 00:15 > > commit 59d0d52c30d4991ac4b329f049cc37118e00f5b0 upstream > > Stops kernel from crashing when encountering an XAS retry entry. Patch modified > from upstream to work with pages instead of folios, and omits fixes to "dodgy > maths" as unrelated to fixing the crash. > > Signed-off-by: Anthony Brennan <a2brenna@xxxxxxxxx> > --- > fs/netfs/read_helper.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/fs/netfs/read_helper.c b/fs/netfs/read_helper.c > index 242f8bcb34a4..4de15555bceb 100644 > --- a/fs/netfs/read_helper.c > +++ b/fs/netfs/read_helper.c > @@ -248,6 +248,9 @@ static void netfs_rreq_unmark_after_write(struct netfs_read_request *rreq, > XA_STATE(xas, &rreq->mapping->i_pages, subreq->start / PAGE_SIZE); > > xas_for_each(&xas, page, (subreq->start + subreq->len - 1) / PAGE_SIZE) { > + if(xas_retry(&xas, page)) 'if' is not a function. > + continue; > + > /* We might have multiple writes from the same huge > * page, but we mustn't unlock a page more than once. > */ > @@ -403,6 +406,9 @@ static void netfs_rreq_unlock(struct netfs_read_request *rreq) > unsigned int pgend = pgpos + thp_size(page); > bool pg_failed = false; > > + if(xas_retry(&xas, page)) > + continue; > + > for (;;) { > if (!subreq) { > pg_failed = true; > -- > 2.30.2 - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)