From: Steve Dickson Date: Thu, 18 Sep 2014 13:13:17 +0000 (-0400) Subject: NFSv4: nfs4_state_manager() vs. nfs_server_remove_lists() X-Git-Tag: fixes-for-v3.18-merge-window~101^2~1 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=080af20cc945d110f9912d01cf6b66f94a375b8d;p=pandora-kernel.git NFSv4: nfs4_state_manager() vs. nfs_server_remove_lists() There is a race between nfs4_state_manager() and nfs_server_remove_lists() that happens during a nfsv3 mount. The v3 mount notices there is already a supper block so nfs_server_remove_lists() called which uses the nfs_client_lock spin lock to synchronize access to the client list. At the same time nfs4_state_manager() is running through the client list looking for work to do, using the same lock. When nfs4_state_manager() wins the race to the list, a v3 client pointer is found and not ignored properly which causes the panic. Moving some protocol checks before the state checking avoids the panic. CC: Stable Tree Signed-off-by: Steve Dickson Signed-off-by: Trond Myklebust --- Reading git-diff-tree failed