aboutsummaryrefslogtreecommitdiffstats
path: root/module/splat
diff options
context:
space:
mode:
authorNed Bass <[email protected]>2010-07-15 09:49:38 -0700
committerBrian Behlendorf <[email protected]>2010-07-15 12:50:15 -0700
commit8f813bb168eb21cd5d64b930ee015dcf93575331 (patch)
tree9f11a78fa2f527f64cef7a8e97147ade87823898 /module/splat
parentd0bd694ca93b7e43dc6aa87a2dd39d51ee3478ea (diff)
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));
Diffstat (limited to 'module/splat')
-rw-r--r--module/splat/splat-atomic.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/module/splat/splat-atomic.c b/module/splat/splat-atomic.c
index 9cdaa69df..fd86a9fa8 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 "