From 81857a34d1d767abf40aea7e6db074d8cbf7b49f Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Tue, 30 Sep 2014 17:47:10 -0400 Subject: [PATCH] Fix bug in SPLAT taskq:front While running SPLAT on a kernel with CONFIG_DEBUG_ATOMIC_SLEEP enabled the taskq:front was flagged as a test which might sleep which in an unsafe context. Specifically, the splat_vprint() function which internally takes a mutex was being called under a spin lock. Moving the log function outside the spin lock cleanly solves this issue. Signed-off-by: Brian Behlendorf --- module/splat/splat-taskq.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/splat/splat-taskq.c b/module/splat/splat-taskq.c index 074af895b2..33e49b2f12 100644 --- a/module/splat/splat-taskq.c +++ b/module/splat/splat-taskq.c @@ -814,10 +814,11 @@ splat_taskq_test6_func(void *arg) spin_lock(&tq_arg->lock); tq_arg->order[tq_arg->flag] = tq_id->id; tq_arg->flag++; + spin_unlock(&tq_arg->lock); + splat_vprint(tq_arg->file, tq_arg->name, "Taskqid %d complete for taskq '%s'\n", tq_id->id, tq_arg->name); - spin_unlock(&tq_arg->lock); } static int