|
@@ -1605,7 +1605,7 @@ int may_open(struct nameidata *nd, int acc_mode, int flag)
|
|
if (S_ISLNK(inode->i_mode))
|
|
if (S_ISLNK(inode->i_mode))
|
|
return -ELOOP;
|
|
return -ELOOP;
|
|
|
|
|
|
- if (S_ISDIR(inode->i_mode) && (flag & FMODE_WRITE))
|
|
|
|
|
|
+ if (S_ISDIR(inode->i_mode) && (acc_mode & MAY_WRITE))
|
|
return -EISDIR;
|
|
return -EISDIR;
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -1620,7 +1620,7 @@ int may_open(struct nameidata *nd, int acc_mode, int flag)
|
|
return -EACCES;
|
|
return -EACCES;
|
|
|
|
|
|
flag &= ~O_TRUNC;
|
|
flag &= ~O_TRUNC;
|
|
- } else if (IS_RDONLY(inode) && (flag & FMODE_WRITE))
|
|
|
|
|
|
+ } else if (IS_RDONLY(inode) && (acc_mode & MAY_WRITE))
|
|
return -EROFS;
|
|
return -EROFS;
|
|
|
|
|
|
error = vfs_permission(nd, acc_mode);
|
|
error = vfs_permission(nd, acc_mode);
|