summaryrefslogtreecommitdiffstats
path: root/drivers/mfd/retu-mfd.c
diff options
context:
space:
mode:
authorStanislav Kinsbursky2013-06-26 08:15:14 +0200
committerTrond Myklebust2013-06-28 21:42:02 +0200
commitadb6fa7ffe9031857ec14b8aab75c9ab65556cbc (patch)
tree4d13bd7bf95d0c24478e95f429d6b4e6bbf5a6a5 /drivers/mfd/retu-mfd.c
parentSUNRPC: fix races on PipeFS MOUNT notifications (diff)
downloadkernel-qcow2-linux-adb6fa7ffe9031857ec14b8aab75c9ab65556cbc.tar.gz
kernel-qcow2-linux-adb6fa7ffe9031857ec14b8aab75c9ab65556cbc.tar.xz
kernel-qcow2-linux-adb6fa7ffe9031857ec14b8aab75c9ab65556cbc.zip
SUNRPC: fix races on PipeFS UMOUNT notifications
CPU#0 CPU#1 ----------------------------- ----------------------------- rpc_kill_sb sn->pipefs_sb = NULL rpc_release_client (UMOUNT_EVENT) rpc_free_auth rpc_pipefs_event rpc_get_client_for_event !atomic_inc_not_zero(cl_count) <skip the client> atomic_inc(cl_count) rpc_free_client rpc_clnt_remove_pipedir <skip client dir removing> To fix this, this patch does the following: 1) Calls RPC_PIPEFS_UMOUNT notification with sn->pipefs_sb_lock being held. 2) Removes SUNRPC client from the list AFTER pipes destroying. 3) Doesn't hold RPC client on notification: if client in the list, then it can't be destroyed while sn->pipefs_sb_lock in hold by notification caller. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Cc: stable@vger.kernel.org Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'drivers/mfd/retu-mfd.c')
0 files changed, 0 insertions, 0 deletions