kib 26dcc60640 Fix two issues with the spin loops in the umtx(2) implementation.
- When looping, check for the pending suspension.  Otherwise, other
  usermode thread which races with the looping one, could try to
  prevent the process from stopping or exiting.

- Add missed checks for the faults from casuword*().  The code is
  structured in a way which makes the loops exit if the specified
  address is invalid, since both fuword() and casuword() return -1 on
  the fault.  But if the address is mapped readonly, the typical value
  read by fuword() is different from -1, while casuword() returns -1.
  Absent the checks for casuword() faults, this is interpreted as the
  race with other thread and causes non-interruptible spinning in the
  kernel.

Reported and tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2013-06-13 09:33:22 +00:00
..
2013-05-01 22:42:42 +00:00
2013-04-03 22:24:36 +00:00
2013-06-08 13:30:13 +00:00
2013-03-04 12:20:48 +00:00
2013-03-02 00:53:12 +00:00
2013-02-02 14:19:50 +00:00
2012-08-22 20:01:57 +00:00
2012-03-28 20:58:30 +00:00
2013-05-19 23:30:24 +00:00
2012-11-14 10:33:12 +00:00
2013-04-05 20:24:51 +00:00
2013-01-23 14:37:05 +00:00
2012-06-25 05:41:16 +00:00
2012-09-04 23:16:55 +00:00
2012-01-26 16:35:09 +00:00
2012-09-14 21:28:56 +00:00
2013-05-01 22:42:42 +00:00
2013-06-08 13:30:13 +00:00
2013-06-08 13:30:13 +00:00
2012-01-02 12:12:10 +00:00
2012-10-25 09:05:21 +00:00
2013-03-02 00:53:12 +00:00
MFC
2013-02-21 21:59:35 +00:00
2013-05-31 16:15:22 +00:00