diff options
Diffstat (limited to 'fs/namespace.c')
| -rw-r--r-- | fs/namespace.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/fs/namespace.c b/fs/namespace.c index 54059b142d6b..d18deb4c410b 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -468,7 +468,9 @@ static inline int may_write_real(struct file *file)  	/* File refers to upper, writable layer? */  	upperdentry = d_real(dentry, NULL, 0, D_REAL_UPPER); -	if (upperdentry && file_inode(file) == d_inode(upperdentry)) +	if (upperdentry && +	    (file_inode(file) == d_inode(upperdentry) || +	     file_inode(file) == d_inode(dentry)))  		return 0;  	/* Lower layer: can't write to real file, sorry... */ @@ -2823,7 +2825,8 @@ long do_mount(const char *dev_name, const char __user *dir_name,  			    SB_MANDLOCK |  			    SB_DIRSYNC |  			    SB_SILENT | -			    SB_POSIXACL); +			    SB_POSIXACL | +			    SB_I_VERSION);  	if (flags & MS_REMOUNT)  		retval = do_remount(&path, flags, sb_flags, mnt_flags, |