struct netfs_io_request *rreq = subreq->rreq;
        struct cifs_io_subrequest *rdata = container_of(subreq, struct cifs_io_subrequest, subreq);
        struct cifs_io_request *req = container_of(subreq->rreq, struct cifs_io_request, rreq);
-       struct TCP_Server_Info *server = req->server;
+       struct TCP_Server_Info *server;
        struct cifs_sb_info *cifs_sb = CIFS_SB(rreq->inode->i_sb);
        size_t size;
        int rc = 0;
                rdata->xid = get_xid();
                rdata->have_xid = true;
        }
+
+       server = cifs_pick_channel(tlink_tcon(req->cfile->tlink)->ses);
        rdata->server = server;
 
        if (cifs_sb->ctx->rsize == 0)
        struct netfs_io_request *rreq = subreq->rreq;
        struct cifs_io_subrequest *rdata = container_of(subreq, struct cifs_io_subrequest, subreq);
        struct cifs_io_request *req = container_of(subreq->rreq, struct cifs_io_request, rreq);
-       struct TCP_Server_Info *server = req->server;
+       struct TCP_Server_Info *server = rdata->server;
        int rc = 0;
 
        cifs_dbg(FYI, "%s: op=%08x[%x] mapping=%p len=%zu/%zu\n",
                open_file = file->private_data;
                rreq->netfs_priv = file->private_data;
                req->cfile = cifsFileInfo_get(open_file);
-               req->server = cifs_pick_channel(tlink_tcon(req->cfile->tlink)->ses);
                if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_RWPIDFORWARD)
                        req->pid = req->cfile->pid;
        } else if (rreq->origin != NETFS_WRITEBACK) {