ovl: use generic_readlink
authorMiklos Szeredi <mszeredi@redhat.com>
Tue, 4 Oct 2016 12:40:44 +0000 (14:40 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 14 Oct 2016 09:16:46 +0000 (11:16 +0200)
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>
fs/overlayfs/inode.c

index ce5d7dfaf7693736ec08464677b78e0f40da26fb..50dc214c44f2d285cd9fc90c957357767b9bc482 100644 (file)
@@ -176,25 +176,6 @@ static const char *ovl_get_link(struct dentry *dentry,
        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)
 {
        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 = {
        .setattr        = ovl_setattr,
        .get_link       = ovl_get_link,
-       .readlink       = ovl_readlink,
+       .readlink       = generic_readlink,
        .getattr        = ovl_getattr,
        .setxattr       = generic_setxattr,
        .getxattr       = generic_getxattr,