Trond Myklebust cfde64bd31 NFSv4: Fix races in the legacy idmapper upcall
commit 51fd2eb52c0ca8275a906eed81878ef50ae94eb0 upstream.

nfs_idmap_instantiate() will cause the process that is waiting in
request_key_with_auxdata() to wake up and exit. If there is a second
process waiting for the idmap->idmap_mutex, then it may wake up and
start a new call to request_key_with_auxdata(). If the call to
idmap_pipe_downcall() from the first process has not yet finished
calling nfs_idmap_complete_pipe_upcall_locked(), then we may end up
triggering the WARN_ON_ONCE() in nfs_idmap_prepare_pipe_upcall().

The fix is to ensure that we clear idmap->idmap_upcall_data before
calling nfs_idmap_instantiate().

Fixes: e9ab41b620e4 ("NFSv4: Clean up the legacy idmapper upcall")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-25 11:37:54 +02:00
..
2022-06-29 08:59:49 +02:00
2020-10-16 11:11:22 -07:00
2021-09-18 13:40:15 +02:00
2020-09-10 14:03:31 -07:00
2022-08-21 15:15:21 +02:00
2022-06-09 10:21:16 +02:00
2021-11-26 10:39:22 +01:00
2020-10-23 11:33:41 -07:00
2020-10-23 11:33:41 -07:00
2021-12-14 11:32:40 +01:00
2020-08-27 16:06:47 -04:00