Browse Source

ovl: use generic_readlink

All filesystems that are backers for overlayfs would also use
generic_readlink().  Move this logic to the overlay itself, which is a nice
cleanup.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Miklos Szeredi 8 years ago
parent
commit
78a3fa4f32
1 changed files with 1 additions and 20 deletions
  1. 1 20
      fs/overlayfs/inode.c

+ 1 - 20
fs/overlayfs/inode.c

@@ -176,25 +176,6 @@ static const char *ovl_get_link(struct dentry *dentry,
 	return p;
 	return p;
 }
 }
 
 
-static int ovl_readlink(struct dentry *dentry, char __user *buf, int bufsiz)
-{
-	struct path realpath;
-	struct inode *realinode;
-	const struct cred *old_cred;
-	int err;
-
-	ovl_path_real(dentry, &realpath);
-	realinode = realpath.dentry->d_inode;
-
-	if (!realinode->i_op->readlink)
-		return -EINVAL;
-
-	old_cred = ovl_override_creds(dentry->d_sb);
-	err = realinode->i_op->readlink(realpath.dentry, buf, bufsiz);
-	revert_creds(old_cred);
-	return err;
-}
-
 bool ovl_is_private_xattr(const char *name)
 bool ovl_is_private_xattr(const char *name)
 {
 {
 	return strncmp(name, OVL_XATTR_PREFIX,
 	return strncmp(name, OVL_XATTR_PREFIX,
@@ -381,7 +362,7 @@ static const struct inode_operations ovl_file_inode_operations = {
 static const struct inode_operations ovl_symlink_inode_operations = {
 static const struct inode_operations ovl_symlink_inode_operations = {
 	.setattr	= ovl_setattr,
 	.setattr	= ovl_setattr,
 	.get_link	= ovl_get_link,
 	.get_link	= ovl_get_link,
-	.readlink	= ovl_readlink,
+	.readlink	= generic_readlink,
 	.getattr	= ovl_getattr,
 	.getattr	= ovl_getattr,
 	.setxattr	= generic_setxattr,
 	.setxattr	= generic_setxattr,
 	.getxattr	= generic_getxattr,
 	.getxattr	= generic_getxattr,