]> granicus.if.org Git - spl/commit
Proposed fix for oops on SIGINT in splat atomic:64-bit test.
authorNed Bass <bass6@llnl.gov>
Thu, 15 Jul 2010 16:49:38 +0000 (09:49 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 15 Jul 2010 19:50:15 +0000 (12:50 -0700)
commit8f813bb168eb21cd5d64b930ee015dcf93575331
tree9f11a78fa2f527f64cef7a8e97147ade87823898
parentd0bd694ca93b7e43dc6aa87a2dd39d51ee3478ea
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