{
        struct nfsd3_getaclres *resp = rqstp->rq_resp;
        struct dentry *dentry = resp->fh.fh_dentry;
-       struct kvec *head = rqstp->rq_res.head;
        struct inode *inode;
-       unsigned int base;
-       int n;
-       int w;
 
        if (!svcxdr_encode_nfsstat3(xdr, resp->status))
                return false;
                if (xdr_stream_encode_u32(xdr, resp->mask) < 0)
                        return false;
 
-               base = (char *)xdr->p - (char *)head->iov_base;
-
-               rqstp->rq_res.page_len = w = nfsacl_size(
-                       (resp->mask & NFS_ACL)   ? resp->acl_access  : NULL,
-                       (resp->mask & NFS_DFACL) ? resp->acl_default : NULL);
-               while (w > 0) {
-                       if (!*(rqstp->rq_next_page++))
-                               return false;
-                       w -= PAGE_SIZE;
-               }
-
-               n = nfsacl_encode(&rqstp->rq_res, base, inode,
-                                 resp->acl_access,
-                                 resp->mask & NFS_ACL, 0);
-               if (n > 0)
-                       n = nfsacl_encode(&rqstp->rq_res, base + n, inode,
-                                         resp->acl_default,
-                                         resp->mask & NFS_DFACL,
-                                         NFS_ACL_DEFAULT);
-               if (n <= 0)
+               if (!nfs_stream_encode_acl(xdr, inode, resp->acl_access,
+                                          resp->mask & NFS_ACL, 0))
+                       return false;
+               if (!nfs_stream_encode_acl(xdr, inode, resp->acl_default,
+                                          resp->mask & NFS_DFACL,
+                                          NFS_ACL_DEFAULT))
                        return false;
                break;
        default: