nfsd: memory corruption in nfsd4_lock()
authorVasily Averin <vvs@virtuozzo.com>
Fri, 27 Mar 2020 04:50:40 +0000 (07:50 +0300)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 13 Apr 2020 14:28:21 +0000 (10:28 -0400)
commite1e8399eee72e9d5246d4d1bcacd793debe34dd3
tree887478375ca2a2a4acfc756049bb8f29e207dd77
parent8f3d9f354286745c751374f5f1fcafee6b3f3136
nfsd: memory corruption in nfsd4_lock()

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>
fs/nfsd/nfs4state.c