1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * eCryptfs: Linux filesystem encryption layer 4 * 5 * Copyright (C) 1997-2004 Erez Zadok 6 * Copyright (C) 2001-2004 Stony Brook University 7 * Copyright (C) 2004-2007 International Business Machines Corp. 8 * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com> --- 64 unchanged lines hidden (view full) --- 73 74static struct inode *__ecryptfs_get_inode(struct inode *lower_inode, 75 struct super_block *sb) 76{ 77 struct inode *inode; 78 79 if (lower_inode->i_sb != ecryptfs_superblock_to_lower(sb)) 80 return ERR_PTR(-EXDEV); |
81 82 /* Reject dealing with casefold directories. */ 83 if (IS_CASEFOLDED(lower_inode)) { 84 pr_err_ratelimited("%s: Can't handle casefolded directory.\n", 85 __func__); 86 return ERR_PTR(-EREMOTE); 87 } 88 |
89 if (!igrab(lower_inode)) 90 return ERR_PTR(-ESTALE); 91 inode = iget5_locked(sb, (unsigned long)lower_inode, 92 ecryptfs_inode_test, ecryptfs_inode_set, 93 lower_inode); 94 if (!inode) { 95 iput(lower_inode); 96 return ERR_PTR(-EACCES); --- 505 unchanged lines hidden (view full) --- 602 lower_new_dir_dentry = ecryptfs_dentry_to_lower(new_dentry->d_parent); 603 604 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); 605 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); 606 607 target_inode = d_inode(new_dentry); 608 609 trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); |
610 if (IS_ERR(trap)) 611 return PTR_ERR(trap); |
612 dget(lower_new_dentry); 613 rc = -EINVAL; 614 if (lower_old_dentry->d_parent != lower_old_dir_dentry) 615 goto out_lock; 616 if (lower_new_dentry->d_parent != lower_new_dir_dentry) 617 goto out_lock; 618 if (d_unhashed(lower_old_dentry) || d_unhashed(lower_new_dentry)) 619 goto out_lock; --- 615 unchanged lines hidden --- |