summaryrefslogtreecommitdiffstats
path: root/fs/nfs/proc.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2018-12-02 19:30:30 -0500
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2018-12-19 13:52:46 -0500
commit684f39b4cf5186bb0660e686f94296688b24fb32 (patch)
treeee742af6ae458eb95afdb7e842898de9c52c52ad /fs/nfs/proc.c
parentb68572e07c58324cb8c274f1d84a20cad479c2d3 (diff)
NFS: struct nfs_open_dir_context: convert rpc_cred pointer to cred.
Use the common 'struct cred' to pass credentials for readdir. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs/nfs/proc.c')
-rw-r--r--fs/nfs/proc.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index e0c257bd62b9..1ba717bd20c4 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -490,7 +490,7 @@ nfs_proc_rmdir(struct inode *dir, const struct qstr *name)
490 * from nfs_readdir by calling the decode_entry function directly. 490 * from nfs_readdir by calling the decode_entry function directly.
491 */ 491 */
492static int 492static int
493nfs_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, 493nfs_proc_readdir(struct dentry *dentry, const struct cred *cred,
494 u64 cookie, struct page **pages, unsigned int count, bool plus) 494 u64 cookie, struct page **pages, unsigned int count, bool plus)
495{ 495{
496 struct inode *dir = d_inode(dentry); 496 struct inode *dir = d_inode(dentry);
@@ -500,18 +500,25 @@ nfs_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
500 .count = count, 500 .count = count,
501 .pages = pages, 501 .pages = pages,
502 }; 502 };
503 struct auth_cred acred = {
504 .cred = cred,
505 };
503 struct rpc_message msg = { 506 struct rpc_message msg = {
504 .rpc_proc = &nfs_procedures[NFSPROC_READDIR], 507 .rpc_proc = &nfs_procedures[NFSPROC_READDIR],
505 .rpc_argp = &arg, 508 .rpc_argp = &arg,
506 .rpc_cred = cred, 509 .rpc_cred = rpc_lookup_generic_cred(&acred,
510 0, GFP_NOFS),
507 }; 511 };
508 int status; 512 int status;
509 513
510 dprintk("NFS call readdir %d\n", (unsigned int)cookie); 514 dprintk("NFS call readdir %d\n", (unsigned int)cookie);
515 if (!msg.rpc_cred)
516 return -ENOMEM;
511 status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); 517 status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
512 518
513 nfs_invalidate_atime(dir); 519 nfs_invalidate_atime(dir);
514 520
521 put_rpccred(msg.rpc_cred);
515 dprintk("NFS reply readdir: %d\n", status); 522 dprintk("NFS reply readdir: %d\n", status);
516 return status; 523 return status;
517} 524}