nfsd: memory corruption in nfsd4_lock()
authorVasily Averin <vvs@virtuozzo.com>
Fri, 27 Mar 2020 04:50:40 +0000 (07:50 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 May 2020 06:48:46 +0000 (08:48 +0200)
commitf1317a4a2b9b289cff6c993a9132d83c8136599f
treebbf4c80c1ad01ce67fbe6b47be440f80b892a39e
parent13b28f6b67783eddbca0f0db6d13e85e7fd9168a
nfsd: memory corruption in nfsd4_lock()

commit e1e8399eee72e9d5246d4d1bcacd793debe34dd3 upstream.

New struct nfsd4_blocked_lock allocated in find_or_allocate_block()
does not initialized nbl_list and nbl_lru.
If conflock allocation fails rollback can call list_del_init()
access uninitialized fields and corrupt memory.

v2: just initialize nbl_list and nbl_lru right after nbl allocation.

Fixes: 76d348fadff5 ("nfsd: have nfsd4_lock use blocking locks for v4.1+ lock")
Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfsd/nfs4state.c