aboutsummaryrefslogtreecommitdiffstats
path: root/Kbuild
diff options
context:
space:
mode:
authorAndrew Elble <aweits@rit.edu>2015-11-05 20:42:43 -0500
committerJ. Bruce Fields <bfields@redhat.com>2015-11-10 09:29:45 -0500
commit7fc0564e3a8d16df096f48c9c6425ba84d945c6e (patch)
tree1470204738456cc407010bf070efc134e0490141 /Kbuild
parentnfsd: eliminate sending duplicate and repeated delegations (diff)
downloadlinux-dev-7fc0564e3a8d16df096f48c9c6425ba84d945c6e.tar.xz
linux-dev-7fc0564e3a8d16df096f48c9c6425ba84d945c6e.zip
nfsd: fix race with open / open upgrade stateids
We observed multiple open stateids on the server for files that seemingly should have been closed. nfsd4_process_open2() tests for the existence of a preexisting stateid. If one is not found, the locks are dropped and a new one is created. The problem is that init_open_stateid(), which is also responsible for hashing the newly initialized stateid, doesn't check to see if another open has raced in and created a matching stateid. This fix is to enable init_open_stateid() to return the matching stateid and have nfsd4_process_open2() swap to that stateid and switch to the open upgrade path. In testing this patch, coverage to the newly created path indicates that the race was indeed happening. Signed-off-by: Andrew Elble <aweits@rit.edu> Reviewed-by: Jeff Layton <jlayton@poochiereds.net> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'Kbuild')
0 files changed, 0 insertions, 0 deletions