From: Trond Myklebust Date: Wed, 19 Nov 2014 17:47:50 +0000 (-0500) Subject: nfsd: Fix slot wake up race in the nfsv4.1 callback code X-Git-Tag: v3.2.65~23 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d74ea723036699f012b695ebf32e4f3b2c7d1fcc;p=pandora-kernel.git nfsd: Fix slot wake up race in the nfsv4.1 callback code commit c6c15e1ed303ffc47e696ea1c9a9df1761c1f603 upstream. The currect code for nfsd41_cb_get_slot() and nfsd4_cb_done() has no locking in order to guarantee atomicity, and so allows for races of the form. Task 1 Task 2 ====== ====== if (test_and_set_bit(0) != 0) { clear_bit(0) rpc_wake_up_next(queue) rpc_sleep_on(queue) return false; } This patch breaks the race condition by adding a retest of the bit after the call to rpc_sleep_on(). Signed-off-by: Trond Myklebust Signed-off-by: J. Bruce Fields Signed-off-by: Ben Hutchings --- Reading git-diff-tree failed