提交 d9bf5b0c 编写于 作者: C ChenXiaoSong 提交者: Zheng Zengkai

Revert "NFSv4: Handle the special Linux file open access mode"

stable inclusion
from stable-v5.10.111
commit c688705a3978dd637389684bc5244927aeb8a67d
category: bugfix
bugzilla: 186205, https://gitee.com/openeuler/kernel/issues/I5BZTX
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c688705a3978dd637389684bc5244927aeb8a67d

--------------------------------

[ Upstream commit ab0fc21b ]

This reverts commit 44942b4e.

After secondly opening a file with O_ACCMODE|O_DIRECT flags,
nfs4_valid_open_stateid() will dereference NULL nfs4_state when lseek().

Reproducer:
  1. mount -t nfs -o vers=4.2 $server_ip:/ /mnt/
  2. fd = open("/mnt/file", O_ACCMODE|O_DIRECT|O_CREAT)
  3. close(fd)
  4. fd = open("/mnt/file", O_ACCMODE|O_DIRECT)
  5. lseek(fd)
Reported-by: NLyu Tao <tao.lyu@epfl.ch>
Signed-off-by: NChenXiaoSong <chenxiaosong2@huawei.com>
Signed-off-by: NTrond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NChenXiaoSong <chenxiaosong2@huawei.com>
Reviewed-by: NZhang Xiaoxu <zhangxiaoxu5@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 c2bcad58
...@@ -1139,7 +1139,6 @@ int nfs_open(struct inode *inode, struct file *filp) ...@@ -1139,7 +1139,6 @@ int nfs_open(struct inode *inode, struct file *filp)
nfs_fscache_open_file(inode, filp); nfs_fscache_open_file(inode, filp);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(nfs_open);
/* /*
* This function is called whenever some part of NFS notices that * This function is called whenever some part of NFS notices that
......
...@@ -51,7 +51,7 @@ nfs4_file_open(struct inode *inode, struct file *filp) ...@@ -51,7 +51,7 @@ nfs4_file_open(struct inode *inode, struct file *filp)
return err; return err;
if ((openflags & O_ACCMODE) == 3) if ((openflags & O_ACCMODE) == 3)
return nfs_open(inode, filp); openflags--;
/* We can't create new files here */ /* We can't create new files here */
openflags &= ~(O_CREAT|O_EXCL); openflags &= ~(O_CREAT|O_EXCL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册