if (!rqstp)
                return rqstp;
 
+       pagevec_init(&rqstp->rq_pvec);
+
        __set_bit(RQ_BUSY, &rqstp->rq_flags);
        rqstp->rq_server = serv;
        rqstp->rq_pool = pool;
 void
 svc_rqst_free(struct svc_rqst *rqstp)
 {
+       pagevec_release(&rqstp->rq_pvec);
        svc_release_buffer(rqstp);
        if (rqstp->rq_scratch_page)
                put_page(rqstp->rq_scratch_page);
 
        kfree(rqstp->rq_deferred);
        rqstp->rq_deferred = NULL;
 
-       pagevec_release(&rqstp->rq_pvec);
        svc_rqst_release_pages(rqstp);
        rqstp->rq_res.page_len = 0;
        rqstp->rq_res.page_base = 0;
        struct xdr_buf *arg = &rqstp->rq_arg;
        unsigned long pages, filled, ret;
 
-       pagevec_init(&rqstp->rq_pvec);
-
        pages = (serv->sv_max_mesg + 2 * PAGE_SIZE) >> PAGE_SHIFT;
        if (pages > RPCSVC_MAXPAGES) {
                pr_warn_once("svc: warning: pages=%lu > RPCSVC_MAXPAGES=%lu\n",