2007-02-28 17:07:00

by Dmitri Monakhov

[permalink] [raw]
Subject: [PATCH] ecryptfs: check xattr operation support fix


- ecryptfs_write_inode_size_to_metadata() error code was ignored.
- i_op->setxattr() must be supported by lower fs because used below.

Signed-off-by: Monakhov Dmitriy <[email protected]>
---
fs/ecryptfs/inode.c | 6 +++---
fs/ecryptfs/mmap.c | 3 ++-
2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
index 27fd14a..9ccefad 100644
--- a/fs/ecryptfs/inode.c
+++ b/fs/ecryptfs/inode.c
@@ -168,9 +168,9 @@ static int grow_file(struct dentry *ecryptfs_dentry, struct file *lower_file,
goto out;
}
i_size_write(inode, 0);
- ecryptfs_write_inode_size_to_metadata(lower_file, lower_inode, inode,
- ecryptfs_dentry,
- ECRYPTFS_LOWER_I_MUTEX_NOT_HELD);
+ rc = ecryptfs_write_inode_size_to_metadata(lower_file, lower_inode,
+ inode, ecryptfs_dentry,
+ ECRYPTFS_LOWER_I_MUTEX_NOT_HELD);
ecryptfs_inode_to_private(inode)->crypt_stat.flags |= ECRYPTFS_NEW_FILE;
out:
return rc;
diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c
index 1e5d2ba..416985f 100644
--- a/fs/ecryptfs/mmap.c
+++ b/fs/ecryptfs/mmap.c
@@ -491,7 +491,8 @@ static int ecryptfs_write_inode_size_to_xattr(struct inode *lower_inode,
goto out;
}
lower_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry);
- if (!lower_dentry->d_inode->i_op->getxattr) {
+ if (!lower_dentry->d_inode->i_op->getxattr ||
+ !lower_dentry->d_inode->i_op->setxattr) {
printk(KERN_WARNING
"No support for setting xattr in lower filesystem\n");
rc = -ENOSYS;
--
1.5.0.1



2007-02-28 18:51:13

by Michael Halcrow

[permalink] [raw]
Subject: Re: [PATCH] ecryptfs: check xattr operation support fix

On Wed, Feb 28, 2007 at 08:05:16PM +0300, Dmitriy Monakhov wrote:
> - ecryptfs_write_inode_size_to_metadata() error code was ignored.
> - i_op->setxattr() must be supported by lower fs because used below.
>
> Signed-off-by: Monakhov Dmitriy <[email protected]>

Acked-by: Michael Halcrow <[email protected]>

> ---
> fs/ecryptfs/inode.c | 6 +++---
> fs/ecryptfs/mmap.c | 3 ++-
> 2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
> index 27fd14a..9ccefad 100644
> --- a/fs/ecryptfs/inode.c
> +++ b/fs/ecryptfs/inode.c
> @@ -168,9 +168,9 @@ static int grow_file(struct dentry *ecryptfs_dentry, struct file *lower_file,
> goto out;
> }
> i_size_write(inode, 0);
> - ecryptfs_write_inode_size_to_metadata(lower_file, lower_inode, inode,
> - ecryptfs_dentry,
> - ECRYPTFS_LOWER_I_MUTEX_NOT_HELD);
> + rc = ecryptfs_write_inode_size_to_metadata(lower_file, lower_inode,
> + inode, ecryptfs_dentry,
> + ECRYPTFS_LOWER_I_MUTEX_NOT_HELD);
> ecryptfs_inode_to_private(inode)->crypt_stat.flags |= ECRYPTFS_NEW_FILE;
> out:
> return rc;
> diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c
> index 1e5d2ba..416985f 100644
> --- a/fs/ecryptfs/mmap.c
> +++ b/fs/ecryptfs/mmap.c
> @@ -491,7 +491,8 @@ static int ecryptfs_write_inode_size_to_xattr(struct inode *lower_inode,
> goto out;
> }
> lower_dentry = ecryptfs_dentry_to_lower(ecryptfs_dentry);
> - if (!lower_dentry->d_inode->i_op->getxattr) {
> + if (!lower_dentry->d_inode->i_op->getxattr ||
> + !lower_dentry->d_inode->i_op->setxattr) {
> printk(KERN_WARNING
> "No support for setting xattr in lower filesystem\n");
> rc = -ENOSYS;