diff options
Diffstat (limited to 'fs/ecryptfs/inode.c')
| -rw-r--r-- | fs/ecryptfs/inode.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 89209f00f9c7..0111906a8877 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
| @@ -612,8 +612,7 @@ ecryptfs_readlink(struct dentry *dentry, char __user * buf, int bufsiz) | |||
| 612 | struct ecryptfs_crypt_stat *crypt_stat; | 612 | struct ecryptfs_crypt_stat *crypt_stat; |
| 613 | 613 | ||
| 614 | lower_dentry = ecryptfs_dentry_to_lower(dentry); | 614 | lower_dentry = ecryptfs_dentry_to_lower(dentry); |
| 615 | if (!lower_dentry->d_inode->i_op || | 615 | if (!lower_dentry->d_inode->i_op->readlink) { |
| 616 | !lower_dentry->d_inode->i_op->readlink) { | ||
| 617 | rc = -EINVAL; | 616 | rc = -EINVAL; |
| 618 | goto out; | 617 | goto out; |
| 619 | } | 618 | } |
| @@ -673,10 +672,11 @@ static void *ecryptfs_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
| 673 | ecryptfs_printk(KERN_DEBUG, "Calling readlink w/ " | 672 | ecryptfs_printk(KERN_DEBUG, "Calling readlink w/ " |
| 674 | "dentry->d_name.name = [%s]\n", dentry->d_name.name); | 673 | "dentry->d_name.name = [%s]\n", dentry->d_name.name); |
| 675 | rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); | 674 | rc = dentry->d_inode->i_op->readlink(dentry, (char __user *)buf, len); |
| 676 | buf[rc] = '\0'; | ||
| 677 | set_fs(old_fs); | 675 | set_fs(old_fs); |
| 678 | if (rc < 0) | 676 | if (rc < 0) |
| 679 | goto out_free; | 677 | goto out_free; |
| 678 | else | ||
| 679 | buf[rc] = '\0'; | ||
| 680 | rc = 0; | 680 | rc = 0; |
| 681 | nd_set_link(nd, buf); | 681 | nd_set_link(nd, buf); |
| 682 | goto out; | 682 | goto out; |
