rqstp->rq_argbuf.base = data;
rqstp->rq_argbuf.buf = data;
rqstp->rq_argbuf.len = (len >> 2);
+ rqstp->rq_argbuf.buflen = (len >> 2);
/* rqstp->rq_resbuf = rqstp->rq_defbuf; */
rqstp->rq_prot = IPPROTO_UDP;
dprintk("svc: TCP complete record (%d bytes)\n", len);
- /* Position reply write pointer immediately after
- * record length */
- rqstp->rq_resbuf.buf += 1;
+ /* Position reply write pointer immediately args,
+ * allowing for record length */
+ rqstp->rq_resbuf.base = rqstp->rq_argbuf.base + (len>>2);
+ rqstp->rq_resbuf.buf = rqstp->rq_resbuf.base + 1;
rqstp->rq_resbuf.len = 1;
+ rqstp->rq_resbuf.buflen= rqstp->rq_argbuf.buflen - (len>>2) - 1;
rqstp->rq_skbuff = 0;
rqstp->rq_argbuf.buf += 1;
rqstp->rq_argbuf.len = (len >> 2);
+ rqstp->rq_argbuf.buflen = (len >> 2);
rqstp->rq_prot = IPPROTO_TCP;
/* Reset TCP read info */