--- x/fs/netfs/read_collect.c +++ y/fs/netfs/read_collect.c @@ -289,6 +289,10 @@ reassess: /* Remove if completely consumed. */ stream->source = front->source; spin_lock(&rreq->lock); + if (front != stream->front) { + spin_unlock(&rreq->lock); + goto reassess; + } remove = front; trace_netfs_sreq(front, netfs_sreq_trace_discard);