diff options
Diffstat (limited to 'fs/nfs/dir.c')
| -rw-r--r-- | fs/nfs/dir.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 32e6c53520e..1b2d7eb9379 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2153,12 +2153,16 @@ static int nfs_open_permission_mask(int openflags)  {  	int mask = 0; -	if ((openflags & O_ACCMODE) != O_WRONLY) -		mask |= MAY_READ; -	if ((openflags & O_ACCMODE) != O_RDONLY) -		mask |= MAY_WRITE; -	if (openflags & __FMODE_EXEC) -		mask |= MAY_EXEC; +	if (openflags & __FMODE_EXEC) { +		/* ONLY check exec rights */ +		mask = MAY_EXEC; +	} else { +		if ((openflags & O_ACCMODE) != O_WRONLY) +			mask |= MAY_READ; +		if ((openflags & O_ACCMODE) != O_RDONLY) +			mask |= MAY_WRITE; +	} +  	return mask;  }  |