summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2019-05-01 12:06:35 -0400
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2019-05-09 16:26:57 -0400
commita46126ccc77e764429d63bf958d117f607f4b6c6 (patch)
tree00cd9f45890ffa99dacfe50924142db80ea63485
parent8ca017c8cee3aa6a37ddf1db7fd04c54536a0ef0 (diff)
nfs: pass the correct prototype to read_cache_page
Fix the callbacks NFS passes to read_cache_page to actually have the proper type expected. Casting around function pointers can easily hide typing bugs, and defeats control flow protection. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r--fs/nfs/dir.c7
-rw-r--r--fs/nfs/symlink.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index a71d0b42d160..47d445bec8c9 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -714,8 +714,9 @@ out:
714 * We only need to convert from xdr once so future lookups are much simpler 714 * We only need to convert from xdr once so future lookups are much simpler
715 */ 715 */
716static 716static
717int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page* page) 717int nfs_readdir_filler(void *data, struct page* page)
718{ 718{
719 nfs_readdir_descriptor_t *desc = data;
719 struct inode *inode = file_inode(desc->file); 720 struct inode *inode = file_inode(desc->file);
720 int ret; 721 int ret;
721 722
@@ -762,8 +763,8 @@ void cache_page_release(nfs_readdir_descriptor_t *desc)
762static 763static
763struct page *get_cache_page(nfs_readdir_descriptor_t *desc) 764struct page *get_cache_page(nfs_readdir_descriptor_t *desc)
764{ 765{
765 return read_cache_page(desc->file->f_mapping, 766 return read_cache_page(desc->file->f_mapping, desc->page_index,
766 desc->page_index, (filler_t *)nfs_readdir_filler, desc); 767 nfs_readdir_filler, desc);
767} 768}
768 769
769/* 770/*
diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
index 06eb44b47885..25ba299fdac2 100644
--- a/fs/nfs/symlink.c
+++ b/fs/nfs/symlink.c
@@ -26,8 +26,9 @@
26 * and straight-forward than readdir caching. 26 * and straight-forward than readdir caching.
27 */ 27 */
28 28
29static int nfs_symlink_filler(struct inode *inode, struct page *page) 29static int nfs_symlink_filler(void *data, struct page *page)
30{ 30{
31 struct inode *inode = data;
31 int error; 32 int error;
32 33
33 error = NFS_PROTO(inode)->readlink(inode, page, 0, PAGE_SIZE); 34 error = NFS_PROTO(inode)->readlink(inode, page, 0, PAGE_SIZE);
@@ -65,8 +66,8 @@ static const char *nfs_get_link(struct dentry *dentry,
65 err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping)); 66 err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping));
66 if (err) 67 if (err)
67 return err; 68 return err;
68 page = read_cache_page(&inode->i_data, 0, 69 page = read_cache_page(&inode->i_data, 0, nfs_symlink_filler,
69 (filler_t *)nfs_symlink_filler, inode); 70 inode);
70 if (IS_ERR(page)) 71 if (IS_ERR(page))
71 return ERR_CAST(page); 72 return ERR_CAST(page);
72 } 73 }