Update to 2.6.32.41 Mainline
/fs/nfs/nfs4proc.c
blob:eb4421bb1ac3ff0a6eb90e3d8f1b284d703e886a -> blob:3c7581bcdb0d3a10cd98cd25bae42daa3b7225a3
--- fs/nfs/nfs4proc.c
+++ fs/nfs/nfs4proc.c
@@ -3133,35 +3133,6 @@ static void buf_to_pages(const void *buf
}
}
-static int buf_to_pages_noslab(const void *buf, size_t buflen,
- struct page **pages, unsigned int *pgbase)
-{
- struct page *newpage, **spages;
- int rc = 0;
- size_t len;
- spages = pages;
-
- do {
- len = min_t(size_t, PAGE_CACHE_SIZE, buflen);
- newpage = alloc_page(GFP_KERNEL);
-
- if (newpage == NULL)
- goto unwind;
- memcpy(page_address(newpage), buf, len);
- buf += len;
- buflen -= len;
- *pages++ = newpage;
- rc++;
- } while (buflen != 0);
-
- return rc;
-
-unwind:
- for(; rc > 0; rc--)
- __free_page(spages[rc-1]);
- return -ENOMEM;
-}
-
struct nfs4_cached_acl {
int cached;
size_t len;
@@ -3328,23 +3299,13 @@ static int __nfs4_proc_set_acl(struct in
.rpc_argp = &arg,
.rpc_resp = &res,
};
- int ret, i;
+ int ret;
if (!nfs4_server_supports_acls(server))
return -EOPNOTSUPP;
- i = buf_to_pages_noslab(buf, buflen, arg.acl_pages, &arg.acl_pgbase);
- if (i < 0)
- return i;
nfs_inode_return_delegation(inode);
+ buf_to_pages(buf, buflen, arg.acl_pages, &arg.acl_pgbase);
ret = nfs4_call_sync(server, &msg, &arg, &res, 1);
-
- /*
- * Free each page after tx, so the only ref left is
- * held by the network stack
- */
- for (; i > 0; i--)
- put_page(pages[i-1]);
-
nfs_access_zap_cache(inode);
nfs_zap_acl_cache(inode);
return ret;