@@ -1314,6 +1314,7 @@ uint64_t xdr_expand_hole(struct xdr_stream *xdr, uint64_t offset, uint64_t lengt
unsigned int res = _shift_data_right_tail(buf, from + bytes - shift, shift);
truncated = shift - res;
xdr->nwords -= XDR_QUADLEN(truncated);
+ buf->len -= 4 * XDR_QUADLEN(truncated);
bytes -= shift;
}
@@ -1325,7 +1326,7 @@ uint64_t xdr_expand_hole(struct xdr_stream *xdr, uint64_t offset, uint64_t lengt
bytes);
_zero_pages(buf->pages, buf->page_base + offset, length);
- buf->len += length - (from - offset) - truncated;
+ buf->len += length - (from - offset);
xdr_set_page(xdr, offset + length, PAGE_SIZE);
return length;
}