|
@@ -147,7 +147,6 @@ static int ecryptfs_interpose(struct dentry *lower_dentry,
|
|
* @lower_dir_inode: inode of the parent in the lower fs of the new file
|
|
* @lower_dir_inode: inode of the parent in the lower fs of the new file
|
|
* @dentry: New file's dentry
|
|
* @dentry: New file's dentry
|
|
* @mode: The mode of the new file
|
|
* @mode: The mode of the new file
|
|
- * @nd: nameidata of ecryptfs' parent's dentry & vfsmount
|
|
|
|
*
|
|
*
|
|
* Creates the file in the lower file system.
|
|
* Creates the file in the lower file system.
|
|
*
|
|
*
|
|
@@ -155,31 +154,10 @@ static int ecryptfs_interpose(struct dentry *lower_dentry,
|
|
*/
|
|
*/
|
|
static int
|
|
static int
|
|
ecryptfs_create_underlying_file(struct inode *lower_dir_inode,
|
|
ecryptfs_create_underlying_file(struct inode *lower_dir_inode,
|
|
- struct dentry *dentry, int mode,
|
|
|
|
- struct nameidata *nd)
|
|
|
|
|
|
+ struct dentry *dentry, int mode)
|
|
{
|
|
{
|
|
struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry);
|
|
struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry);
|
|
- struct vfsmount *lower_mnt = ecryptfs_dentry_to_lower_mnt(dentry);
|
|
|
|
- struct dentry *dentry_save;
|
|
|
|
- struct vfsmount *vfsmount_save;
|
|
|
|
- unsigned int flags_save;
|
|
|
|
- int rc;
|
|
|
|
-
|
|
|
|
- if (nd) {
|
|
|
|
- dentry_save = nd->path.dentry;
|
|
|
|
- vfsmount_save = nd->path.mnt;
|
|
|
|
- flags_save = nd->flags;
|
|
|
|
- nd->path.dentry = lower_dentry;
|
|
|
|
- nd->path.mnt = lower_mnt;
|
|
|
|
- nd->flags &= ~LOOKUP_OPEN;
|
|
|
|
- }
|
|
|
|
- rc = vfs_create(lower_dir_inode, lower_dentry, mode, nd);
|
|
|
|
- if (nd) {
|
|
|
|
- nd->path.dentry = dentry_save;
|
|
|
|
- nd->path.mnt = vfsmount_save;
|
|
|
|
- nd->flags = flags_save;
|
|
|
|
- }
|
|
|
|
- return rc;
|
|
|
|
|
|
+ return vfs_create(lower_dir_inode, lower_dentry, mode, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -197,8 +175,7 @@ ecryptfs_create_underlying_file(struct inode *lower_dir_inode,
|
|
*/
|
|
*/
|
|
static int
|
|
static int
|
|
ecryptfs_do_create(struct inode *directory_inode,
|
|
ecryptfs_do_create(struct inode *directory_inode,
|
|
- struct dentry *ecryptfs_dentry, int mode,
|
|
|
|
- struct nameidata *nd)
|
|
|
|
|
|
+ struct dentry *ecryptfs_dentry, int mode)
|
|
{
|
|
{
|
|
int rc;
|
|
int rc;
|
|
struct dentry *lower_dentry;
|
|
struct dentry *lower_dentry;
|
|
@@ -213,7 +190,7 @@ ecryptfs_do_create(struct inode *directory_inode,
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
rc = ecryptfs_create_underlying_file(lower_dir_dentry->d_inode,
|
|
rc = ecryptfs_create_underlying_file(lower_dir_dentry->d_inode,
|
|
- ecryptfs_dentry, mode, nd);
|
|
|
|
|
|
+ ecryptfs_dentry, mode);
|
|
if (rc) {
|
|
if (rc) {
|
|
printk(KERN_ERR "%s: Failure to create dentry in lower fs; "
|
|
printk(KERN_ERR "%s: Failure to create dentry in lower fs; "
|
|
"rc = [%d]\n", __func__, rc);
|
|
"rc = [%d]\n", __func__, rc);
|
|
@@ -294,7 +271,7 @@ ecryptfs_create(struct inode *directory_inode, struct dentry *ecryptfs_dentry,
|
|
int rc;
|
|
int rc;
|
|
|
|
|
|
/* ecryptfs_do_create() calls ecryptfs_interpose() */
|
|
/* ecryptfs_do_create() calls ecryptfs_interpose() */
|
|
- rc = ecryptfs_do_create(directory_inode, ecryptfs_dentry, mode, nd);
|
|
|
|
|
|
+ rc = ecryptfs_do_create(directory_inode, ecryptfs_dentry, mode);
|
|
if (unlikely(rc)) {
|
|
if (unlikely(rc)) {
|
|
ecryptfs_printk(KERN_WARNING, "Failed to create file in"
|
|
ecryptfs_printk(KERN_WARNING, "Failed to create file in"
|
|
"lower filesystem\n");
|
|
"lower filesystem\n");
|