|
|
|
@ -116,19 +116,19 @@ static const char *kernfs_iop_get_link(struct dentry *dentry, |
|
|
|
|
struct inode *inode, void **cookie) |
|
|
|
|
{ |
|
|
|
|
int error = -ENOMEM; |
|
|
|
|
unsigned long page; |
|
|
|
|
char *page; |
|
|
|
|
|
|
|
|
|
if (!dentry) |
|
|
|
|
return ERR_PTR(-ECHILD); |
|
|
|
|
page = get_zeroed_page(GFP_KERNEL); |
|
|
|
|
page = kzalloc(PAGE_SIZE, GFP_KERNEL); |
|
|
|
|
if (!page) |
|
|
|
|
return ERR_PTR(-ENOMEM); |
|
|
|
|
error = kernfs_getlink(dentry, (char *)page); |
|
|
|
|
error = kernfs_getlink(dentry, page); |
|
|
|
|
if (unlikely(error < 0)) { |
|
|
|
|
free_page((unsigned long)page); |
|
|
|
|
kfree(page); |
|
|
|
|
return ERR_PTR(error); |
|
|
|
|
} |
|
|
|
|
return *cookie = (char *)page; |
|
|
|
|
return *cookie = page; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const struct inode_operations kernfs_symlink_iops = { |
|
|
|
@ -138,7 +138,7 @@ const struct inode_operations kernfs_symlink_iops = { |
|
|
|
|
.listxattr = kernfs_iop_listxattr, |
|
|
|
|
.readlink = generic_readlink, |
|
|
|
|
.get_link = kernfs_iop_get_link, |
|
|
|
|
.put_link = free_page_put_link, |
|
|
|
|
.put_link = kfree_put_link, |
|
|
|
|
.setattr = kernfs_iop_setattr, |
|
|
|
|
.getattr = kernfs_iop_getattr, |
|
|
|
|
.permission = kernfs_iop_permission, |
|
|
|
|