summaryrefslogtreecommitdiffstats
path: root/fs/kernfs/symlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/kernfs/symlink.c')
-rw-r--r--fs/kernfs/symlink.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/kernfs/symlink.c b/fs/kernfs/symlink.c
index db272528ab5b..ffae8579045d 100644
--- a/fs/kernfs/symlink.c
+++ b/fs/kernfs/symlink.c
@@ -112,10 +112,15 @@ static int kernfs_getlink(struct dentry *dentry, char *path)
112 return error; 112 return error;
113} 113}
114 114
115static const char *kernfs_iop_follow_link(struct dentry *dentry, void **cookie) 115static const char *kernfs_iop_get_link(struct dentry *dentry,
116 struct inode *inode, void **cookie)
116{ 117{
117 int error = -ENOMEM; 118 int error = -ENOMEM;
118 unsigned long page = get_zeroed_page(GFP_KERNEL); 119 unsigned long page;
120
121 if (!dentry)
122 return ERR_PTR(-ECHILD);
123 page = get_zeroed_page(GFP_KERNEL);
119 if (!page) 124 if (!page)
120 return ERR_PTR(-ENOMEM); 125 return ERR_PTR(-ENOMEM);
121 error = kernfs_getlink(dentry, (char *)page); 126 error = kernfs_getlink(dentry, (char *)page);
@@ -132,7 +137,7 @@ const struct inode_operations kernfs_symlink_iops = {
132 .getxattr = kernfs_iop_getxattr, 137 .getxattr = kernfs_iop_getxattr,
133 .listxattr = kernfs_iop_listxattr, 138 .listxattr = kernfs_iop_listxattr,
134 .readlink = generic_readlink, 139 .readlink = generic_readlink,
135 .follow_link = kernfs_iop_follow_link, 140 .get_link = kernfs_iop_get_link,
136 .put_link = free_page_put_link, 141 .put_link = free_page_put_link,
137 .setattr = kernfs_iop_setattr, 142 .setattr = kernfs_iop_setattr,
138 .getattr = kernfs_iop_getattr, 143 .getattr = kernfs_iop_getattr,