struct kstat stat;
        struct svc_fh *tempfh = NULL;
        struct kstatfs statfs;
-       __be32 *p;
+       __be32 *p, *attrlen_p;
        int starting_len = xdr->buf->len;
        int attrlen_offset;
-       __be32 attrlen;
        u32 dummy;
        u64 dummy64;
        u32 rdattr_err = 0;
                goto out;
 
        attrlen_offset = xdr->buf->len;
-       p = xdr_reserve_space(xdr, 4);
-       if (!p)
+       attrlen_p = xdr_reserve_space(xdr, XDR_UNIT);
+       if (!attrlen_p)
                goto out_resource;
-       p++;                /* to be backfilled later */
 
        if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) {
                u32 supp[3];
                *p++ = cpu_to_be32(err == 0);
        }
 
-       attrlen = htonl(xdr->buf->len - attrlen_offset - 4);
-       write_bytes_to_xdr_buf(xdr->buf, attrlen_offset, &attrlen, 4);
+       *attrlen_p = cpu_to_be32(xdr->buf->len - attrlen_offset - XDR_UNIT);
        status = nfs_ok;
 
 out: