]> www.infradead.org Git - users/dwmw2/linux.git/commit
NFSv4.0: Fix a use-after-free problem in the asynchronous open()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 8 Nov 2024 17:13:31 +0000 (12:13 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 9 Nov 2024 16:01:35 +0000 (11:01 -0500)
commit2fdb05dc0931250574f0cb0ebeb5ed8e20f4a889
tree9d16fa0c4294a128a9331e3a9fe50d318213053f
parentc968fd23c68e9929ab6cad4faffc8ea603e98e5d
NFSv4.0: Fix a use-after-free problem in the asynchronous open()

Yang Erkun reports that when two threads are opening files at the same
time, and are forced to abort before a reply is seen, then the call to
nfs_release_seqid() in nfs4_opendata_free() can result in a
use-after-free of the pointer to the defunct rpc task of the other
thread.
The fix is to ensure that if the RPC call is aborted before the call to
nfs_wait_on_sequence() is complete, then we must call nfs_release_seqid()
in nfs4_open_release() before the rpc_task is freed.

Reported-by: Yang Erkun <yangerkun@huawei.com>
Fixes: 24ac23ab88df ("NFSv4: Convert open() into an asynchronous RPC call")
Reviewed-by: Yang Erkun <yangerkun@huawei.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/nfs4proc.c