From 8f813bb168eb21cd5d64b930ee015dcf93575331 Mon Sep 17 00:00:00 2001 From: Ned Bass Date: Thu, 15 Jul 2010 09:49:38 -0700 Subject: [PATCH] Proposed fix for oops on SIGINT in splat atomic:64-bit test. The threads in the splat atomic:64-bit test share the data structure atomic_priv_t ap, which lives on the kernel stack of the splat user-space utility. If splat terminates before the threads, accesses to that memory location by the other threads become invalid. Splat synchronizes with the threads with the call: wait_event_interruptible(ap.ap_waitq, splat_atomic_test1_cond(&ap, i)); Apparently, the SIGINT wakes and terminates splat prematurely, so that GPFs or other bad things happen when the threads subsequently access ap. This commit prevents this by using the uninterruptible form: wait_event(ap.ap_waitq, splat_atomic_test1_cond(&ap, i)); --- module/splat/splat-atomic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/splat/splat-atomic.c b/module/splat/splat-atomic.c index 9cdaa69df9..fd86a9fa86 100644 --- a/module/splat/splat-atomic.c +++ b/module/splat/splat-atomic.c @@ -165,7 +165,7 @@ splat_atomic_test1(struct file *file, void *arg) schedule(); } - wait_event_interruptible(ap.ap_waitq, splat_atomic_test1_cond(&ap, i)); + wait_event(ap.ap_waitq, splat_atomic_test1_cond(&ap, i)); if (rc) { splat_vprint(file, SPLAT_ATOMIC_TEST1_NAME, "Only started "