diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-05-20 09:02:28 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-05-20 09:02:28 +0200 | 
| commit | 521c180874dae86f675d23c4eade4dba8b1f2cc8 (patch) | |
| tree | 7509303da3a9a1b40a26f6811f321c89cd31737b /fs/ecryptfs/main.c | |
| parent | f1a11e0576c7a73d759d05d776692b2b2d37172b (diff) | |
| parent | 64d1304a64477629cb16b75491a77bafe6f86963 (diff) | |
Merge branch 'core/urgent' into core/futexes
Merge reason: this branch was on an pre -rc1 base, merge it up to -rc6+
              to get the latest upstream fixes.
Conflicts:
	kernel/futex.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/ecryptfs/main.c')
| -rw-r--r-- | fs/ecryptfs/main.c | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index aed56c25539..9f0aa9883c2 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -190,14 +190,14 @@ int ecryptfs_interpose(struct dentry *lower_dentry, struct dentry *dentry,  		init_special_inode(inode, lower_inode->i_mode,  				   lower_inode->i_rdev);  	dentry->d_op = &ecryptfs_dops; -	if (flags & ECRYPTFS_INTERPOSE_FLAG_D_ADD) -		d_add(dentry, inode); -	else -		d_instantiate(dentry, inode);  	fsstack_copy_attr_all(inode, lower_inode, NULL);  	/* This size will be overwritten for real files w/ headers and  	 * other metadata */  	fsstack_copy_inode_size(inode, lower_inode); +	if (flags & ECRYPTFS_INTERPOSE_FLAG_D_ADD) +		d_add(dentry, inode); +	else +		d_instantiate(dentry, inode);  out:  	return rc;  } @@ -208,7 +208,7 @@ enum { ecryptfs_opt_sig, ecryptfs_opt_ecryptfs_sig,         ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata,         ecryptfs_opt_encrypted_view, ecryptfs_opt_fnek_sig,         ecryptfs_opt_fn_cipher, ecryptfs_opt_fn_cipher_key_bytes, -       ecryptfs_opt_err }; +       ecryptfs_opt_unlink_sigs, ecryptfs_opt_err };  static const match_table_t tokens = {  	{ecryptfs_opt_sig, "sig=%s"}, @@ -222,6 +222,7 @@ static const match_table_t tokens = {  	{ecryptfs_opt_fnek_sig, "ecryptfs_fnek_sig=%s"},  	{ecryptfs_opt_fn_cipher, "ecryptfs_fn_cipher=%s"},  	{ecryptfs_opt_fn_cipher_key_bytes, "ecryptfs_fn_key_bytes=%u"}, +	{ecryptfs_opt_unlink_sigs, "ecryptfs_unlink_sigs"},  	{ecryptfs_opt_err, NULL}  }; @@ -402,6 +403,9 @@ static int ecryptfs_parse_options(struct super_block *sb, char *options)  				fn_cipher_key_bytes;  			fn_cipher_key_bytes_set = 1;  			break; +		case ecryptfs_opt_unlink_sigs: +			mount_crypt_stat->flags |= ECRYPTFS_UNLINK_SIGS; +			break;  		case ecryptfs_opt_err:  		default:  			printk(KERN_WARNING @@ -610,9 +614,8 @@ static int ecryptfs_get_sb(struct file_system_type *fs_type, int flags,  	}  	goto out;  out_abort: -	dput(sb->s_root); -	up_write(&sb->s_umount); -	deactivate_super(sb); +	dput(sb->s_root); /* aka mnt->mnt_root, as set by get_sb_nodev() */ +	deactivate_locked_super(sb);  out:  	return rc;  }  | 
