On 3/23/20 3:18 PM, Jeff Layton wrote: > On Mon, 2020-03-23 at 10:55 +0300, Vasily Averin wrote: >> New struct nfsd4_blocked_lock allocated in find_or_allocate_block() >> does not initialised nbl_list and nbl_lru. >> If conflock allocation fails rollback can call list_del_init() >> access uninitialized fields and corrupt memory. >> >> Fixes: 76d348fadff5 ("nfsd: have nfsd4_lock use blocking locks for v4.1+ lock") >> Signed-off-by: Vasily Averin <vvs@xxxxxxxxxxxxx> > > Good catch! Is there any reason not to just fix this by initializing the > list_heads in find_or_allocate_block? That seems like it'd be a simpler > fix. > Rollback in nfsd4_lock() is not optimal, I've tried to improve it too, However I agree such improvement is not a simplest fix and it anyway does not make whole rollback perfect. I think it's better to re-send small fix for the found problem, and prepare separate patches for rollback improvements, Thank you, Vasily Averin