Konstantin Belousov
6690381ef1
The dependency chain for priority-inheritance mutexes could be
...
subverted by userspace into cycle. Both umtx_propagate_priority() and
umtx_repropagate_priority() would then loop infinitely, owning the
spinlock.
Check for the cycle using standard Floyd' algorithm before doing the
pass in the affected functions. Add simple check for condition of
tricking the thread into a wait for itself, which could be easily
simulated by usermode without race.
Found by: Eric van Gyzen <eric@vangyzen.net>
In collaboration with: Eric van Gyzen <eric@vangyzen.net>
Tested by: pho
MFC after: 1 week
2015-01-31 12:27:40 +00:00
..
2014-10-09 05:33:25 +00:00
2015-01-23 21:07:08 +00:00
2015-01-08 21:46:28 +00:00
2014-09-04 21:31:25 +00:00
2014-11-22 18:15:02 +00:00
2013-09-09 18:11:59 +00:00
2014-09-04 21:31:25 +00:00
2015-01-22 11:12:42 +00:00
2015-01-23 21:08:24 +00:00
2013-06-30 19:08:06 +00:00
2014-04-05 16:54:47 +00:00
2014-11-26 14:10:00 +00:00
2015-01-05 20:44:44 +00:00
2015-01-22 11:12:42 +00:00
2015-01-19 17:36:52 +00:00
2015-01-03 17:21:19 +00:00
2014-06-28 03:56:17 +00:00
2015-01-08 19:11:14 +00:00
2015-01-21 18:32:53 +00:00
2014-05-29 01:42:22 +00:00
2015-01-07 01:01:39 +00:00
2014-10-23 18:23:50 +00:00
2014-04-02 17:34:17 +00:00
2014-11-16 01:18:41 +00:00
2015-01-18 15:13:11 +00:00
2014-12-15 12:01:42 +00:00
2014-10-28 12:00:39 +00:00
2015-01-18 15:13:11 +00:00
2013-06-15 10:08:34 +00:00
2014-10-30 21:21:53 +00:00
2015-01-28 21:08:09 +00:00
2013-06-15 06:45:17 +00:00
2013-08-17 17:02:43 +00:00
2014-07-02 22:13:07 +00:00
2014-06-28 03:56:17 +00:00
2014-12-03 22:14:13 +00:00
2015-01-22 11:12:42 +00:00
2015-01-10 06:48:35 +00:00
2013-11-25 07:38:45 +00:00
2014-10-28 04:59:33 +00:00
2014-09-22 05:07:22 +00:00
2014-09-30 23:16:26 +00:00
2014-10-21 07:31:21 +00:00
2014-05-02 07:57:40 +00:00
2014-12-13 21:00:10 +00:00
2014-06-28 03:56:17 +00:00
2014-06-28 03:56:17 +00:00
2013-08-29 16:41:40 +00:00
2014-06-28 03:56:17 +00:00
2014-09-28 14:05:18 +00:00
2014-06-28 03:56:17 +00:00
2014-12-14 08:43:13 +00:00
2015-01-18 15:13:11 +00:00
2015-01-18 15:13:11 +00:00
2014-11-26 14:10:00 +00:00
2013-08-15 20:19:17 +00:00
2014-11-26 14:10:00 +00:00
2014-12-13 21:00:10 +00:00
2014-12-13 21:00:10 +00:00
2014-02-22 01:41:45 +00:00
2013-08-22 07:39:53 +00:00
2015-01-07 01:01:39 +00:00
2015-01-18 15:13:11 +00:00
2015-01-22 11:12:42 +00:00
2014-12-13 21:00:10 +00:00
2015-01-22 11:12:42 +00:00
2014-11-01 22:36:40 +00:00
2014-12-28 19:24:01 +00:00
2015-01-20 03:54:30 +00:00
2014-11-03 11:29:08 +00:00
2015-01-22 11:12:42 +00:00
2015-01-11 20:48:29 +00:00
2015-01-26 04:04:57 +00:00
2015-01-31 12:27:40 +00:00
2014-02-13 22:24:36 +00:00
2014-10-20 17:04:03 +00:00
2014-10-20 17:04:03 +00:00
2014-03-14 06:29:43 +00:00
2013-12-15 23:19:42 +00:00
2014-08-23 17:31:56 +00:00
2014-10-18 19:36:11 +00:00
2013-02-05 20:08:33 +00:00
2013-10-27 21:39:16 +00:00
2015-01-05 20:50:44 +00:00
2013-08-07 06:21:20 +00:00
2014-06-26 13:57:44 +00:00
2014-12-12 09:37:18 +00:00
2014-02-10 19:59:46 +00:00
2014-10-21 07:31:21 +00:00
2015-01-20 03:54:30 +00:00
2014-12-21 05:07:11 +00:00
2014-10-16 18:04:43 +00:00
2014-10-21 07:31:21 +00:00
2014-12-13 21:00:10 +00:00
2013-03-04 16:07:55 +00:00
2014-07-11 13:58:48 +00:00
2012-12-05 08:04:20 +00:00
2014-12-30 02:39:47 +00:00
2014-06-28 03:56:17 +00:00
2014-10-28 19:17:44 +00:00
2014-02-10 19:59:46 +00:00
2013-05-12 04:05:01 +00:00
2015-01-23 07:30:57 +00:00
2014-11-26 14:10:00 +00:00
2014-07-16 22:18:19 +00:00
2014-07-28 07:20:22 +00:00
2014-08-11 15:06:07 +00:00
2015-01-26 16:26:28 +00:00
2015-01-22 11:12:42 +00:00
2014-06-28 03:56:17 +00:00
2014-12-08 16:18:05 +00:00
2015-01-04 19:55:44 +00:00
2014-11-01 17:05:15 +00:00
2015-01-12 08:58:07 +00:00
2013-11-26 08:46:27 +00:00
2014-10-31 17:43:21 +00:00
2013-08-30 07:37:45 +00:00
2014-04-16 21:39:43 +00:00
2014-10-20 20:21:40 +00:00
2015-01-05 23:07:22 +00:00
2014-11-28 09:32:07 +00:00
2015-01-21 16:32:54 +00:00
2014-09-22 16:20:47 +00:00
2014-12-15 12:01:42 +00:00
2014-11-12 09:57:15 +00:00
2015-01-23 21:08:24 +00:00
2015-01-23 21:07:08 +00:00
2015-01-23 21:08:24 +00:00
2014-10-26 19:42:44 +00:00
2014-10-26 19:42:44 +00:00
2014-10-26 19:42:44 +00:00
2014-10-15 12:38:26 +00:00
2014-10-09 02:30:38 +00:00
2014-07-26 19:27:34 +00:00
2014-11-30 12:52:33 +00:00
2014-11-30 13:24:21 +00:00
2015-01-09 12:08:51 +00:00
2015-01-14 23:44:00 +00:00
2014-10-26 19:42:44 +00:00
2014-10-26 19:42:44 +00:00
2014-09-22 16:20:47 +00:00
2014-12-22 15:39:24 +00:00
2014-12-20 22:12:04 +00:00
2014-11-13 18:01:51 +00:00
2014-12-18 10:01:12 +00:00
2014-10-28 15:28:20 +00:00
2014-10-26 19:42:44 +00:00
2014-12-08 16:42:34 +00:00
2015-01-04 10:34:02 +00:00
2013-08-27 01:31:12 +00:00
2014-12-25 14:44:04 +00:00
2014-11-06 12:19:39 +00:00
2014-03-16 10:55:57 +00:00
2014-12-30 21:40:45 +00:00
2014-10-21 19:02:26 +00:00
2014-11-02 13:10:31 +00:00
2014-12-09 10:00:47 +00:00
2014-11-13 18:01:51 +00:00
2015-01-25 19:56:45 +00:00
2015-01-23 21:07:08 +00:00
2014-12-21 13:32:07 +00:00
2014-11-23 12:01:52 +00:00