diff options
Diffstat (limited to 'fs/open.c')
| -rw-r--r-- | fs/open.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/open.c b/fs/open.c index f3d96e7e7b1..e1f2cdb91a4 100644 --- a/fs/open.c +++ b/fs/open.c @@ -717,7 +717,7 @@ cleanup_all:  			 * here, so just reset the state.  			 */  			file_reset_write(f); -			mnt_drop_write(f->f_path.mnt); +			__mnt_drop_write(f->f_path.mnt);  		}  	}  cleanup_file: @@ -852,9 +852,10 @@ static inline int build_open_flags(int flags, umode_t mode, struct open_flags *o  	int lookup_flags = 0;  	int acc_mode; -	if (!(flags & O_CREAT)) -		mode = 0; -	op->mode = mode; +	if (flags & O_CREAT) +		op->mode = (mode & S_IALLUGO) | S_IFREG; +	else +		op->mode = 0;  	/* Must never be set by userspace */  	flags &= ~FMODE_NONOTIFY;  |