inode.c (6b93f350e55f3f2ee071dd41109d936abfba8ebf) inode.c (bf4e7080aeed29354cb156a8eb5d221ab2b6a8cc)
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);
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
81 if (!igrab(lower_inode))
82 return ERR_PTR(-ESTALE);
83 inode = iget5_locked(sb, (unsigned long)lower_inode,
84 ecryptfs_inode_test, ecryptfs_inode_set,
85 lower_inode);
86 if (!inode) {
87 iput(lower_inode);
88 return ERR_PTR(-EACCES);

--- 505 unchanged lines hidden (view full) ---

594 lower_new_dir_dentry = ecryptfs_dentry_to_lower(new_dentry->d_parent);
595
596 lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry);
597 lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry);
598
599 target_inode = d_inode(new_dentry);
600
601 trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry);
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);
602 dget(lower_new_dentry);
603 rc = -EINVAL;
604 if (lower_old_dentry->d_parent != lower_old_dir_dentry)
605 goto out_lock;
606 if (lower_new_dentry->d_parent != lower_new_dir_dentry)
607 goto out_lock;
608 if (d_unhashed(lower_old_dentry) || d_unhashed(lower_new_dentry))
609 goto out_lock;

--- 615 unchanged lines hidden ---
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 ---